Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# paypal api的txn_id是什么?为什么要检查它?如何检查?_C#_Asp.net_Paypal - Fatal编程技术网

C# paypal api的txn_id是什么?为什么要检查它?如何检查?

C# paypal api的txn_id是什么?为什么要检查它?如何检查?,c#,asp.net,paypal,C#,Asp.net,Paypal,我目前正在使用paypal的api使用IPN检查来检查付款。 在paypal检查付款是否经过验证的方法中,有一条评论说: //检查txn_id之前是否未被处理 但我不明白txn_id是什么,它是做什么的,为什么我需要检查它以及如何检查 提前感谢,这是一个唯一的交易ID,由PayPal生成 您将其与您的订单相连接,然后贝宝将此订单的结果反馈给您 您使用它来防止欺诈,例如,当您验证您的订单是否正常时,您会读取该数字并搜索数据库,以查看该数字是否与其他订单相连接。如果你再次发现,意味着潜在的欺诈正在进

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

//检查txn_id之前是否未被处理

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


提前感谢,

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

您将其与您的订单相连接,然后贝宝将此订单的结果反馈给您

您使用它来防止欺诈,例如,当您验证您的订单是否正常时,您会读取该数字并搜索数据库,以查看该数字是否与其他订单相连接。如果你再次发现,意味着潜在的欺诈正在进行中,一些是从你那里买东西,比如说5欧元的物品,几个月后,尝试向你订购100欧元的物品,一些是如何使用旧的验证状态id向你重播-尝试重新使用旧的完整交易。但因为身份证是唯一的,你就抓住了他


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

txn\u id
是贝宝为原始交易分配的唯一标识符

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

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

您可以选择处理其他IPN消息,但这取决于您希望为其编程的数量。基本上,只需处理
已完成的
消息,即可顺利处理大部分销售。任何其他信息都将与您将收到的正常电子邮件并行,您可能需要手动查找任何其他信息,如退款或争议

他们为什么要求您检查之前没有处理过,这不是为了欺诈,而是为了确保您不会再次处理
已完成的
IPN消息,因为作为IPN过程弹性的一部分,最多可能在一天之后向您发送五封

例如,如果您在收到
Completed
IPN消息时发送商品,则如果您收到另一条具有相同
txn\u id
的IPN
Completed
消息,则您不希望再次发送商品

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

退款等将有自己的
txn\u id
,但其IPN消息将包括
parent\u txn\u id
,其中包含退款原始交易的
txn\u id

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

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

  • 哦,我明白了,所以我需要制作一个数据库表,其中包含从第一次付款中插入的id,并检查每个付款的id。id是:int还是string?@Josi是一个长度为19个字符的id,下面是一个:5DL77606L34173428@Aristos. 这是一个17个字符的ID,就像你在那里展示的一样。@Patanjali哦,是的,你是对的,17个长度。。。。我不记得我为什么要打19型