PayPal沙盒取消订阅BILLING.SUBSCRIPTION.CANCELLED webhook推送异常
PayPal沙盒订阅取消Webhook一直Pending问题解答
BILLING.SUBSCRIPTION.CANCELLED事件既不需要等订阅到期才推送,也没有预设的数小时安全延迟规则,你遇到的pending状态是Webhook首次投递失败、PayPal启动重试机制导致的。
核心判断依据
从提供的事件详情可以直接验证:
- 订阅取消完成时间为
2022-07-04T17:51:25Z,Webhook事件生成时间为2022-07-04T17:51:34.874Z,首次投递尝试时间为2022-07-04T17:52:03Z,全链路间隔不到1分钟,属于即时触发,不存在推送延迟。 - 首次投递记录中标记的
http_status为440(非标准成功状态码),记录里的HTTP/1.1 200 Connection established是代理层的隧道建立响应,不是Webhook接口返回给PayPal的最终业务响应,PayPal判定本次投递失败,会按照25小时内递增间隔的规则持续重试,重试期间事件状态会一直显示为PENDING。 - 同环境下订阅激活事件Webhook正常,说明Webhook签名校验、基础接收逻辑没有问题,故障点出在取消事件投递时的链路响应上。

排查修复方向
- 检查Webhook域名前的代理/CDN配置(从响应头
Via: 1.1 google判断使用了Google系代理服务):当前代理在完成CONNECT隧道建立后,没有将PayPal的POST请求正确转发给后端gunicorn服务,或是后端返回的200响应没有被代理正确透传给PayPal,导致PayPal收不到合法的2xx成功状态码。 - 确认接口响应逻辑:PayPal要求Webhook端点成功接收事件后,必须返回
200 OK状态码,任何非2xx状态码、响应超时都会触发重试。 - 修复配置后不需要重新发起沙盒取消订阅测试,直接调用事件详情中提供的resend接口即可手动重发该事件,验证投递是否正常。
事件详情原始记录
{ "id": "WH-3BV96304FY002321K-38Y64104YL460680C", "create_time": "2022-07-04T17:51:34.874Z", "resource_type": "subscription", "event_type": "BILLING.SUBSCRIPTION.CANCELLED", "summary": "Subscription cancelled", "resource": { "quantity": "1", "subscriber": { "email_address": "valid_adress@yahoo.fr", "payer_id": "X3FWGFE2SAXUL", "name": { "given_name": "Anyname", "surname": "Walker" }, "shipping_address": { "address": { "address_line_1": "Great st 25", "admin_area_2": "New York", "admin_area_1": "NY", "postal_code": "10002", "country_code": "US" } } }, "create_time": "2022-07-04T17:49:00Z", "plan_overridden": false, "shipping_amount": { "currency_code": "USD", "value": "0.0" }, "start_time": "2022-07-04T17:46:51Z", "update_time": "2022-07-04T17:51:25Z", "billing_info": { "outstanding_balance": { "currency_code": "USD", "value": "0.0" }, "cycle_executions": [ { "tenure_type": "REGULAR", "sequence": 1, "cycles_completed": 1, "cycles_remaining": 0, "current_pricing_scheme_version": 1, "total_cycles": 0 } ], "last_payment": { "amount": { "currency_code": "USD", "value": "3.99" }, "time": "2022-07-04T17:49:01Z" }, "failed_payments_count": 0 }, "links": [ { "href": "https://api.sandbox.paypal.com/v1/billing/subscriptions/I-6BR7NSX98KLF", "rel": "self", "method": "GET", "encType": "application/json" } ], "id": "I-6BR7NSX98KLF", "plan_id": "P-5XR3459593FMK2CYGA", "status": "CANCELLED", "status_update_time": "2022-07-04T17:51:25Z" }, "status": "PENDING", "transmissions": [ { "webhook_url": "https://www.myapp.com/webhook", "http_status": 440, "reason_phrase": "HTTP/1.1 200 Connection established", "response_headers": { "Server": "gunicorn", "Connection": "keep-alive", "Content-Length": "5", "Date": "Mon, 04 Jul 2022 18:15:52 GMT", "Content-Type": "text/html; charset=utf-8", "Via": "1.1 google" }, "transmission_id": "02cba350-fbc2-9abc-d537a3be4540", "status": "PENDING", "timestamp": "2022-07-04T17:52:03Z" } ], "links": [ { "href": "https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-3BV96304FY002321K-38Y64104YL460680C", "rel": "self", "method": "GET", "encType": "application/json" }, { "href": "https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-3BV96304FY002321K-38Y64104YL460680C/resend", "rel": "resend", "method": "POST", "encType": "application/json" } ], "event_version": "1.0", "resource_version": "2.0" }
内容的提问来源于stack exchange,提问作者NicolasSens
相关产品推荐
相关产品推荐

