Paypal不会将沙盒交易数据发送到IPN

时间:2016-05-13 14:51:26

标签: javascript php paypal paypal-ipn

我今天花了9个小时与Paypal合作,我遇到了一个无法找到解决方案的问题。

我正在使用Paypal Javascript Buttons github脚本为简单的立即购买交易创建动态页面生成按钮。

按钮示例输出由PHP生成(因此是动态的)并且看起来像这样(具有沙盒详细信息):

  <script src='https://site-addr/includes/js/paypal-button.min.js?merchant=siteemail-facilitator@gmail.com'
data-callback='https://site-addr/account/listener.php'
data-tax='0' 
data-env='sandbox' 
data-shipping='0' 
data-currency='GBP' 
data-amount='1.00'
data-quantity='1' 
data-custom='$2y$10$BdA/7xN2S/fzRq8X9p4pFOmzYBpia/u7sWsAcWN/4w9NZVXduaUzu'
data-number='20165'
data-size='Large'
data-locale='UK'
data-host='www.sandbox.paypal.com'
data-type='button'
data-cancel_return='https://site-addr/account/basket.php'
data-return='https://site-addr/account/complete.php'
data-name='Site Name Tickets' 
data-button='buynow' 
async='async'></script>

这会产生一个非常好的简单点击表单,可通过Paypal界面进行购买。

与此同时,我已下载IPN listener from the Paypal Github并根据需要更新了详细信息,同时下载了cacert.pem文件 from here

我已经通过我的listener.php文件运行了Paypal IPN simulator 给了我正确的结果,每次我提供正确的完整数据和VERIFIED运行测试。

问题

但是,当我使用上述详细信息运行沙箱购买时,购买正常运行但我没有得到我的IPN监听器的反馈,我的sandbox Transaction notifications也没有得到任何交易详情。但我 DO 获取有关购买成功且购买已完成的沙盒Paypal帐户的详细信息。

我尝试过的事情

我已经阅读了很多Paypals文档,并发现他们的方法提供了一个简明扼要的指南,通过Paypal设置任何东西,非常充实。我已经阅读了大约40页的文档,包括从Stack Overflow中找到各种有用的帖子(P aypal directly reference提供有用的解决方案,而不是提供自己的解决方案)。

尝试失败的解决方案:

但上述替换data-callback不起作用。交易似乎仍然成功,但没有记录交易或IPN数据。

  • 删除/替换各种data-实体,但没有成功。

  • 我在整个网站上都有完整的PHP错误报告,并且不会生成任何形式的错误。

进一步考虑

我相信你们中的一些人会说,我应该使用SDK下载来做这类事情,但SDK的范围很大,我的需求相对简单,Paypal文档离开了设计很多很多。此外,他们(在一系列Paypal github存款上)对示例代码和MySQL_以及过时的其他事情使用addslashes请求。

另外值得注意的是,虽然Javascript按钮生成器的Paypal文档接受帐户电子邮件或帐户代码,但是提供帐户代码会导致严重错误并阻止付款(真实或沙盒)。

与此同时,只发现零碎的指导信息以及&#34;循环&#34;在文档中,我在一个主题上,并且它说&#34;哦,如果你想知道如何做到这一点,请点击此链接&#34;,然后点击链接它&#39; s为非开发人员(在开发人员门户网站上)编写的更详细的文本,然后在链接返回到文本开头之前指向另一个文本块的链接。

对不起,这变成了Paypal呻吟,但我想尽可能避免使用庞大的SDK系统,这应该等于直接发送和接收数据操作。

解决此问题的任何有用示例?

最后说明: 上个月我在Stripe制作了一个完全相同的支付系统,花了四个小时才完美运行。

(我不能在这里使用Stripe,因为客户有一个现有的Paypal帐户并且不会改变)。

  

解决方案:

     

在下面的David Nguyens的帮助下,我发现我的问题是我设置了IPN并启用了IPN   并给出了正确的地址,但这是在 Live 上   帐户而不是 沙箱 帐户,尽管只设置了   在应用了活动的所有细节之后的沙箱帐户。

     

Paypals Live Sandbox 个人资料完全相互排斥   和沙箱创建不会从真实帐户导入任何数据   它与。

相关联

1 个答案:

答案 0 :(得分:3)

在Paypal上进一步解决问题

  • 调查Sandbox Paypal上的IPN日志以查看数据的发送内容和位置,链接为production URLsandbox URL
  • 检查状态代码,如果您收到5xx类型错误 - 调试脚本
  • 这应该告诉你IPN被发送到哪里,如果它不是应该检查的:
    • 按钮中的ipn URL
    • 配置文件中的ipn URL重写