DOCS

幂等性

状态 

幂等性密钥支持目前不完整。所选的内部重试变更(例如,订单账单重试和退款账单重试流程)已接受幂等性密钥并使用它来去重下游支付处理器调用。Zonos Graph 上的所有面向客户的创建变更中还没有标准化的 idempotencyKey 参数;这在规划中。在它发布之前,使用下面的模式来保持变更安全以供重试。

默认安全的变更 

某些变更本质上是幂等的,因为它们按你提供的稳定标识符进行更新插入。当你使用相同的输入调用这些变更时,结果是相同的 — 没有创建重复项的风险。

  • 采用唯一的商户提供标识符的变更(例如,订单 externalId)在重复调用时将返回现有记录,而不是创建一条新记录。
  • 只读操作(查询)总是可以安全重试。

当你可以将自己的稳定标识符附加到你正在创建的资源时,优先选择该路径。

非本质上幂等的变更的模式 

对于创建不带有商户提供密钥的资源的变更,将它们视为来自你这方的最多一次

  1. 在发送前持久化请求。 在网络调用前向你自己的数据库写入一行(状态 pending)。
  2. 发送变更。 成功时,针对你的待处理行记录返回的资源 ID(状态 committed)。
  3. 出现网络错误时,不要盲目重试。 查询 Zonos Graph 来确定资源是否已创建(例如,通过列出在过去几分钟内为你的账户创建的资源,或通过查询你可以关联的相关资源)。仅在你能确认资源不存在时才重试。
  4. 对代表该请求的任何业务键,在你自己的数据库中使用唯一约束,这样来自你自己的应用程序的重复重试就不会重复提交。

Webhook 传递至少一次 

当你使用 Zonos webhooks 时,设计处理程序使其幂等 — 同一事件可能被传递多次。按事件 ID 去重。查看 Webhooks 获取事件 ID 字段。

平台的方向 

底层平台已经在生产中为账单重试运行幂等性密钥流程:该密钥限定重试尝试的范围并防止重复的支付处理器调用。我们正在努力将相同的模式作为可选的 idempotencyKey 参数暴露在面向客户的创建变更上。当提供时,Graph 将在保留期内返回相同密钥的任何后续调用的原始响应。当该功能正式发布(GA)时,将更新此页面。

如果面向客户的变更上的标准化幂等性密钥阻碍了你的集成,联系支持

预约演示

这个页面有帮助吗?