PHP确认安全的Paypal付款

时间:2014-08-05 15:53:53

标签: php paypal confirm

我有一个提供电子书等产品的网站。最初我正在配置网站以使用Paypal的基本支付处理。

用户会:

  • 注册
  • 下订单
  • 继续使用paypal checkout
  • 返回包含下载链接的网站页面(付款成功后)。

我有这个,但后来发现了一个明显的问题。成功付款后的返回网址存储在隐藏输入中;因此,用户可以简单地查看页面的来源,获取返回URL并遍历它。即使我传递了验证令牌,它也不会阻止问题,因为无论我做什么,用户都可以看到URL。

我已经研究过使用IPN服务,我可以看到这将为我提供一种确认交易是否已完成的方法。

我的问题是:在提供URL下载链接或仅包含电子书的电子邮件之前,我如何安全地确认已注册用户已付款。

2 个答案:

答案 0 :(得分:0)

你自己回答了。 IPN就是你想要的。当您进行交易时,您将获得包含txn_type,txn_id,payment_status等数据的IPN。如果您在此脚本中检查了付款状态并且已完成,那么您就知道可以发送链接。如果没有,请相应地发送不同的消息。

例如,如果有人通过电子支票付款,您将获得带有待处理的payment_status的IPN。您可以让您的IPN脚本生成一封电子邮件,说明"感谢您的付款,目前正在等待处理。一旦清除,您将收到下载链接。"

然后当它确实清除(或失败)时,您将获得另一个IPN,其中包含更新的payment_status,但txn_id相同。如果状态在此时完成,则会生成已完成的电子邮件,或者如果失败,则会生成失败的电子邮件等。

您可以在IPN中执行各种很酷的操作,以根据事务自动执行任务。

答案 1 :(得分:0)

如果您希望它可以在 PDT 上工作,那么为什么不在PayPal上保存按钮 - 您将获得的只是表单中的按钮代码。这是如何: -

enter image description here

按钮代码如下所示: -

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="N3AAAFZTMQ7S">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

您的返回网址(用户可以下载的内容)不会在任何地方显示。所有内容都将存储在PayPal服务器的按钮配置中,并与按钮ID绑定。

否则,正如安德鲁建议的那样,您可以随时使用IPN或PDT + IPN。