PHP确认安全的Paypal支付

PHP确认安全的Paypal支付,php,paypal,confirm,Php,Paypal,Confirm,我有一个网站提供的产品,如电子书。最初,我将网站配置为使用Paypal的基本支付处理 用户将: 登记册 下单 转到paypal结账 返回包含下载链接的站点页面(成功付款后) 我已经准备好了,但后来发现了一个突出的问题。成功支付后返回的url存储在隐藏输入中;因此,用户可以简单地查看页面的源代码,获取返回URL并遍历到它。即使我传递了一个验证令牌,它也不会阻止这个问题,因为无论我做什么,用户都可以看到URL 我已经研究过使用IPN服务,我可以看到这将为我提供一种确认交易是否已完成的方法 我的问

我有一个网站提供的产品,如电子书。最初,我将网站配置为使用Paypal的基本支付处理

用户将:

  • 登记册
  • 下单
  • 转到paypal结账
  • 返回包含下载链接的站点页面(成功付款后)
我已经准备好了,但后来发现了一个突出的问题。成功支付后返回的url存储在隐藏输入中;因此,用户可以简单地查看页面的源代码,获取返回URL并遍历到它。即使我传递了一个验证令牌,它也不会阻止这个问题,因为无论我做什么,用户都可以看到URL

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


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

您自己回答了。IPN就是你想要的。当交易发生时,您将获得一个IPN,其中包含诸如txn_类型、txn_id、付款状态等数据。如果您检查此脚本中的付款状态,并且它已完成,则您知道您可以提供链接。如果没有,则相应地传递不同的消息

例如,如果有人使用电子支票付款,您将获得一个IPN,其付款状态为“待定”。你可以让你的IPN脚本生成一封电子邮件,上面写着“感谢你的付款,它目前正在等待。一旦它清除,你将收到你的下载链接。”

然后,当它清除(或失败)时,您将获得另一个IPN,该IPN具有更新的付款状态,但具有相同的txn id。如果该状态在该点完成,则将生成一封已完成的电子邮件,或者如果失败,则生成一封失败的电子邮件,等等


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

如果您希望它在PDT上工作,那么为什么不在PayPal上保存按钮呢?-您将得到表单中的按钮代码。以下是方法:-

按钮代码将类似于:-

<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>

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


否则,正如Andrew所建议的,您可以始终使用IPN或PDT+IPN。

如果您对官方PayPal API有问题,请与PayPal联系。感谢您的澄清。