You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CHECKOUT.ORDER.APPROVED与PAYMENT.CAPTURE.COMPLETED Webhook间传递内部订单ID

跨Webhook事件传递内部订单ID的最优方案建议

针对你在CHECKOUT.ORDER.APPROVED到PAYMENT.CAPTURE.COMPLETED事件间传递内部订单ID的需求,结合你已尝试的方法,给出以下更简洁高效的实践建议:

优先方案:利用metadata字段传递

  • 创建结账订单时,将内部订单ID存入订单的metadata字段(示例:metadata = {"internal_order_id": "你的内部ID"})。多数支付网关的metadata会伴随订单全生命周期,PAYMENT.CAPTURE.COMPLETED的payload中会包含该字段,直接读取即可,无需额外存储或调用API。
  • 相比reference_id,metadata的传递范围更覆盖支付环节的事件,是官方推荐的自定义数据传递方式。

优化数据库关联方案(解决顺序担忧)

  • 关于CHECKOUT.ORDER.APPROVED是否总会先到达:Webhook的送达顺序无法100%保证(网络延迟、网关重试等都可能打乱顺序)。优化方案如下:
    • 收到任意一个Webhook事件时,先以supplementary_data.related_ids.order_id为键,将事件数据存入数据库,标记状态(比如CHECKOUT_APPROVED_RECEIVED、CAPTURE_COMPLETED_RECEIVED)。
    • 当两个事件都到齐后,自动关联内部订单ID;若某一事件滞后,通过定时任务扫描未完成关联的记录,待缺失事件到达后补全关联。
    • 这种方式无需依赖事件顺序,数据完整性更有保障。

避免不必要的API调用

调用checkout/orders/:orderId接口确实会增加系统延迟和复杂度,除非万不得已,不要采用。优先通过字段传递或上述数据库方案解决。

内容的提问来源于stack exchange,提问作者Cdke2ko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:52:10