联调与上线

联调环境

开通时顽兔提供联调环境的 baseUrl 和一套联调凭据。联调环境对接支付宝沙箱, 不产生真实资金变动,可以随意下单、支付、退款。

联调与生产使用同一套代码,只有 baseUrl 和凭据不同:

Node.js
Python
const pay = createWantuPayClient({
  baseUrl: process.env.WANTU_PAY_BASE_URL!,     // 联调、生产各配一个
  merchantId: process.env.WANTU_MERCHANT_ID!,
  apiSecret: process.env.WANTU_API_SECRET!,
})

本地调试回调

回调地址需要公网可达。本地开发时用内网穿透工具,把生成的公网地址提供给顽兔 配置为回调地址。

收不到回调时的排查顺序:先调查单接口确认支付状态。状态是 paid 说明支付正常, 问题出在回调链路,再检查穿透工具和本地服务;状态不是 paid 说明支付本身没完成。

联调用例

至少走一遍以下用例再上线:

  1. 下单,扫码支付,收到 order.paid 回调,订单入账
  2. 同一回调重复送达(可以重启本地服务触发重试),确认不会重复入账
  3. 下单后不支付,等待超时,查单确认状态为 closed
  4. 退款:受理应答是 processing(退款需在商户后台审批),到商户后台批准后确认收到 refund.succeeded 回调
  5. 停掉本地服务下单支付,恢复后确认回调补达或查单兜底生效

上线检查

说明
环境切换baseUrl 换生产 https://pay-api.wantutech.com、凭据换生产;回调地址换生产 HTTPS 地址
密钥保管api_secret 在服务端配置或密钥管理服务中,不在代码仓库
幂等约束入账表对 out_trade_no 有数据库层面的唯一约束
金额核对入账前核对回调金额与订单金额
真实验证生产支付 0.01 元各验证一次:下单、支付、回调入账、退款