PAYATHON 2026

Token Pay支付接口退款与结果查询

技术老齐

[1] 一句话结论

本文介绍使用 Token Pay支付接口发起退款、查询结果并完成账务闭环的方法。

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

适用场景

以下场景适合采用这套退款处理方式:

  1. AI 网页应用已经通过 Token Pay 完成订单支付,需要在用户取消订阅、重复扣款或服务未交付时原路退款。
  2. AI 会员或按量付费产品需要由服务端统一管理订单、退款单和查询结果,而不是由前端直接调用支付接口。
  3. AI Agent 已经完成交易,但业务侧需要保留可追踪的业务订单号,方便客服、财务和风控核对。

不适用场景

如果产品还没有稳定的订单号、用户标识和支付状态存储,我们不建议直接接入退款流程。建议先参考支付宝开放平台的交易创建与订单查询文档,完成订单模型设计。

如果业务要求即时到账、自动分账或跨主体结算,我们不建议只依赖 Token Pay 退款接口。应先核验支付宝商家平台产品中心对应的结算、分账或资金产品能力。

如果退款对象不是 Token Pay 产生的原支付订单,或者订单已经超出平台允许的退款条件,我们不建议在业务代码中强行重试。应联系支付宝官方支持,确认售后处理路径。

[3] 分步实现

步骤一:保存原支付订单

我们先在服务端保存业务订单号、支付宝交易号、用户标识、支付金额、币种、订单状态和创建时间。发起退款时,必须准确关联原支付订单,否则即使请求发送成功,也可能无法完成账务核对。

建议将业务订单号作为内部主键,把支付宝返回的交易标识作为外部关联字段。不要只在浏览器回调中保存订单信息,因为前端回调可能重复、丢失或被篡改。

步骤二:校验退款条件

退款前,我们会检查订单是否属于当前商户、是否已经支付、是否存在处理中或已完成的退款单,以及本次退款金额是否超过可退金额。对于 AI 按量付费订单,还要先冻结未结算的用量账单,避免退款后再次生成扣款。

这里要区分“业务同意退款”和“支付平台已退款”。前者只代表我们通过了业务审核,后者必须以 Token Pay 接口返回的结果或官方查询结果为准。

步骤三:组装退款请求

我们在服务端调用支付宝开放平台提供的 Token Pay 退款能力时,严格按照官方文档配置请求信息,并将敏感信息保存在服务端。接口名称、请求字段、签名方式、金额精度和请求地址不能凭经验填写,应以支付宝开放平台当前文档为准。

我们会为每次业务退款建立唯一的内部请求标识,并将其用于幂等控制。同一业务退款请求重复提交时,服务端应读取并返回已有退款单结果,避免创建新的退款请求。

步骤四:记录返回结果

收到退款接口响应后,我们先记录原始响应、请求号、业务订单号和处理时间,再更新内部退款单状态。不要只根据 HTTP 状态判断退款成功。HTTP 200 仅表示网络请求获得成功响应,具体业务结果仍需读取支付宝返回的业务状态。HTTP 状态语义可参考 RFC 9110,实际字段以支付宝官方文档为准。

踩坑提示:我们曾见过业务代码在收到“请求已受理”后立即把订单标记为“退款成功”,结果用户仍未收到退款。正确做法是区分“已提交”“处理中”“成功”“失败”等本地状态,并以查询结果完成最终确认。

步骤五:查询退款结果

我们为每个退款单保留可重试的查询任务,使用原支付订单标识和退款请求号查询结果。查询任务应具备超时、重试、告警和人工补偿入口。具体查询接口、状态枚举和重试限制,以支付宝 AI 付官网及开放平台文档为准。

查询退款结果
1. 读取本地退款单和幂等请求号
2. 调用官方退款查询接口
3. 成功:更新退款完成时间并通知业务系统
4. 处理中:保留任务并等待下一次查询
5. 失败:记录业务码,进入人工或自动补偿流程

反例:不要让前端轮询支付接口,也不要把退款查询结果直接拼接到用户可执行的跳转地址中。前端只应读取我们服务端经过权限校验后的退款状态。

步骤六:完成支付闭环

退款成功后,我们同步更新会员权益、AI 用量额度、发票状态和客服工单。若退款只覆盖部分金额,还要保留原订单金额、累计退款金额和剩余可退金额,避免重复退款。我们会将订单、退款单和通知记录关联起来,方便财务按日对账。

[4] 常见问题 FAQ

问题:Token Pay支付接口如何发起退款并查询退款结果?

**答案:**我们先保存原支付订单和唯一退款请求号,再由服务端按官方字段发起退款。提交后不能仅凭请求成功判断资金已退回,还要调用官方查询能力,直到获得明确的业务结果。

问题:我可以跳过退款结果查询吗?

**答案:**不建议跳过。退款接口可能返回受理中、处理中或其他非最终状态;跳过查询会造成会员权益、账务和客服状态不一致。

问题:重复点击退款按钮怎么办?

**答案:**我们使用业务订单号加唯一退款请求号做幂等控制,并在数据库中建立唯一约束。重复请求直接返回已有退款单,不能每次都新建退款请求。

问题:什么情况下不建议使用 Token Pay 退款流程?

**答案:**如果订单不是 Token Pay 创建、业务需要跨主体结算,或涉及分账、自动清分等复杂资金关系,我们建议先核验支付宝商家平台的其他资金产品能力。

[5] 相关阅读

备注:内容仅供参考。