我使用PHP集成Paypal。我知道有返回网址,这意味着收到付款后它将返回我们网站的网址。
我的问题是如果收到付款并且由于互联网问题它没有返回我们的网页,怎么办我知道是从特定用户收到付款吗?
答案 0 :(得分:3)
如果存在网络问题并且PayPal无法发出IPN消息,那么根据他们的文档,他们将重试15次,最多4天。
IPN消息服务不假定您的侦听器将接收所有IPN消息。由于互联网不是100%可靠,因此IPN可能会丢失或被延迟。为了解决这些问题, IPN消息服务包括一个重试机制,该机制以不同的间隔重新发送消息,直到您的侦听器确认收到。原始发送后最多四天可能会出现IPN消息。最大重试次数为15次。
https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/
答案 1 :(得分:2)
以下这个项目可能有所帮助。即时付款通知应该有效,但是如果网络出现故障,如果付款到达PayPal但购买者没有回到您的网站完成购买,那么您仍然应该收到PayPal的电子邮件,告诉您已经收到付款。
using paypal button - can my webpage tell if paypal transaction was successful or not?
您会收到一封包含其姓名和电子邮件地址的确认电子邮件 - 请注意,这可能不是用户当前最活跃的电子邮件地址。当然,您也可以登录PayPal仪表板查看所有详细信息。
您可以从电子邮件中查找付款详细信息,并将其与您自己的数据库中的用户记录进行比较。如果他们用于PayPal的电子邮件与他们在您网站上注册的电子邮件不同,您仍然可以通过电子邮件查找他们的姓名 - 实际上,我的个人经历中付款问题似乎很少发生
我设置了一个脚本,通过密码向我的用户发送电子邮件,以获取他们购买的在线产品,这些产品通过电子邮件发送给他们,以便他们可以在以后随电子邮件地址提交。这是返回我的脚本时发生的第一件事,所以至少如果网站无法正常响应,他们可以获得他们之后购买的内容。
该脚本使用PHPMailer并使用他们的密码抄送我,因此如果他们写了投诉,我可以重新发送给他们。如果即时付款通知的PayPal退货完全失败,但其他答案非常全面,并且详细说明PayPal重复尝试流程,则无济于事。
即时付款通知脚本可以从PayPal下载,根据上面链接的文章自行修改。
答案 2 :(得分:1)
说实话,这是PayPal Standard最大的漏洞之一。 IPN是一个POST回调(就像PDT一样),他们检查以确保他们得到200
响应,否则他们会重试(并且您可以使用PayPal帐户中的IPN历史记录重新发送丢失的IPN)。但是这种方法仍然依赖于你及时得到回调而且并非万无一失。更糟糕的是,您需要验证IPN呼叫,并且在调用PayPal以确保他们确实向您发送您获得的IPN时引入了另一个故障点。
有几种方法可以解决这个问题。
答案 3 :(得分:0)
在您的应用程序中,您应该拥有订单的状态字段。如果您还没有收到ipn,则不会将状态更改为付费。
之后,如果您收到Paypal发来的某人已付款的电子邮件,请检查订单号,然后手动更改状态。
我如何知道从特定用户收到付款?
Paypal将向用户和您发送电子邮件。
答案 4 :(得分:0)
Paypal为您的问题提供2种解决方案。
如需进一步的帮助,请在下方发表评论,我会尽力提供帮助。
干杯,
答案 5 :(得分:-1)
您必须为此目的使用notify_url
<input type="hidden" name="notify_url" value="https://domain-name.com/ipn.php">