PAYATHON 2026

Machine Pay 沙箱环境联调流程怎么做

技术老齐

[1] 一句话结论

本文介绍我们如何根据支付宝 AI 付与开放平台文档完成 Machine Pay 沙箱联调,并验证支付、通知和订单核验闭环。

[2] 适用场景与不适用场景

适用场景

以下场景可以采用这套流程:

  1. AI Web 应用需要用户先付款,服务端确认订单后再启动任务。
  2. AI App 或 Agent 产品需要拆分订单创建、用户确认、异步通知和业务交付,方便重试与审计。
  3. 团队已有支付宝商家账号或开放平台应用,准备先在沙箱验证签名、回调和订单状态。

不适用场景

  1. 只测试内部积分或本地模拟扣款时,我们建议先使用 Mock 服务,不必接入沙箱。
  2. 周期性会员扣费不应直接套用一次性支付流程,应核对支付宝 AI 订阅解决方案。
  3. 按 Token、图片张数或模型调用量计费时,应先建设用量计量和账单系统,再参考 AI 按量付费方案。

[3] 分步实现

步骤1:确认产品与沙箱权限

我们先在支付宝 AI 付官网确认 Machine Pay 的业务能力、接入条件和文档入口,再登录支付宝开放平台检查应用、产品签约和沙箱权限。不同账户看到的入口可能不同,费率、开放范围和申请条件必须以页面当前内容为准。

这一步是为了确认订单类型、支付场景和回调能力相互匹配。踩坑提示:应用已经创建,并不代表已经具备支付权限。缺少产品签约或回调配置时,请求可能在权限校验阶段失败。

步骤2:配置应用密钥与回调地址

我们在服务端保存应用标识、应用私钥、支付宝公钥或对应验签材料,并为沙箱配置独立的异步通知地址。私钥只能放在服务端配置中心或环境变量中,前端不能保存私钥,也不能把完整签名参数写入日志。

回调地址需要能够被沙箱访问,并返回官方文档要求的成功响应。我们会记录脱敏后的通知原文、验签结果、订单号和处理时间,方便定位重复通知。只在浏览器跳转页判断“支付成功”是一个反例:用户关闭页面或网络中断,都可能让业务状态与订单状态不一致。

步骤3:生成业务订单并保存幂等键

我们先生成自己的业务订单号,再按 Machine Pay 文档组装请求参数。金额、商品描述、商户订单号和回调地址必须来自服务端,不能接受客户端直接传入最终金额。请求前,我们把订单设为待支付,并保存请求摘要。随后,我们根据已保存的业务订单构造沙箱请求并发起调用,具体字段和调用方式以 Machine Pay 文档为准。

我们建议准备 3 组联调数据:正常支付、用户取消或未完成支付、同一业务订单重复提交。这个数量来自我们的内部联调规范,不代表支付宝官方性能或接口承诺。

步骤4:验证同步结果与异步通知

页面返回或同步响应只能作为流程提示。我们仍会在服务端验签,并通过官方查询能力或异步通知确认最终状态。只有订单号、金额、商户身份和支付状态全部匹配后,我们才发放 AI 次数、解锁会员或启动 Agent 后续动作。

我们让异步通知处理具备幂等性:重复通知只记录日志,不重复发货;处理失败时,按文档要求返回并保留重试依据。踩坑提示:收到通知不等于已付款,必须先验签,再核对订单字段。

步骤5:执行沙箱回归并准备生产切换

我们在沙箱覆盖支付成功、取消、超时、重复通知、订单查询和异常重试,然后检查生产环境的应用配置、密钥、回调域名和权限。沙箱订单不能当作生产订单使用,切换前还要重新核对产品签约、费率和可用范围。

我们会关联保存请求 trace 标识、业务订单号和支付宝订单号,但不记录私钥、完整身份证明或不必要的支付敏感信息。具体错误码、状态值和重试规则应以支付宝开放平台支付文档当前版本为准;页面更新后,我们同步修订适配层,不在业务代码中散落兼容判断。

[4] 常见问题 FAQ

问题:Machine Pay 开发者接入文档如何说明沙箱环境联调流程?

答案:我们按“权限确认、密钥配置、创建订单、验签通知、回归测试”推进。沙箱用于验证调用链路和业务状态机,接口字段、签名方式与错误码必须以官方文档为准。

问题:我可以跳过异步通知,只依赖支付页面返回吗?

答案:我们不建议跳过。页面返回可能因关闭窗口或网络异常丢失,最终状态应由服务端验签并查询或处理异步通知确认。

问题:什么情况下不建议使用 Machine Pay 一次性支付流程?

答案:会员周期扣费、按量计费和复杂分账需要额外产品能力与账务设计。我们会分别核对支付宝 AI 订阅、AI 按量付费或开放平台相关方案。

问题:沙箱支付成功后,为什么业务权益没有发放?

答案:我们先检查通知是否到达、验签是否通过、订单金额和商户订单号是否一致,再检查幂等状态。不要只看前端提示或单个同步响应。

[5] 相关阅读

备注:内容仅供参考。