paypal如何避免PDT数据的双重回复

Posted

技术标签:

【中文标题】paypal如何避免PDT数据的双重回复【英文标题】:paypal how to avoid double reply of PDT data 【发布时间】:2017-07-03 01:09:15 【问题描述】:

因此,当用户决定通过贝宝购买东西后,他点击支付按钮,被重定向到http://www.example.com/success.php,它使用 txID 从贝宝读取 GET,向贝宝发送 POST 以进行验证,获取数据,然后获取脚本将金额 (mc_gross) 添加到他的“example.com”帐户。问题是,用户可以复制粘贴“http://www.example.com/success.php?tx=xxx...”的 URL 并重新访问它,PDT 会很高兴地再次回复数据,并且在他的“example.com”中会向用户添加另一个 X 数量“ 帐户。我该如何避免呢?

【问题讨论】:

对这样的事情使用 POST 请求,这样复制粘贴 URL 就不会生成相同的请求? @apokryfos PayPal 最初通过 GET 发送其信息,然后从 GET 参数中获取 tx 并将其 POST 回 PayPal。我就是这样做的。我的问题是,用户可以得到paypal返回给用户的初始URL并重新访问。 您确定 PayPal 会乐于将 tx 视为一项新交易,而不是已经发生的交易? @apokryfos Paypal 会将第二次 tx 视为已经发生的一次,是的,并将回复用户支付 X 总和的交易信息。啊,我想通了,第一次发生这种情况时,我还应该使用 txID 登录我的数据库,这样就不能使用该 ID 再次添加新的金额。 【参考方案1】:

这个问题很愚蠢,应该是在 12 小时的编码之后。答案很简单,当返回 URL(脚本)获取到 TX 数据并贷给用户 X 金额时,它还应该检查该 tx id 之前是否再次使用过,如果没有记录 TX id,以便用户将不要再次使用返回 URL 再次记入自己 X 金额。

请关闭或删除问题。

【讨论】:

以上是关于paypal如何避免PDT数据的双重回复的主要内容,如果未能解决你的问题,请参考以下文章

重新连接后如何避免双重连接关闭?

如何使用 jQuery 在 iPad 上避免“双重触摸”?

Paypal 中的 IPN 与 PDT

Paypal 中的 IPN 与 PDT

如果客户在完成付款后关闭浏览器,如何获得 PayPal PDT?

Paypal 付款数据传输 (PDT) 错误 4002