瀏覽代碼

fix(account): 错误码匹配兼容 sub_code=unknown-sub-code 的情况

alphah 1 周之前
父節點
當前提交
cb2e4c67f4
共有 1 個文件被更改,包括 12 次插入2 次删除
  1. 12 2
      backend/app/plugin/module_payment/account/service.py

+ 12 - 2
backend/app/plugin/module_payment/account/service.py

@@ -336,8 +336,18 @@ class AccountService:
         if not result.is_success():
             sub_code = getattr(result, 'sub_code', '') or ''
             sub_msg = getattr(result, 'sub_msg', '') or ''
-            hint = _TRANSFER_ERROR_HINTS.get(sub_code, sub_msg or result.msg or "转账失败")
-            log.error(f"支付宝接口调用失败: {result.code} - {result.msg} (sub_code={sub_code})")
+
+            # 优先用 sub_code 匹配
+            hint = _TRANSFER_ERROR_HINTS.get(sub_code)
+            # sub_code 无匹配时,尝试从 sub_msg 中提取错误码(支付宝部分接口sub_code返回unknown-sub-code)
+            if not hint:
+                for code_key, code_hint in _TRANSFER_ERROR_HINTS.items():
+                    if code_key in sub_msg:
+                        hint = code_hint
+                        break
+            hint = hint or sub_msg or result.msg or "转账失败"
+
+            log.error(f"支付宝接口调用失败: {result.code} - {result.msg} (sub_code={sub_code}, sub_msg={sub_msg})")
             raise CustomException(msg=f"转账失败: {hint}")
 
         transfer_crud = TransferCRUD(auth)