3

我目前正在使用贝宝的 api 来检查使用 IPN 检查的付款。在 paypal 检查付款是否已验证的方法中,有一条评论说:

//检查 txn_id 是否之前没有被处理过

但我不明白 ths txn_id 是什么,它做了什么,为什么我需要检查它以及如何检查它。

提前致谢,

4

2 回答 2

5

这是由 PayPal 生成的唯一交易 ID。

您将其与您的订单相关联,然后贝宝将其与该订单的结果一起报告给您。

您使用它来防止欺诈,例如您所做的事情,当您确认您的订单正常时,您读取该号码并搜索您的数据库以查看这是否与其他订单相关联。如果您再次找到它,则意味着潜​​在的欺诈正在进行中,有些是向您购买东西,比如说 5 欧元的物品,几个月后,尝试向您订购 100 欧元的物品,有些是如何重播给您的使用旧的验证状态 id -尝试重用旧的完整事务。但是因为那个状态 ID 是独一无二的,所以你抓住了他。

要使用它,请将该 ID 与您订单的唯一 ID 连接,并保留该连接以供检查。

于 2013-02-27T20:38:22.267 回答
1

txn_id是原始交易的 PayPal 分配的唯一标识符。

该事务的所有后续 IPN 消息都将使用它,txn_id以便您可以将它们绑定到原始消息。确保将其与适用订单的数据一起保存。

CompletedIPN 消息是您必须处理的唯一消息,因为它是确认付款已完成的消息。否则,你为什么需要担心 IPN?带有该消息的 POST 变量将有足够的客户详细信息供您用于生成发票和交货单/标签。

您可以选择处理其他 IPN 消息,但这取决于您要编程的程度。基本上,您的大部分销售将通过仅处理Completed消息来顺利处理。任何其他消息都将与您将收到的正常电子邮件并行,并且您可能必须手动追踪其他任何内容,例如退款或争议。

为什么他们要求您检查它以前没有被处理过,不是为了欺诈,而只是为了确保您不会Completed再次处理 IPN 消息,因为最多可能会在一天后向您发送五个,因为IPN 流程弹性的一部分。

例如,如果您在收到 IPN 消息时发出商品,如果您收到另一条相同的CompletedIPN 消息,您不想再次发出。Completedtxn_id

基本上,当您收到一条CompletedIPN 消息时,您需要使用 that 检查您的订单txn_id,如果找到,并且如果订单已标记为已付款并已处理,那么您可以忽略该消息,否则,将其处理为订单付款,并按照您通常在付款时执行的操作。

Refunds 等会有自己的txn_id,但它们的 IPN 消息将包括parent_txn_id,其中包含txn_id原始交易的退款。

请注意,PayPal 希望您检查其他返回值的正确性,这些值用于欺诈。有些是:

  1. receiver_email字段与您用于访问 PayPal 帐户的主要电子邮件地址相匹配。它不一定与付款按钮一起使用。
  2. 确保消息中返回的项目成本和其他详细信息对于项目是正确的。这可以防止客户给自己打折。
于 2016-05-21T17:59:25.643 回答