什么是 paypal api 的 txn_id 以及为什么要检查它以及如何检查?

Posted

技术标签:

【中文标题】什么是 paypal api 的 txn_id 以及为什么要检查它以及如何检查?【英文标题】:What is txn_id of paypal api and why it should be checked and how? 【发布时间】:2013-02-13 19:43:08 【问题描述】:

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

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

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

提前致谢,

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

哦,我明白了,所以我需要创建一个数据库表,其中包含从第一次付款中插入的 id 并检查每次付款时的 id id是:int还是string? @Josi 是一个 19 字符长度的 id,这里是一个:5DL77606L34173428 @Aristos。它是一个 17 个字符的 ID,与您在此处显示的一样。 @Patanjali 哦,是的,你说得对,长度为 17.... 我不记得为什么我输入 19【参考方案2】:

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

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

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

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

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

例如,如果您在收到Completed IPN 消息时发出货物,如果您收到另一条具有相同txn_id 的IPN Completed 消息,您就不想再次发出货物。

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

退款等会有自己的txn_id,但他们的IPN消息会包含parent_txn_id,其中包含txn_id,用于退款的原始交易。

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

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

【讨论】:

以上是关于什么是 paypal api 的 txn_id 以及为什么要检查它以及如何检查?的主要内容,如果未能解决你的问题,请参考以下文章

PayPal 的交易 ID (txn_id) 的长度和类型是多少?

未设置 PayPal IPN 发布变量“txn_id”

txn_id 和 payment_status 使 PayPal IPN 独一无二?

贝宝 IPN 验证

如何从贝宝交易中获取国家和州?

什么会导致 PayPal 的 AdaptivePayments API 返回“内部服务器错误。请检查服务器日志以获取详细信息”?