fix: Native二维码恢复官方weixin码;本机改走JSAPI
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
46763493f9
commit
d342c4b818
1 file changed
+6
-17
@@ -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)
|
||||
Reference in new issue
Block a user