PayPal PDT付款后刷新浏览器导致项目被购买两次

时间:2011-07-08 04:21:26

标签: paypal eclipse-pdt

我已使用PDT实施PayPal付款。我意识到推荐使用PDT和IPN的组合,但是就我的目的而言,PDT就足够了。

当用户返回我的网站时,我可以将用户定向到PayPal,收取付款,然后执行操作(更新数据库中用户的帐户余额)。该URL显示如下地址:

http://www.domain.com/process_pdt?tx=45138128VH922173V&st=Completed&amt=1.99&cc=USD&cm=&item_number=

到目前为止一切顺利。我遇到的问题是使用此URL刷新浏览器会导致用户的帐户再次被记入,而无需将用户重定向到PayPal以再次收取付款。

我已经读过我应该将事务ID(上面的URL中的tx)添加到用户表中并检查以确保尚未使用此tx id。如果有,我应该显示一条错误消息。这是解决这个问题的唯一方法,即通过将每个tx id存储在用户表中,然后每次用户调用上面的process_pdt URL(合法地或欺骗性地)检查id是否存在?

1 个答案:

答案 0 :(得分:0)

啊,是的:这确实是唯一的出路。作为一个简单的健全性检查,您可能希望从流程页面重定向到不包含txn_id的URL(这样一种随意刷新不会导致问题,但如果他们使用他们的后退按钮它仍然会发生)但你必须验证txn_id只用一次。