在 Webhook 之间传递内部订单 ID(CHECKOUT.ORDER.APPROVED 和 PAYMENT.CAPTURE.COMPLETED)

问题描述 投票:0回答:1

我正在尝试找出在不同 webhook 事件之间传递内部订单 ID 的最佳方法,特别是从 CHECKOUT.ORDER.APPROVED 到 PAYMENT.CAPTURE.COMPLETED。这是我迄今为止尝试过的:

  1. 使用reference_id:我在结账订单审批阶段将内部订单ID包含在reference_id字段中。此 ID 在 CHECKOUT.ORDER.APPROVED Webhook 中返回,这很棒。但是,它不会出现在 PAYMENT.CAPTURE.COMPLETED webhook 中,因为后者的有效负载中没有可用的 reference_id 字段。

  2. 数据库存储:我考虑的一个解决方法是将第一个 Webhook 中的 reference_id 存储在数据库中。然后只需使用 PAYMENT.CAPTURE.COMPLETED 中的字段 Supplementary_data.lated_ids.order_id 。但有一个重要的问题:CHECKOUT.ORDER.APPROVED 总是会首先发送到我的 API 吗?

  3. API调用:我想到的另一种方法是对checkout/orders/:orderId进行API调用以获取reference_id。然而,这感觉只是检索订单号的一个过于复杂的步骤。

是否有更简单或更有效的方法来保持内部订单 ID 在这些 Webhook 事件中的连续性?我正在寻找任何可能有助于简化此流程的建议或最佳实践。

paypal paypal-sandbox paypal-rest-sdk
1个回答
0
投票

reference_id字段的唯一目的是区分多个purchase_units(如果进行后续补丁操作)。它没有其他目的,因此如果您只有一个purchase_unit,则默认将其留空。

您要查找的调节值是

invoice_id
custom_id
。 Invoice_id 已编入索引,可在 paypal.com 界面中搜索,将防止完成具有相同 id 的重复交易,并且对付款人可见。 custom_id 对付款人不可见,并且未编入索引。

© www.soinside.com 2019 - 2024. All rights reserved.