知玩指南
白蓝主题五 · 清爽阅读
首页  > 驱动工具

测试支付流程:手把手教你跑通每一环

为啥要测支付流程

你辛辛苦苦开发了个工具,用户点“购买”却卡在支付那一步,钱没到账,订单还乱了套。别等上线才抓瞎,提前把支付流程跑通才是正经事。尤其像我们做驱动工具的,很多功能靠内购解锁,支付要是出问题,用户直接卸载走人。

模拟环境怎么搭

别一上来就用真钱测试。大多数支付平台都提供沙箱环境,比如支付宝的 Sandbox、微信支付的沙箱接口。注册个测试账号,生成一笔虚拟订单,就能走完整流程,还不花一分钱。

以常见的 H5 支付为例,前端调起支付时,URL 指向的不是正式网关,而是测试地址:

<form action="https://openapi-sandbox.dl.aliyun.com/gateway.do" method="post">
  <input type="hidden" name="app_id" value="2021000000000000" />
  <input type="hidden" name="method" value="alipay.trade.page.pay" />
  <!-- 其他参数 -->
  <button type="submit">测试支付</button>
</form>

关键节点别漏查

支付不是点一下就完事。从下单、跳转支付页、输入密码、返回商户页面,再到服务器收到异步通知,每一步都得盯住。

比如用户点了确认支付,页面跳转后卡住了——是不是 HTTPS 没配好?回调地址写错了?又或者,用户明明付款成功,系统却没解锁功能,大概率是异步通知(notify_url)没处理好。这时候就得看服务端日志,确认有没有收到 POST 请求,签名验签过没过。

常见坑点提醒

时间戳不对也能导致失败。沙箱环境对请求时间敏感,机器本地时间如果和标准时间差太多,直接被拒。建议开启自动同步时间,或者用 NTP 校准。

还有就是金额单位。有些接口要传“分”,你传了“元”,10 块变成 1000 块,用户当场报警。调试时打个 log,把实际发送的 total_amount 打出来看看。

真机测试不能省

模拟器上一切正常,真机一跑却唤不起支付 App。尤其是安卓,不同厂商对 Intent 调起限制不一样,华为、小米都有自己的坑。最好找几台主流机型实测一遍,确保拉得起支付宝或微信。

ios 更麻烦点,App Store 的审核机制对内购有严格要求。测试阶段用 Sandbox 账号登录,别用自己的主账号,不然容易被封。

自动化脚本帮你盯

每次改代码都手动测一遍支付,太费劲。可以用 Puppeteer 或 Playwright 写个自动化流程,模拟点击下单、监听跳转、验证结果。虽然不能真付钱,但能检查流程是否中断。

const page = await browser.newPage();
await page.goto('https://dev.yourtool.com/buy');
await page.click('#pay-button');
await page.waitForNavigation();
expect(page.url()).toContain('alipay-sandbox');

配合 CI 工具,每次提交代码自动跑一遍,有问题立刻提醒,省心不少。