ExpressCheckout IPN响应状态无效403

Iva*_*kov 2 php paypal paypal-ipn

我正在使用PayPal IPN Listener类,它几个月都运行良好,但最近(没有任何代码更改)我收到了一个奇怪的问题.

以下验证即时付款通知的代码会引发异常:响应状态无效:403

$listener = new IpnListener();
$listener->use_sandbox = PAYPAL_SANDBOX;

try {
    $listener->requirePostMethod();
    $verified = $listener->processIpn();
} catch (Exception $e) {
    error_log('Process IPN failed: ' . $e->getMessage() . " [".$_SERVER['REMOTE_ADDR']."] \n" . $listener->getResponse());
    exit(0);
}
Run Code Online (Sandbox Code Playgroud)

GETRESPONSE()方法,给了我这样的信息:

HTTP/1.1 403 Forbidden
Server: AkamaiGHost
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 284
Expires: Fri, 19 Sep 2014 08:06:58 GMT
Date: Fri, 19 Sep 2014 08:06:58 GMT
Connection: close
Strict-Transport-Security: max-age=63072000

<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>

You don't have permission to access "http://www.paypal.com/cgi-bin/webscr" on this server.<P>
Reference #18.682d1402.1411114018.180f58
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)

我使用Angelleye库设置了PayPal ExpressCheckout API调用.它不是最新版本,但它到目前为止工作得很好.

我正在为Express Checkout付款生成链接并将其放在HTML中.用户通过链接进入Pay​​Pal(实时和沙箱工作相同),支付并成功返回"谢谢"页面.收到付款,但IPN失败.

提前致谢!

小智 14

在与PayPal技术支持部门交谈后,终于找到了解决方法.这是一个问题,他们已经改变并正在努力修复,但要让它再次工作,你只需要发送一个带有Curl请求的"User-Agent"HTTP头,如下所示:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close', 'User-Agent: company-name'));
Run Code Online (Sandbox Code Playgroud)

至于应该将"用户代理"设置为什么,它只需要至少5个字符,可能是您的公司名称,如示例所示,但不一定如此.

技术支持代理还指出:https://ppmts.custhelp.com/app/answers/detail/a_id/92如果上述修复不起作用,但它确实适用于我.

访问在Paypal IPN验证中被拒绝

  • 谢谢,改变你的API是多么愚蠢而没有通知你的用户有关已知问题...这个小标题的东西结束了几小时的wtf,所以谢谢:) (5认同)