Paypal 沙箱中用于订阅激活 BILLING.SUBSCRIPTION.ACTIVATED 的 Webhook 效果非常好。
尽管如此,当我尝试从客户沙箱帐户取消订阅时,没有收到 webhook 帖子。
应该是“计费.订阅.取消”。
是否要等到订阅结束日期才能发送取消消息? 还是出于安全考虑会等待几个小时?
以下是 paypal 沙箱网站的详细信息:
{
"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": "[email protected]",
"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"
}
待处理表示正在等待传送到订阅的 Webhook URL。事件发生,并尝试传送到 URL,但该 URL 未响应 HTTP 200 成功消息,以便将 Webhook 标记为已成功传送。事实上,根据您问题中记录的详细信息:
"webhook_url": "https://www.myapp.com/webhook",
"http_status": 440,
该 URL 相反以 HTTP 440 状态进行响应
假设 URL 正确并且您针对此问题将其更改为“myapp”,则问题是您需要调试该 URL 处的端点/代码,以便在将 Webhook 交付发布到该 URL 时它会响应 200 成功状态。然后他们的状态将不再是 Pending。
尽管如此,当我尝试取消订阅时 客户沙箱帐户,未收到 webhook 帖子。
当通过仪表板取消订阅时,我可以理解“没有收到 webhook 帖子”。你成功了吗?根据我的阅读,似乎 BILLING.SUBSCRIPTION.CANCELLED 不是通过仪表板取消触发的。只有 IPN 是,但这些已被弃用。