From 65a40b5f09b40fadc46d79aa404d0a7d2dd4358a Mon Sep 17 00:00:00 2001 From: XingQue Date: Fri, 10 Jul 2026 22:17:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=B4=E6=97=B6=E5=86=99=E6=AD=BB?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1V3=E5=95=86=E6=88=B7=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E5=BA=8F=E5=88=97=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 覆盖 club 表与 settings 中的 cert_serial_no,统一使用 apiclient_key 对应序列号。 Co-authored-by: Cursor --- jituan/services/wechat_pay.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/jituan/services/wechat_pay.py b/jituan/services/wechat_pay.py index b7c9780..20b1e13 100644 --- a/jituan/services/wechat_pay.py +++ b/jituan/services/wechat_pay.py @@ -10,6 +10,10 @@ from jituan.services.club_resolver import get_club_miniapp_appid logger = logging.getLogger(__name__) +# 临时写死:微信商户 API 证书序列号(与 apiclient_key.pem 对应) +# 后台 club 表 / settings 配置正确后可删除此覆盖 +WX_V3_CERT_SERIAL_NO_OVERRIDE = '481784CF56E872D9D8122BAC64E6BC7390803582' + def _xml_text(root, tag, default=''): node = root.find(tag) @@ -200,6 +204,11 @@ def club_id_from_order(order_id): return CLUB_ID_DEFAULT +def _apply_v3_cert_serial_override(cfg): + cfg['CERT_SERIAL_NO'] = WX_V3_CERT_SERIAL_NO_OVERRIDE + return cfg + + def get_wechat_v3_config(club_id=None): """ 微信 V3(转账/查单)配置。 @@ -222,10 +231,10 @@ def get_wechat_v3_config(club_id=None): club = Club.query.get(club_id=cid) except Club.DoesNotExist: logger.warning('club %s 不存在,回落全局 V3 支付配置', cid) - return fallback + return _apply_v3_cert_serial_override(fallback) cfg_json = club.config_json or {} - return { + return _apply_v3_cert_serial_override({ 'APPID': get_club_miniapp_appid(club) or ( fallback['APPID'] if cid == CLUB_ID_DEFAULT else '' ), @@ -256,7 +265,7 @@ def get_wechat_v3_config(club_id=None): or fallback['TRANSFER_SCENE_ID'] ), 'club_id': cid, - } + }) def club_id_for_tixian_yonghuid(yonghuid):