【发布时间】: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 再次添加新的金额。