现在我想从我的网站贝宝沙箱使订阅计划。 我已经设置notify_url企业帐户,并打开此功能。 返回并取消回报正常工作。 但是,当测试与买方(个人)帐户,并同意支付订阅费用,无交易日志从来没有打电话给我的网站notify_url。
我的问题是[问题]类似: notify_url没有达到,也可以在沙箱贝宝虚假响应
谢谢帮忙。
现在我想从我的网站贝宝沙箱使订阅计划。 我已经设置notify_url企业帐户,并打开此功能。 返回并取消回报正常工作。 但是,当测试与买方(个人)帐户,并同意支付订阅费用,无交易日志从来没有打电话给我的网站notify_url。
我的问题是[问题]类似: notify_url没有达到,也可以在沙箱贝宝虚假响应
谢谢帮忙。
如果您在您的帐户中启用IPN,登录到该帐户,并期待在IPN历史。 您应该能够从这里判断你的IPN的被发送出去,或者,如果他们是在一个重试或失败的状态。 如果你看到你的IPN在这里,您可以点击消息ID,它会告诉你正在通过你的服务器如果returing一个返回什么状态。 这可能有助于该问题的原因隔离。 另外,这里有一些基本的故障排除步骤可能与IPN的问题有所帮助。
此外,如果您使用的是自定义脚本,请尝试使用一个PayPal的IPN示例脚本 。 他们是非常基本的脚本,但他们正在测试工作的例子。 这可以帮助确定是否与你的脚本或IPN一般的问题。
IPN故障排除技巧
这些是影响开发商IPN工作时,最常见的问题。 最常见的解决方案是注意为好。 希望这个信息可以帮助一个人在那里!
理由无效
对于返回VERIFIED贝宝,您的IPN脚本需要寄回所有被张贴到它摆在首位的变量。 换句话说,如果你的脚本只需要操纵1个或2个变量,它是不够的回发到贝宝只变量/值脚本涉及。 你的脚本应该回来后,最初发布到它来自PayPal的一切。 这是PayPal将返回验证了唯一途径
如果您在沙盒测试,你需要确保你的脚本回发到www.sandbox.paypal.com。 如果你是活网站上,脚本应该回发到www.paypal.com。 如果你是在Sandbox和脚本的帖子回测试对活动网站(反之亦然),您会收到无效
PayPal的IPN服务器期望你的脚本将回发是被张贴到它,更重要的是所有的变量,它们编码相同的方式,他们被送到你的脚本。 如果你的脚本不经意间改变了字符的编码或解译编码的字符作为另一个字符和帖子后面,你可能会看到无效。 这可以偶尔发生,往往会发生,例如,当收到付款,而买方可以在他们的名字有一个重音字符或该命令是用于与项目名称不规范的性格有些项目。 这些实例是棘手的问题排查,但它是列在这里,因为它可以导致无效的时候,你会期望通过认证。 寻找这个问题,当你看到某些互穿网络是无效的,其余全部被验证。
故障排除提示 - IPN不发表文章!
请确保您已确认的付款被发送到该帐户的电子邮件地址。
如果你觉得IPN不张贴到你的脚本,你可以通过检查服务器的访问日志验证这一点。 服务器访问日志会告诉你,如果贝宝“打你的脚本”的说法。 访问日志跟踪IP地址和/或访问服务器的计算机主机名的。 您可以访问您的服务器的访问日志是到服务器管理员。 请与他们,如果你不知道在哪里的日志。
错误日志大多数脚本语言输出,如果在运行脚本时发生错误的错误日志。 如果您在贝宝正在发送IPN您的访问日志中看到,但你不能从你的脚本看到预期的最终结果,赔率是你必须在脚本逻辑或语法错误。 检查您的错误日志来验证。 同样,如果你不知道如何或在哪里检查这些日志,您需要咨询您的服务器管理员联系。
检查路径
一个容易犯的错误。 务必确保测试/使用IPN,你看,你没有得到的IPN职位时的路径到你的脚本是正确的。 例如避免使用“本地主机”的网址。 由于这是一个后端服务器到服务器的通信设置为localhost将导致IPN尝试张贴到本身,而不是外网到自己的服务器/脚本的路径。
IPN是来自PayPal发起的HTTP POST。 如果你有你的服务器上的防火墙,请确保您的防火墙没有阻止来自PayPal的职位。
如果你的脚本有语法或逻辑错误的话,可能你不会看到正确的结果。 一个简单的方法来测试你的脚本是通过发送一个“虚拟”后的剧本和写一些代码为“做什么”,如果来自PayPal的反应是无效的。 事实上,如果你复制想要当来自PayPal的响应被验证到运行,如果响应无效脚本的一部分,火码,您可以发送一个虚拟后的剧本,看看你的代码工作。 由于哑后的脚本将返回无效(因为信息并非来自PayPal起源),这就是为什么你要的代码添加到“若无效”脚本的一部分。
一些商家都设置这样,他们想获得张贴到他们的回归变量的值,在他们的按钮代码(返程)IPN数据。 这是买家被引导到贝宝已经付款后的URL。 有张贴到您的返回URL IPN数据,你必须设置RM变量等于“2”,在您的按钮代码或者您可能没有看到张贴到您的返回URL任何IPN数据。 欲了解更多信息,请参阅这篇文章。 **请注意,此信息是关于IPN数据可以通过返回的传递,以及它如何与您的返回URL(按钮代码变量“回归”)的作品。 如果您有自动返回与PDT启用此信息并不适用于你作为PDT是它自己单独的功能。 在PDT的更多信息可以在这里找到。
故障排除提示- IPN被延迟
在大多数情况下,互穿网络一致的延迟,当您的服务器不与200 OK响应的许多事务处理互穿网络引起的。 例如,当您的服务器不与200 OK回复贝宝试图将数据重新发布。 不接收200 OK数据的那么多转播后,您的互穿网络获得移动到一个较慢的循环服务器,因此延误。
首先检查您的IPN日志中的职位的状态:
在根据历史部分帐户,你应该有一个“IPN历史”部分,在那里你可以看到过去28天的互穿网络的,是某些情况下可以重新发送它们。 比去这里如果您登录到您的帐户不会出现此链接母鹿: https://www.paypal.com/us/cgi-bin/webscr?cmd=_display-ipns-history
这些日志将有几个不同的状态:
发送 - 表示,贝宝发送的邮件到您的IPN侦听器失败 - 表示,贝宝没有收到确认(200 OK)的消息原始POST尝试或重新短柱排队 - 表示,贝宝是准备好发送消息重试 - 表明,贝宝没有收到200 OK,并重新发送1至15倍的消息,贝宝将继续重新发送邮件禁用 - 表示该消息不会被发送,因为IPN /帐户已禁用
如果你看到失败或重试,这是最有可能解决这个原因,你需要通过你的服务器日志,以确定为什么200OK没有被发送回PayPal IPN。 一旦确定并予以纠正,并且您的服务器与它带来这个百分比200OK响应/数从跌停,它会开始从正常的周期服务器发布互穿网络。
如果没有失败,它可能是在PayPal服务器本身在这种情况下,你将要创建一票贝宝商户技术服务为paypal.com/mts进一步审查的延迟。
卷曲VS的fsockopen:这是最常见的是个人喜好,但在某些情况下,你要的主机商不支持一个或另一个,所以你可能需要在两者之间切换。 这里是使用fsockopen的例子:
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: www.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n";
$header .= "Connection: Close\r\n\r\n";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
这里是同样的事情,但使用curl:
$url= 'https://www.sandbox.paypal.com/cgi-bin/webscr';
$curl_result=$curl_err='';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded", "Content-Length: " . strlen($req)));
curl_setopt($ch, CURLOPT_HEADER , 0);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$res = @curl_exec($ch);
$curl_err = curl_error($ch);
curl_close($ch);
基本上,如果您有一个麻烦,你认为它可能是不被你的主机/服务器所支持的一种方法,不是简单的替代使用的是与其他的人。
本地测试:
这可能是在生产和检测的任何脚本中最重要的步骤。 在问候IPN这可以用来传递,你需要自己的脚本来测试语法以及如何脚本将预计变量函数的任何参数。 这一切真的会需要的是建立一个表格后行动,自己的IPN处理程序,并为你要测试的变量/值的隐藏输入。
例如:
<form target="_new" method="post" action="https://www.YourDomain.com/Path/IPNhandler.php">
<input type="hidden" name="SomePayPalVar" value="SomeValue1"/>
<input type="hidden" name="SomeOtherPPVar" value="SomeValue2"/>
Than etc for all other variables you want to test with.
</br>
<input type="submit"/>
</form>
正如在许多angelleye的线程上市这里是一个很好的例子的链接本地测试 ,他已经成立。