我正在使用 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接口购买。
同时,我已经从Paypal Github下载了IPN监听器并根据要求更新了详细信息,还从这里下载了
cacert.pem
文件。我已经运行了Paypal IPN模拟器,每次运行测试都会通过我的
listener.php
文件给出正确的完整数据和VERIFIED
反馈。
问题
但是,当我使用上述细节运行沙盒购买时,购买正常运行,但我没有收到任何关于我的IPN监听器的反馈,也没有在我的沙箱交易通知上获得任何交易细节。但是,我确实可以在沙箱Paypal帐户上获得有关购买成功和购买已成功完成的详细信息。
我尝试过的事情
我阅读了很多Paypal文档,并发现他们提供一个清晰简明的指南来设置任何东西非常困难。我阅读了大约40页他们的文档,包括从Stack Overflow中找到各种有用的帖子(Paypal直接参考这些帖子提供解决方案,而不是提供自己的解决方案)。
尝试但失败的解决方案:
This similar question did not provide any clear solution.
This question gives some help and confirms that the transactions should be the acceptable
web_accept
type.This question (answer) gives clear advise to use
data-notify_url
rather than thedata-callback
as specified on the JavascriptButton githubdata-notify_url='https://site-addr/account/listener.php'
但是替换data-callback
并没有起作用。交易似乎仍然成功,但没有记录任何交易或IPN数据。
尝试删除/替换各种
data-
实体,但没有成功。我在整个网站上启用了完整的PHP错误报告,但没有生成任何形式的错误。
进一步考虑
我确定你们中的一些人会说,我应该使用SDK下载来完成这种事情,但是SDK的范围很大,而我的需求相对简单,并且Paypal的文档还有很多地方需要设计。此外,他们在一系列Paypal github存款中使用 MySQL_
请求作为示例代码以及 addslashes
等已经过时的东西。
此外值得注意的是,虽然Javascript按钮生成器的Paypal文档接受帐户电子邮件或帐户代码,但给出帐户代码会导致关键错误并阻止处理付款(真实或沙盒)。
再加上只有零散的指导信息,以及文档中的“循环”,使我处于一个主题上,它说“哦,如果你想找出如何做到这一点,请遵循此链接”,然后跟随链接,它更详细的是为非开发人员编写的文本(在开发者门户网站上),然后链接到另一个文本块,再链接回要开始的文本。
抱歉,这似乎变成了对Paypal的抱怨,但尽可能地,我希望避免使用庞大的SDK系统,因为这应该是一项简单的发送和接收数据操作。有解决这个问题的任何有用示例吗?
< p > 最后说明: 上个月我在Stripe上制作了一个支付系统,与这个系统完全相同,只用了四个小时,而且运行得非常好。
(我不能在这里使用Stripe,因为客户有一个现有的Paypal账户,不会更改)。
解决方案:
在David Nguyens的帮助下,我发现我的问题在于我已经设置了IPN并启用了IPN,并给出了正确的地址, 但是这是在Live账户上而不是sandbox账户上, 尽管只有在所有详细信息都应用于真实帐户之后才设置了沙箱帐户。
Paypal的Live和Sandbox配置文件完全互斥, 而且沙箱创建不会导入与其关联的任何实时帐户数据。