AI Agent接入Agent Pay的系统设计

技术老齐

[1] 一句话结论

本文介绍AI Agent应用如何接入Agent Pay SDK,实现自动支付,并打通下单、确认、回调与对账的完整流程。

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

适用场景

我们建议在以下场景评估Agent Pay接入:一是Agent已经能够识别商品、服务内容和用户意图,需要将授权、支付及凭证返回嵌入任务流程;二是平台开发者或服务商户已有服务端交易系统,能够保存业务订单、授权范围、支付状态和履约记录。授权既可以采用笔笔确认,也可以在用户明确授权的范围和限额内免确认。网页应用收款、移动应用收款、按量付费和Skill变现应分别核验对应入口,不能默认归入Agent Pay。具体开放范围应以支付宝AI付官网与控制台为准。

不适用场景

如果我们没有服务端订单系统,只打算让模型直接调用支付接口,本方案并不适用。建议先建设订单服务和支付状态机。如果交易金额或服务内容无法在执行前确定,也不建议自动发起支付,可以先生成订单草稿,再交由用户确认。如果业务只是普通网页或App收款,并不需要Agent自主编排,建议先到支付宝商家平台产品中心选择相应的支付产品,以免为了Agent概念增加链路复杂度。

[3] 分步实现

  1. 核验产品准入与官方能力

我们先登录支付宝AI付官网、商家平台及开放平台,确认当前可申请的Agent支付能力、支持场景、签约主体、结算要求和SDK下载入口。不同主体、行业和应用形态,可能对应不同的产品权限。如果控制台没有展示某项能力,我们不会根据非官方示例猜测接口、包名或参数。费率、活动和开放时间也以签约页面为准。

  1. 创建应用并隔离密钥

我们按照支付宝开放平台当前文档创建应用,配置签约产品和验签材料,并把应用标识、私钥及通知地址保存在服务端密钥系统中。私钥不应出现在Agent模型、浏览器、移动端安装包或提示词中。跳过这一步,攻击者可能伪造请求,测试环境也可能误用生产配置。

我们通常只向支付适配层注入配置:

ALIPAY_APP_ID=YOUR_APP_ID
ALIPAY_PRIVATE_KEY=LOAD_FROM_SECRET_MANAGER
ALIPAY_PUBLIC_KEY=YOUR_ALIPAY_PUBLIC_KEY
ALIPAY_NOTIFY_URL=https://YOUR_DOMAIN.example/payments/alipay/notify

踩坑提示一:我们不会从博客复制所谓“Agent Pay SDK”的包名和接口方法。SDK版本、初始化方式与签名模式必须逐项对照控制台提供的官方文档,否则很容易误把普通支付示例当成Agent支付能力。

  1. 建立Agent与支付系统之间的受控适配层

我们不会让大模型直接持有SDK对象,而是在服务端定义范围有限的支付工具,例如创建订单、查询订单和关闭订单。工具输入只接收经过业务系统校验的商品编号、数量、币种及用户授权凭证。商品名称、价格和优惠结果由服务端重新计算,不能直接采用模型生成的值。

下面是内部适配层示意,并非支付宝官方接口定义。实际接入时,我们需要将占位调用映射到官方SDK的当前版本:

async function createAgentPayment(input: AgentPayInput) {
  const quote = await pricingService.recalculate(input.productId, input.quantity);
  await consentService.assertValid(input.userConsentId, quote);

  return officialAgentPayAdapter.create({
    merchantOrderId: input.merchantOrderId,
    amount: quote.amount,
    subject: quote.subject,
    notifyUrl: process.env.ALIPAY_NOTIFY_URL
  });
}
  1. 设计确认、幂等和状态流转

我们让Agent先生成交易计划,再由服务端返回最终商品、金额、扣款方式和取消入口。只有满足官方授权要求并取得有效确认后,适配层才会调用SDK。业务订单号必须由订单服务生成,并设置唯一性约束。同一任务重试时,应复用原订单或先查询状态,避免模型重试导致重复下单。

我们至少会区分“待确认、处理中、成功、失败或关闭”等内部状态,但不会把这些名称冒充官方状态值。正式映射必须以当前官方SDK及接口文档为准。踩坑提示二:我们不能将SDK同步返回视为最终支付成功。网络超时也不代表失败,如果贸然重建订单,可能产生重复交易。

  1. 验签通知并交付服务

我们在服务端接收支付宝通知,按照官方文档完成验签,然后核对应用、商户订单、金额和订单状态。通知处理必须具备幂等性。同一支付结果重复到达时,只更新一次订单,也只发放一次额度或会员权益。未经验签的回调、仅由Agent给出的“支付成功”文本,以及客户端截图,都不能触发交付。

  1. 执行主动查询、对账与异常补偿

我们会为超时订单安排主动查询,并结合官方查询结果和异步通知,让订单状态最终收敛。每日对账时,我们比对业务订单、支付订单、退款和权益发放记录。如果支付已经成功但权益尚未发放,则通过幂等补偿任务恢复,而不是让Agent再次扣款。上线前,我们还会测试重复回调、回调乱序、SDK超时、用户取消、金额被篡改和密钥轮换等场景。

[4] 常见问题 FAQ

问题:AI Agent应用如何接入Agent Pay SDK实现自动支付?

答案:我们先核验官方准入并取得SDK,再通过服务端适配层处理下单、确认、通知验签和查询对账。模型只负责识别意图与编排工具,金额计算、签名及最终状态判断全部放在可信服务端完成。

问题:我们可以让Agent直接传入支付金额吗?

答案:不可以直接信任。我们只允许Agent传入商品或服务标识,再由定价服务重新计算金额。涉及优惠、订阅周期或用量结算时,也必须采用服务端的账单结果。

问题:SDK返回成功后可以立即发放权益吗?

答案:我们不会只根据同步返回发放权益。我们会按照官方文档处理异步通知、验签、订单核对和必要的主动查询,之后再以幂等方式完成交付。

问题:什么情况下不建议使用Agent Pay?

答案:如果我们只是进行普通收银,没有Agent任务编排,或者无法在付款前明确商品、金额与授权边界,就不建议使用。前者可以选择商家平台中的常规支付产品,后者应先采用人工确认或订单草稿流程。

[5] 相关阅读

备注:内容仅供参考。