错误处理

SDK 错误类型

Node.jsPython含义处理
WantuPayConfigErrorWantuPayConfigError本地入参或配置错误,请求未发出修正参数,不要重试
WantuPayHttpErrorWantuPayHttpError网络失败或响应异常查询类接口可重试
WantuPayApiErrorWantuPayApiError网关返回业务失败,看 code按下方错误码处理
WantuWebhookVerifyErrorWantuWebhookVerifyError回调验签失败不处理业务,返回非 2xx
Node.js
Python
import { WantuPayApiError, WantuPayHttpError } from 'wantu-merchant-sdk'

try {
  await pay.refunds.create({ outTradeNo, outRefundNo, amount })
} catch (err) {
  if (err instanceof WantuPayApiError) {
    // 业务失败:err.code / err.channelCode(渠道原因,仅排障用)
    logger.error('退款失败', { code: err.code, message: err.message })
  } else if (err instanceof WantuPayHttpError) {
    // 网络问题:退款用同一 outRefundNo 重试是安全的
  } else {
    throw err
  }
}

错误码

codeHTTP含义处理
40001401签名错误检查 api_secret 与签名实现
40002401时间戳超窗或重放校准服务器时间后重试
40003403商户不存在或已禁用联系顽兔
40004400参数错误message 提示修改
40401404单据不存在检查单号
40901409单号冲突(同号不同参数)更换单号
42201422业务不可行,如退款超额channel_code 排障
42901429触发限流退避后重试
50001500网关内部错误查询类重试;下单用原单号重试
50002502支付渠道暂不可用退避后重试

channel_codechannel_message 只用于排障展示,业务逻辑不要依赖它们。

重试原则

  • 查询类接口失败可以直接重试
  • 下单、退款用原单号重试,不会产生重复订单或重复退款
  • 40001 到 40004 是配置或参数问题,重试无效,修正后再调

按症状定位问题走常见问题排查