Php 使用贝宝支付信息

Php 使用贝宝支付信息,php,paypal,payment-gateway,Php,Paypal,Payment Gateway,我已经使用php集成了Paypal。我知道有返回url,这意味着收到付款后,它将返回到我们网站的url。我的问题是,如果收到付款,但由于互联网问题,它不会返回到我们的网页,我如何知道收到了特定用户的付款?下面的项目可能会有所帮助。即时付款通知应该可以工作,但在网络故障的情况下,如果付款到达PayPal,但购买者没有返回您的站点完成购买,那么您仍然应该收到PayPal的电子邮件,告知您已收到付款 您会收到一封带有姓名和电子邮件地址的确认电子邮件-请注意,有时这可能不是用户当前最活跃的电子邮件地址

我已经使用php集成了Paypal。我知道有返回url,这意味着收到付款后,它将返回到我们网站的url。
我的问题是,如果收到付款,但由于互联网问题,它不会返回到我们的网页,我如何知道收到了特定用户的付款?

下面的项目可能会有所帮助。即时付款通知应该可以工作,但在网络故障的情况下,如果付款到达PayPal,但购买者没有返回您的站点完成购买,那么您仍然应该收到PayPal的电子邮件,告知您已收到付款

您会收到一封带有姓名和电子邮件地址的确认电子邮件-请注意,有时这可能不是用户当前最活跃的电子邮件地址。当然,您也可以登录PayPal仪表板查看所有详细信息

您可以从电子邮件中查找您的付款详细信息,并将其与数据库中您自己的用户记录进行比较。如果他们为PayPal使用的电子邮件与他们在您的网站上注册的电子邮件不同,您仍然可以从电子邮件中查找他们的姓名-实际上,在我的个人经历中,付款出现这样的问题似乎是极为罕见的

我设置了一个脚本,向我的用户发送带有密码的电子邮件,以获取他们购买的在线产品,并通过电子邮件发送给他们,以便他们稍后可以将其与电子邮件地址一起提交。这是返回到我的脚本时发生的第一件事,因此,至少如果网站未能正确响应,他们可以在以后获得他们购买的内容

脚本使用PHPMailer和cc的me以及他们的密码,因此如果他们写投诉,我可以将其重新发送给他们。如果PayPal返回即时支付通知完全失败,这没有帮助,但其他答案非常全面,并详细说明了PayPal重复尝试过程


即时付款通知脚本可以从PayPal下载,以便根据上面链接的文章进行修改。

为此,您必须使用notify\u url

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

在应用程序中,您应该有一个订单状态字段。如果您尚未收到ipn,则不会将状态更改为“已支付”

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

我如何知道付款是从特定用户处收到的


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

如果出现网络问题,并且Paypal无法发出IPN消息,则根据他们的文档,他们将重试15次,最多4天

IPN消息服务并不假定您的侦听器将接收所有IPN消息。由于互联网不是100%可靠,IPN可能会丢失或延迟。为了解决这些问题,IPN消息服务包括一个重试机制,它以不同的间隔重新发送消息,直到您的侦听器确认收到消息为止。IPN消息可能在原始消息发送后四天内出现。最大重试次数为15次


老实说,这是贝宝标准最大的漏洞之一。IPN是一种事后回调(就像PDT一样),他们会检查以确保获得
200
响应,否则会重试(您可以使用PayPal帐户中的IPN历史记录来重新发送丢失的IPN)。但是这种方法仍然依赖于您及时获得回调,而且它不是万无一失的。更糟糕的是,您需要验证IPN呼叫,这会导致另一个失败点,即致电PayPal以确保他们确实向您发送了您获得的IPN

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

  • 定期审计你的账户。总的来说,这是一个好主意,但对于一个小型网站来说,这应该不会太难。将您的发票与您的PayPal付款匹配。很明显,这不能很好地扩展,所以
  • 切换到Payments Pro。这方面有更多的障碍(如更多的PCI合规性、SSL证书等),但主要的优势是API不太容易受到互联网突发事件的影响,只涉及一次信用卡调用(您可以忽略IPN,因为API告诉您需要知道的一切)。最糟糕的情况是,您发送了一个支付API调用,但没有得到响应。这是非常罕见的,因为PayPal确保其API的可靠性为99.9%(IPN依赖于您的服务器的可靠性)。从经验来看,Payments Pro的问题比IPN少得多

  • 贝宝为您的问题提供了两种解决方案

  • PayPal IPN-当交易成功、被拒绝、被用户中止等时,它会向服务器发出一个特定URL的POST请求。Paypal提供IPN模拟器(有史以来最差的模拟器)以测试其功能。您可以在以下位置进行尝试:
  • Paypal WebHooks-WebHooks是“块中的新孩子”,它们基本上是“用户定义的HTTP回调,接收订阅事件类型的事件。WebHooks是异步的,顺序不保证,幂等性可能导致同一事件被发送多次。”如Paypal文档中所述。 您可以通过以下网站了解更多信息:
  • 如需进一步帮助,请在下面评论,我将尽力提供帮助


    干杯,

    如何知道与我的web应用程序链接的购买者的用户名您能让您的web应用程序在尝试购买时向您发送通知吗?