我今天花了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提供有用的解决方案,而不是提供自己的解决方案)。
尝试失败的解决方案:
This similar question没有提供任何明确的解决方案。
This question gives some help并确认交易应为可接受的web_accept
类型。
This question (answer)明确建议使用data-notify_url
而不是JavascriptButton github上指定的data-callback
data-notify_url='https://site-addr/account/listener.php'
但上述替换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 个人资料完全相互排斥 和沙箱创建不会从真实帐户导入任何数据 它与。
相关联
答案 0 :(得分:3)
在Paypal上进一步解决问题