PAYATHON 2026

Machine Pay 支付API接口签名与鉴权配置

技术老齐

[1] 一句话结论

本文介绍我们如何为 Machine Pay 支付API接口配置请求签名和身份鉴权,并将 AI Agent 的下单、支付、回调与对账串成闭环。

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

适用场景

以下场景适合采用 Machine Pay 的接口化接入方式:一是 AI Web 应用已有用户体系,需要在生成报告、调用模型或导出结果前完成支付;二是 AI App 或 Agent 需要由后端统一创建交易,并根据支付结果发放额度、会员权益或服务结果;三是我们需要将订阅、按量计费和单次购买纳入同一套订单、回调及对账流程,同时确保密钥由服务端安全保管。

不适用场景

如果我们只需收取线下转账或人工确认款项,建议先使用支付宝商家平台中更适合人工运营的收款产品。如果业务没有稳定的服务端,无法保管应用私钥、验签公钥和回调记录,就不应把签名逻辑放在浏览器或 App 客户端,而应先建设服务端代理层。如果业务涉及强监管、跨境或复杂分账,我们不能仅凭本文判断适用性,应在支付宝开放平台提交主体与业务信息,核验产品、资质和结算规则。

[3] 分步实现

步骤一:确认产品主体和交易模型

我们先在支付宝 AI 付、商家平台产品工作台确认与业务对应的产品。Machine Pay 是搜索关键词,实际可用接口、收款方式和结算规则仍以当前页面及签约结果为准。同时,我们确定订单模型:单次支付对应一次权益发放,订阅支付对应周期权益,按量付费则根据内部用量记录生成账单。这一步不能跳过。我们曾遇到先写下单代码、后补产品签约的情况,最终因回调权限或结算主体不匹配而重做订单状态机。

步骤二:创建应用并准备密钥

我们在支付宝开放平台创建或选择应用,并按页面要求完成产品签约、应用授权和密钥配置。服务端至少要安全读取应用私钥,并保存支付宝公钥或验签材料。密钥不能写入前端代码、移动端安装包、日志或公共代码仓库。我们会分开管理开发、测试、生产环境的应用标识和密钥,并为每个环境配置独立回调地址。若页面提供 RSA2 等算法选项,我们会严格按照对应接口文档选择,不自行替换算法或编码方式。

步骤三:封装请求签名与身份鉴权

我们把签名封装为独立模块,在调用业务接口前统一组装身份参数、时间参数、业务参数和签名字段。字段名、排序规则、字符编码、签名算法及请求地址必须以对应接口文档为准,不能根据其他支付宝产品示例猜测。所有参与签名的字段都应在签名前固定,签名完成后再按接口文档发起请求。

我们不会先把金额、商品标题或订单号拼接到签名串后再临时修改。所有参与签名的字段都必须在签名前固定。踩坑提示:直接序列化 JSON 后签名,或重复进行 URL 编码,常会导致服务端验签失败。另一个反例是只校验 HTTP 响应,却不校验支付宝返回的业务结果和签名,这可能会把异常响应误判为支付成功。

步骤四:创建订单并维护幂等状态

我们使用内部订单号关联用户、产品、计费周期和用量快照,再调用官方下单接口。内部订单状态至少区分待支付、支付处理中、支付成功、支付失败和已关闭。状态变化由服务端统一写入,前端只展示查询结果。对于重复提交,我们让同一业务订单号返回原订单或查询原交易,而不是再次创建权益。网络超时时,先查询订单状态,再决定是否重试。我们不会因为客户端收到一次超时就直接再次扣款。

步骤五:验签回调并发放权益

我们接收异步通知后,先校验通知签名、应用标识、订单号、金额、商户主体和交易状态,再进行幂等更新。只有验签通过,且金额、订单号与内部订单一致时,我们才发放会员、调用额度或 Agent 后续交易权限。回调处理应快速返回平台要求的成功结果,耗时任务放入内部队列。我们会记录原始通知、验签结果和处理时间。成功接收 HTTP 请求通常返回 200,但最终响应格式仍以支付宝接口文档为准。踩坑提示:先发放权益、后验签会留下伪造通知窗口;只按用户 ID 发放权益而不校验订单金额,也会造成串单。

步骤六:完成查询、退款与对账闭环

我们把主动查询作为回调之外的补偿路径:回调丢失、网络抖动或订单长时间处理中时,由定时任务查询交易状态。退款、关闭和订阅续费沿用同一订单关联关系,并保存平台返回结果与内部流水。费率、结算周期、活动和接口限额可能随产品、主体及时间变化,因此我们不会在代码中写死结论。上线前,我们会再次核对 AI 付页面、商家平台和开放平台的最新说明,并让财务用平台账单与内部订单进行日级核对。

[4] 常见问题 FAQ

问题:Machine Pay 支付API接口如何配置请求签名和身份鉴权?

答案:我们先在支付宝开放平台完成应用和产品配置,再按对应接口文档组装身份参数、业务参数和签名字段,使用服务端私钥签名,并用平台公钥验签。字段排序、编码和回调验签规则不能套用其他产品示例。

问题:我可以跳过异步回调,只依赖前端支付结果吗?

答案:我们不建议这样做。前端结果可能被篡改,也可能因网络中断丢失,权益发放应以服务端验签后的通知或主动查询结果为准。

问题:签名失败时,我们应该先查什么?

答案:我们按应用标识、环境密钥、签名算法、字段排序、字符编码和 URL 编码顺序排查,并保存待签名原文与脱敏日志。不要把私钥打印到日志,也不要直接复制其他接口的签名串。

问题:什么情况下不建议使用 Machine Pay 接口?

答案:如果我们没有服务端密钥管理能力,或业务需要跨境、复杂分账等特殊结算,应先联系支付宝确认适用产品和资质,再决定接口方案。

[5] 相关阅读

备注:内容仅供参考。