使用贝宝的付款信息

时间:2015-11-27 06:11:57

标签: php paypal payment-gateway

我使用PHP集成Paypal。我知道有返回网址,这意味着收到付款后它将返回我们网站的网址。
我的问题是如果收到付款并且由于互联网问题它没有返回我们的网页,怎么办我知道是从特定用户收到付款吗?

6 个答案:

答案 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时引入了另一个故障点。

有几种方法可以解决这个问题。

  1. 定期审核您的帐户。总的来说这是一个好主意,但对于一个小型网站来说,这应该不是特别难。将您的发票与PayPal付款相匹配。显然这不能很好地扩展......
  2. 切换到Payments Pro。这有更多的障碍(比如更多的PCI合规性,SSL证书等),但主要的优点是API不太容易受到互联网的奇思妙想,只涉及一次信用卡呼叫(你可以忽略IPN,因为API告诉您需要知道的一切)。可能发生的最糟糕的情况是您发送付款API调用并且无法获得响应。这是非常罕见的,因为PayPal确保他们的API可靠性为99.9%(IPN依赖于您的服务器可靠)。根据经验,Payments Pro的问题比IPN少得多。

答案 3 :(得分:0)

在您的应用程序中,您应该拥有订单的状态字段。如果您还没有收到ipn,则不会将状态更改为付费

之后,如果您收到Paypal发来的某人已付款的电子邮件,请检查订单号,然后手动更改状态。

我如何知道从特定用户收到付款?

Paypal将向用户和您发送电子邮件。

答案 4 :(得分:0)

Paypal为您的问题提供2种解决方案。

  1. PayPal IPN - 当事务成功,拒绝,被用户中止等时,它会向服务器发送对特定URL的POST请求。 Paypal提供IPN模拟器(有史以来最差的模拟器)以测试其功能。您可以试试:https://developer.paypal.com/developer/ipnSimulator/
  2. Paypal WebHooks - webhooks是" Block中的新孩子"它们基本上是用户定义的HTTP回调,它们接收订阅事件类型的事件。 Webhooks是异步的,订单无法保证,并且幂等性可能导致同一事件被多次发送。"如Paypal文档中所述。 您可以在https://developer.paypal.com/docs/integration/direct/rest-webhooks-overview/
  3. 上详细了解相关信息

    如需进一步的帮助,请在下方发表评论,我会尽力提供帮助。

    干杯,

答案 5 :(得分:-1)

您必须为此目的使用notify_url

<input type="hidden" name="notify_url" value="https://domain-name.com/ipn.php">