fix: 小程序支付 AppID 与登录一致,登录覆盖过期 openid 绑定

- JSAPI 支付优先 club.wx_appid(与 jscode2session 一致,不再优先 pay_app_id)
- 登录时同一用户+俱乐部只保留最新 openid,清除旧绑定
- 支付仅读 user_wx_openid,彻底禁用 legacy OpenID/UserName 回落

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-10 20:52:56 +08:00
parent f601541eb0
commit 5d3e4e32a2
3 changed files with 84 additions and 36 deletions

View File

@@ -51,7 +51,16 @@ def get_wechat_v2_config(club_id=None):
cfg_json = club.config_json or {}
mch_key, key_source = _resolve_v2_mch_key(cfg_json, fallback['key'])
appid = club.pay_app_id or club.wx_appid or fallback['appid']
mini_appid = (club.wx_appid or '').strip()
pay_appid = (club.pay_app_id or '').strip()
if mini_appid and pay_appid and mini_appid != pay_appid:
logger.warning(
'[WX_V2_CONFIG] club=%s wx_appid(%s) 与 pay_app_id(%s) 不一致;'
'小程序 JSAPI 支付以 wx_appid 为准openid 与登录 AppID 绑定)',
cid, mini_appid, pay_appid,
)
# openid 由 jscode2session(club.wx_appid) 换取,支付 AppID 须与登录一致
appid = mini_appid or pay_appid or fallback['appid']
mch_id = club.mch_id or fallback['mch_id']
if mch_id and key_source == 'settings.WEIXIN_SHANGHUMIYAO':
@@ -204,7 +213,11 @@ def get_wechat_v3_config(club_id=None):
cfg_json = club.config_json or {}
return {
'APPID': club.pay_app_id or club.wx_appid or fallback['APPID'],
'APPID': (
(club.wx_appid or '').strip()
or (club.pay_app_id or '').strip()
or fallback['APPID']
),
'MCHID': club.mch_id or fallback['MCHID'],
'PRIVATE_KEY_PATH': (
club.private_key_path