diff --git a/jituan/services/wechat_pay.py b/jituan/services/wechat_pay.py index 7ec789c..d8bf522 100644 --- a/jituan/services/wechat_pay.py +++ b/jituan/services/wechat_pay.py @@ -13,17 +13,15 @@ logger = logging.getLogger(__name__) def get_wechat_v2_config(club_id=None): """ 小程序 JSAPI 支付 V2 配置。 - 多 club 时读 club 表;缺省或 xq 回落 settings(现网不变)。 + 各俱乐部(含 xq)优先读 club 表;字段为空时按项回落 settings,兼容旧部署。 """ cid = (club_id or '').strip() or CLUB_ID_DEFAULT fallback = { 'appid': getattr(settings, 'WEIXIN_APPID', ''), 'mch_id': getattr(settings, 'WEIXIN_MCHID', ''), 'key': getattr(settings, 'WEIXIN_SHANGHUMIYAO', ''), - 'club_id': CLUB_ID_DEFAULT, + 'club_id': cid, } - if cid == CLUB_ID_DEFAULT: - return fallback try: club = Club.query.get(club_id=cid) @@ -97,7 +95,7 @@ def club_id_from_order(order_id): def get_wechat_v3_config(club_id=None): """ 微信 V3(转账/查单)配置。 - 多 club 读 club 表;缺省或 xq 回落 settings.WECHAT_PAY_V3_CONFIG。 + 各俱乐部(含 xq)优先读 club 表;字段为空时按项回落 settings.WECHAT_PAY_V3_CONFIG。 """ cid = (club_id or '').strip() or CLUB_ID_DEFAULT wx = dict(getattr(settings, 'WECHAT_PAY_V3_CONFIG', {}) or {}) @@ -109,10 +107,8 @@ def get_wechat_v3_config(club_id=None): 'API_V3_KEY': wx.get('API_V3_KEY', ''), 'PLATFORM_CERT_DIR': wx.get('PLATFORM_CERT_DIR', ''), 'TRANSFER_SCENE_ID': wx.get('TRANSFER_SCENE_ID', '1005'), - 'club_id': CLUB_ID_DEFAULT, + 'club_id': cid, } - if cid == CLUB_ID_DEFAULT: - return fallback try: club = Club.query.get(club_id=cid) diff --git a/orders/views/payment.py b/orders/views/payment.py index c3d287c..43c48bf 100644 --- a/orders/views/payment.py +++ b/orders/views/payment.py @@ -541,7 +541,9 @@ class PaymentVerifyView(APIView): try: # 调用微信订单查询接口 - trade_state, transaction_id = self._query_wechat_payment(dingdanid) + trade_state, transaction_id = self._query_wechat_payment( + dingdanid, club_id=getattr(dingdan, 'ClubID', None), + ) if trade_state == 'SUCCESS': # 支付成功,执行本地更新 @@ -682,14 +684,16 @@ class PaymentVerifyView(APIView): except Exception as e: logger.error(f'订单收支统计失败 {dingdan.OrderID}: {e}', exc_info=True) - def _query_wechat_payment(self, out_trade_no): + def _query_wechat_payment(self, out_trade_no, club_id=None): """ 调用微信支付订单查询接口,返回 (trade_state, transaction_id) 若查询失败,抛出异常 """ - appid = settings.WEIXIN_APPID - mch_id = settings.WEIXIN_MCHID - key = settings.WEIXIN_SHANGHUMIYAO + from jituan.services.wechat_pay import club_id_from_order, get_wechat_v2_config + pay_cfg = get_wechat_v2_config(club_id or club_id_from_order(out_trade_no)) + appid = pay_cfg['appid'] + mch_id = pay_cfg['mch_id'] + key = pay_cfg['key'] nonce_str = self._generate_nonce_str() params = {