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

如何通过新版PayPal Webhooks获取订阅ID?

获取PayPal Webhook请求中的订阅ID

订阅ID**不在请求元数据(request.META)**里,而是藏在解析后的webhook_event的resource字段中,不同类型的Webhook事件,订阅ID的具体路径略有区别,以下是常见场景的获取方式:

1. 订阅生命周期相关事件

比如BILLING.SUBSCRIPTION.CREATED、BILLING.SUBSCRIPTION.UPDATED、BILLING.SUBSCRIPTION.CANCELLED这类直接和订阅本身相关的事件,订阅ID就是resource对象里的id字段:

webhook_event = json.loads(event_body)
event_type = webhook_event["event_type"]

if event_type.startswith("BILLING.SUBSCRIPTION."):
    subscription_id = webhook_event['resource']['id']
    print(f"订阅ID: {subscription_id}")

2. 订阅产生的支付/退款事件

如果是订阅触发的支付(如PAYMENT.SALE.COMPLETED)或退款(如PAYMENT.SALE.REFUNDED)事件,订阅ID通常在resource的subscription_id字段(新版API),旧版API可能用billing_agreement_id,可以兼容处理:

webhook_event = json.loads(event_body)
event_type = webhook_event["event_type"]

if event_type in ["PAYMENT.SALE.COMPLETED", "PAYMENT.SALE.REFUNDED"]:
    # 优先取新版字段
    subscription_id = webhook_event['resource'].get('subscription_id')
    if not subscription_id:
        # 兼容旧版字段
        subscription_id = webhook_event['resource'].get('billing_agreement_id')
    if subscription_id:
        print(f"订阅ID: {subscription_id}")
    else:
        print("当前事件未关联订阅")

注意事项

不同事件的resource结构会有差异,你可以根据自己实际监听的事件类型,调整字段路径。如果遇到特殊事件,可以打印完整的webhook_event结构,确认订阅ID的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:48:18