【发布时间】:2014-01-04 20:22:22
【问题描述】:
我一直在开发一个网站,人们可以在该网站上在线向我提交问题,我会收取少量费用来回答这些问题。我正在使用 PayPal 收取这笔小额费用,并且我最近成功实施了 PayPal IPN 以收集交易 ID。我计划做的是存储交易 ID,并在他们提出问题时询问个人交易 ID。一旦一个事务 ID 有一个与之关联的问题,它就会被标记为已使用并且不能被使用两次。我选择了这种方法,而不是让人们创建一个帐户并在每个帐户中存储变量,因为我认为人们会被阻止使用我的服务(它与学术界有关),所以这有点完美。
那么..有什么问题?
我让一个朋友尝试了一下,不幸的是我们发现我存储的交易ID与他获得的交易ID不同,因此彻底破坏了我预想的系统.
我的问题
通过 PayPal IPN 传递的唯一变量是什么,我可以使用它来询问买家并确保它不会被使用两次?
我希望流程自动化,从而消除发票的可能性,因为您每次都必须手动完成。
感谢您的想法和努力。
【问题讨论】:
-
您是如何获得交易 ID 的?你应该得到它:
$_POST['txn_id'],而不是你应该将它存储在数据库中。我用它将它附加到实际的 URL(在使用当前时间模式对其应用md5()之后),这给了我一个唯一的值(存储在数据库中),而不是用来附加到通过电子邮件发送的 URL到贝宝用户帐户,使用$_POST['receiver_email']。 -
@SolomonClosson 我正在和你一样的庄园里取回它。我喜欢这个主意,但你如何确保有人不只是重复使用该 URL?
-
您可以在
views中放置一列,每次访问该 url 时,增加views数据库列。或者您可以调用列locked,当它被访问时,将其从0更改为1。如果列,locked或views(无论您决定如何称呼它)等于1,而不是don '不允许访问。应该是TINYINT(2)db 列。
标签: php paypal transactions paypal-ipn