You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PayPal沙箱Webhook监听器遇HTTP 302导致重试失败求助

问题:PayPal沙箱Webhook通知因重定向被标记为失败

在沙箱环境中,通过PHP调用/v1/notifications/webhooks接口创建PAYMENT.CAPTURE.COMPLETED事件的Webhook,创建流程正常。监听器能正常接收通知,也能通过postback和X.509证书完成验证,且监听器首行已设置http_response_code(200)。但账户的Webhook通知日志中,多数通知被标记为FAIL_SOFT,二次尝试后变为FAIL_HARD,返回的payload信息如下:

"status": "FAILURE",
"transmissions": [
{"webhook_url": "",
"http_status": 302,
"reason_phrase": "Redirects are not allowed", } ]

尽管监听器返回了HTTP 200,但PayPal因检测到重定向(302)而重试并标记失败,需解决该问题。

解决建议

  • 移除监听器URL结尾的斜杠:当前设置的$listenerURL结尾带有斜杠(https://example.com/php/mylistener.php/),服务器可能会将带斜杠的URL重定向到不带斜杠的版本。修改URL去掉结尾斜杠后,重新创建Webhook。
  • 排查服务器重定向规则:检查Apache的.htaccess或nginx配置,确认是否存在自动添加/移除斜杠的重定向规则,或其他针对该监听器URL的重定向逻辑,暂时禁用这些规则进行测试。
  • 直接测试监听器URL的响应:用curl工具直接POST请求监听器URL,查看返回的HTTP状态码是否为200,中间是否存在重定向。命令示例:
    curl -v -X POST https://example.com/php/mylistener.php
    
    查看输出中是否有302跳转的记录。
  • 确认监听器脚本的执行路径:确保mylistener.php文件的实际路径与URL完全匹配,避免因路径不匹配导致服务器返回重定向。

Webhook创建代码

$listenerURL = "https://example.com/php/mylistener.php/"; 
$url = "https://api-m.sandbox.paypal.com/v1/notifications/webhooks";
$content_type = "Content-Type: application/json";

$payload = json_encode([
     "url" => $listenerURL,
     "event_types" => [
      [
      "name" => "PAYMENT.CAPTURE.COMPLETED"
      ]
   ]
  ]); 

$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);  
curl_setopt($ch, CURLOPT_HTTPHEADER, [$authorization, $content_type]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
$response = curl_exec($ch); 

内容的提问来源于stack exchange,提问作者decomplexity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 22:33:14