概览
退款可以通过有效用户操作(按“退款”按钮)发起,也可以代表用户自动触发。无论触发条件为何,Google 都会向付款集成商发送异步退款申请。集成商必须确认请求,并在退款完成后通知 Google。
该流程的运作方式
退款流程
以下是用户启动的异步退款流程示例:
以下是上图中的对象列表:
- 用户:想要全额退款或部分退款的用户。
- Google 服务器:向付款集成商发送退款命令的 Google 后端服务器。
- 付款集成商:将退款申请转发给相应发卡机构的集成商。
- 发卡机构:用于付款的发卡机构,用于接受退款申请。
在此示例中,退款由用户发起。
- 用户向 Google 服务器发起退款。
- Google 会调用付款集成商的
AsynchronousRefund
端点。 - 集成商向 Google 发送
Acknowledged
响应。 - 集成商调用发卡机构上的相应
Refund
端点。 - 发卡机构处理退款,并使用
Success
响应集成商。 - 集成商调用 Google 服务器上的
RefundResultNotification
端点,以通知 Google 结果。 - Google 认可
RefundResultNotification
。 - Google 会更新用户的可用资金。
- 用户获得退款。
最佳实践和其他注意事项
因为只要帐号中存有赠送金额,Google 的某些产品(例如 AdWords)就支持退款,因此应无限期支持交易退款申请。如果存在技术限制,退款期限应与您的平台允许的时间一样长。
只有在原始交易中的余额不足以支付退款金额,或者相应帐号已关闭或处于暂停状态且集成商无法将这笔款项汇给用户时,系统才能拒绝退款。
可在拍摄后的几秒内发起退款。退款时间由 Google 自行决定。
退款绝不应被视为全额退款。向帐号退款时,必须始终考虑 refundAmount
字段。
必须支持多项部分退款。例如,假设发生了一笔价值 11.00 美元的交易,某用户成功地获得原始交易中 4 美元、5.00 美元和 1.00 美元的部分退款。在这种情况下,所有三次退款的 captureRequestId
值相同,但 requestId
值不同。此外,这笔交易只剩 1.00 美元了。
现在,假设有一笔金额为 12.00 美元的购买交易。在本示例中,用户可以进行两笔退款,每笔退款金额为 6.00 美元。如果这两笔退款的 requestId
值不同(并且 captureRequestId
相同),则必须对同一笔交易将它们视为不同的退款。在这种情况下,一旦完成这些退款,用户交易中的剩余款项将为零。