我已经花了9个小时,今天使用贝宝,我有一个问题,我找不到解决方案。贝宝将不会发送沙箱交易数据到IPN
我正在使用Paypal Javascript Buttons github脚本创建动态页面生成的按钮,简单的立即购买交易。由PHP产生
按钮示例输出(因此是动态的),看起来像这样(设有沙箱详情):
<script src='https://site-addr/includes/js/[email protected]'
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>
这种经由贝宝接口购买产生一个完美的简单的点击形式。
同时,我已经下载了IPN listener from the Paypal Github并根据需要更新了详细信息,同时下载了cacert.pem
文件 from here。
我已运行Paypal IPN simulator这给了我正确的结果通过我listener.php
文件,给予正确的饲料出完整的数据和各VERIFIED
我运行测试时间。
的问题
但是,当我运行使用上述细节的沙箱购买,购买正常运行,但我没有得到任何反馈给我的IPN监听器,我也得到我的sandbox Transaction notifications没有交易细节。但我DO得到购买成功和购买已完成的沙箱Paypal帐户的详细信息。
事情我已经试过
我也读了不少Paypals文件,发现他们的方法来提供一个简洁明了的指导设定了PayPal任何东西,很误人子弟。我已经阅读了大约40页的文档,其中包括从堆栈溢出(找到有用的解决方案P aypal directly reference而不是自己提供的)中找到各种不好的帖子。
解决方案已经尝试和失败:
This similar question没有提供任何明确的解决方案。
This question gives some help并确认交易应该是可接受的
web_accept
类型。This question (answer)提供了明确的建议使用
data-notify_url
而非data-callback
作为对JavascriptButton github上data-notify_url='https://site-addr/account/listener.php'
规定,但上述替代data-callback
不起作用。交易似乎仍然成功,但交易或IPN数据未被记录。
删除/替换各种
data-
实体,但没有成功。我的整个网站都有完整的PHP错误报告,并且没有任何形式的错误。
进一步考虑
我敢肯定,你们中的一些会说,好,我应该使用SDK下载做这样的事情,但SDK的范围巨大的,我的需求相对简单,贝宝文档留下了很多设计。他们(在一系列贝宝github存款)正在使用示例代码MySQL_
请求以及addslashes
和其他东西是年过期。
另外值得注意的是,尽管Javascript Button生成器的PayPal文档接受帐户电子邮件或帐户代码,但给出帐户代码会导致严重错误并阻止处理付款(真实或沙箱)。
再加上这个发现只是零碎的指导信息以及文档中的“循环”,以至于我在一个主题上,它说:“哦,如果你想知道如何做到这一点,链接“,然后在链接之后,它是为非开发人员(在开发人员门户上)编写的更详细的文本,然后是链接到另一个文本块,然后再返回到开头的文本。
对不起,这正在变成一个贝宝呻吟,但尽可能我想避免使用巨大的SDK系统应该是一个简单的发送和接收数据操作。
解决此问题的任何有用的示例?
最后一点: 上个月,我在Stripe,它完全一样的东西,花了四小时完美的作品进行了支付系统。
(我不能在这里使用条纹,因为客户有一个现有的Paypal帐户,不会改变)。
解决方案:
从下面大卫Nguyens答案的帮助下,我找到了我的情况下,问题是,我已经设置了IPN并启用IPN 并为其赋予正确的地址,但这是在直播 帐户,而不是沙箱帐户,尽管只有所有细节后设置 的沙盒帐户在活的一个被应用了。
Paypals 直播和沙盒轮廓完全互斥 和沙箱创建将不会从它与相关的真实账户 导入任何数据。
我的交易页面[这里](https://developer.paypal.com/developer/dashboard/sandbox/)显示无交易,登录到沙箱网站对我来说这些交易没有什么比JS表单中给出的数据更多,没有5xx返回等等。监听器脚本不应该出现故障,因为IPN模拟器使用相同的脚本引用(如正版帐户控制面板)。我可以在沙盒管理站点找不到任何编辑任何交易目的地的选项。 – Martin
为了f ***的缘故,我使用了您提供的链接并将沙盒地址替换为它,并且我告诉我它已“排队”,因为在我的沙盒配置文件中,我没有创建IPN目标文件(但是我拥有真实生活中的配置文件)。 Jeeeez。 – Martin
感谢您在正确的方向轻推。虽然我咬紧牙关,但沙箱事务列表似乎不能从沙箱配置文件中得到.....所以很Paypal。 – Martin