fix: Native二维码恢复官方weixin码;本机改走JSAPI

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQueandCursor committed 2026-08-08 20:53:58 +08:00
1 parent 46763493f9
commit d342c4b818
1 file changed
+6 -17
+6 -17
View File
@@ -25,31 +25,20 @@ logger = logging.getLogger(__name__)
CACHE_KEY_PREFIX = 'wx_native_code_'
CACHE_TTL_SECONDS = 60 * 30
# 展示用二维码用 HTTPS(相册可识别);复制/点支付仍用官方 weixin:// code_url
BRIDGE_URL_BASE = 'https://www.abas.asia/hqhd/dingdan/wx-native-pay/'
def _cache_key(dingdanid: str) -> str:
return f'{CACHE_KEY_PREFIX}{dingdanid}'
def build_native_bridge_url(dingdanid: str) -> str:
from urllib.parse import quote
return f'{BRIDGE_URL_BASE}?out_trade_no={quote(dingdanid, safe="")}'
def _native_pay_response(dingdanid: str, code_url: str) -> dict:
"""双轨:
- qr_image:HTTPS 中转页(绕开「相册不支持识别付款码」)
- qr_code:官方 weixin://(复制链接 / 中转页「立即支付」按钮)
微信规定:扫一扫从相册识别 weixin://wxpay 付款码会被安全拦截,无商户可关。
def _native_pay_response(code_url: str) -> dict:
"""二维码直接编码官方 weixin://wxpay/bizpayurl(供另一台手机扫,直接出密码)。
本机相册识别付款码会被微信官方拦截,无法伪装;本机付款走小程序 JSAPI。
"""
from jituan.services.alipay_pay import qr_link_to_base64
bridge = build_native_bridge_url(dingdanid)
return {
'qr_code': code_url,
'qr_image': qr_link_to_base64(bridge),
'bridge_url': bridge,
'qr_image': qr_link_to_base64(code_url),
'pay_method': PAY_METHOD_WECHAT_NATIVE,
}
@@ -84,7 +73,7 @@ def generate_wechat_native_pay_params(
'[WX_NATIVE] reuse code_url dingdan=%s club=%s scene=%s',
dingdanid, club_id, scene,
)
return _native_pay_response(dingdanid, cached_url)
return _native_pay_response(cached_url)
pay_cfg = get_wechat_v2_config(club_id)
log_wechat_v2_pay_diag(
@@ -148,4 +137,4 @@ def generate_wechat_native_pay_params(
'[WX_NATIVE] unifiedorder ok dingdan=%s club=%s mch=%s scene=%s',
dingdanid, pay_cfg.get('club_id'), mch_id, scene,
)
return _native_pay_response(dingdanid, code_url)
return _native_pay_response(code_url)