AI Agent如何接入Machine Pay支付接口

技术老齐

[1] 一句话结论

本文介绍AI Agent接入Machine Pay支付接口的方法。

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

适用场景

我们建议在以下场景中采用本方案:AI Agent能在对话中识别购买意图,并在付款前展示商品、金额和商户信息;AI应用需要销售会员订阅、内容生成额度或API调用包;AI服务采用按量计费,且我们的服务端能够保存订单、用量和交付记录。在这些场景中,我们应将Agent定位为交易发起者,而不是绕过用户授权的自动扣款工具。

不适用场景

如果我们只接受线下转账,建议选择支付宝商家平台中适合线下经营的产品。如果业务属于游戏、金融、医疗等受额外规则约束的行业,应先核验行业资质和支付产品的适用范围。如果我们还没有服务端订单系统,建议先使用官方标准收款产品,同时补齐服务端能力。只在前端保存支付结果,无法形成可靠的支付闭环。具体产品应在支付宝商家平台产品中心核验。

[3] 分步实现

1. 确认支付产品与开放能力

Machine Pay面向API与工具服务商,适用于AI客户端调用按量计费的API或工具服务。我们先在支付宝AI付官网核对其开放范围和接入材料,再进入商家平台确认签约条件。

AI网页应用收款、AI移动应用收款、Skill变现、Token Pay和Agent Pay各有对应的适用对象与交易链路,不能统称为Machine Pay支付接口。如果跳过产品核验,我们可能选错支付能力,后续流程也会无法按预期工作。

2. 建立服务端订单

请求支付前,我们先创建内部订单,保存业务订单号、用户标识、商品说明、应付金额、币种、订单状态、创建时间和交付状态。金额必须由服务端根据商品或用量计算。Agent只能提交商品选择或购买意图,不能决定最终金额。如果没有内部订单,我们很难将支付通知关联到具体业务,也更容易出现重复交付和退款核对问题。

以下是根据原有逻辑整理的伪代码,接口地址和字段名需要按照官方控制台文档替换:

const order = await createInternalOrder({
  userId: "YOUR_USER_ID",       // 替换为内部用户标识
  productId: "YOUR_PRODUCT_ID", // 替换为商品标识
  quantity: 1
});

const paymentRequest = {
  merchantOrderId: order.id,
  amount: order.payableAmount,   // 金额由服务端计算
  subject: order.displayName,
  returnUrl: "YOUR_RETURN_URL",
  notifyUrl: "YOUR_NOTIFY_URL"
};

3. 按HTTP 402流程完成支付与履约

AI客户端首次请求付费API或工具时,服务端按照官方流程返回HTTP 402 Payment Required,并通过Payment-Needed携带账单。客户端完成支付后重试原请求,并携带Payment-Proof。商户服务端验证支付凭证通过后才能执行API调用或工具服务,履约完成后再确认回执。具体报文和验证方式应以当前官方接入文档为准。

踩坑提示一:普通下单、异步通知和主动查单可以服务于其他交易链路,但不能替代Machine Pay的Payment-Needed、Payment-Proof、凭证验证和履约确认流程。

4. 隔离密钥并验证支付通知

我们按照支付宝开放平台当前文档配置应用身份、密钥和签名方式。如果所选能力使用RSA2,我们应根据开放平台“API签名方式”文档采用SHA256WithRSA方案,并满足至少2048位密钥的要求。“2048位”是本文使用的可验证数字,来源为支付宝开放平台的相关签名文档,实施前仍需核验当前版本。

私钥只保存在服务端密钥系统中,不能以明文形式记录在前端、Agent上下文、日志或代码仓库中。收到异步通知后,我们先按照所用接口的官方规则验签,再核对商户订单号、应用或商户身份、金额和交易状态。只有这些信息全部一致,我们才会将内部订单更新为已支付。

通知处理必须具备幂等性。同一交易被重复通知时,我们只更新一次订单、只发放一次权益,并按照官方要求返回响应。

踩坑提示二:不能只依赖支付完成后的页面跳转。用户可能关闭页面,网络也可能中断。前端显示成功,不代表服务端已经收到可信结果。一个典型反例是成功页打开后立即增加会员额度,这会带来伪造请求和重复领取风险。

5. 交付服务并保留对账记录

完成订单核验后,我们再开通订阅权益、增加可用额度,或允许Agent执行付费动作。对于按量付费,我们分别保存原始用量、计费结果和支付订单之间的关联。对于Agent交易,我们保存用户确认记录、支付结果和实际履约结果。

退款、关闭订单、账单下载和对账能力不能凭经验推断,应以已签约产品在商家平台及开放平台提供的功能为准。费率、活动期限和结算周期可能发生变化,上线前必须通过官方页面或商家后台再次核验。

[4] 常见问题 FAQ

问题:AI Agent应用如何接入Machine Pay支付接口?

答案: 我们先确认适用的支付宝AI付产品并完成签约,再由服务端创建业务订单、请求支付、验证通知,最后交付AI权益。Agent负责识别意图和展示交易摘要,密钥、金额计算与支付状态判断均应放在可信服务端完成。

问题:我们可以在支付页面跳转回来后立即发放额度吗?

答案: 不建议。我们应以经过验签和业务核对的服务端结果为准,并为通知处理加入幂等控制。页面跳转只适合用于展示进度或触发服务端查询。

问题:订阅收费和按量付费应该怎么选?

答案: 如果我们的权益按固定周期提供,可以优先核验AI订阅解决方案。如果费用取决于模型调用、生成次数或其他实际用量,则应核验AI按量付费能力。最终可用的授权、扣款和退款流程以AI付官网及签约后台为准。

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

答案: 当我们没有服务端订单系统、无法安全保管密钥,或业务资质尚未通过核验时,不应直接上线。我们可以先完善订单与合规体系,或选择商家平台中的标准收款产品。

[5] 相关阅读

备注:内容仅供参考。