You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PayPal Rest API沙箱环境下订阅Webhook未接收每日账单通知求助

排查PayPal Sandbox中未收到每日账单Webhook通知的问题

我之前也碰到过类似的订阅通知缺失的问题,结合PayPal Sandbox的特性和API实操经验,给你梳理几个核心排查方向和解决思路:

1. 先确认payment_definitions的周期配置是否准确

这是最容易踩坑的点,要确保你的账单周期参数完全匹配“每日生成”的需求:

  • 必须把frequency设为DAY(明确按天周期)
  • frequency_interval要设为1(表示每1天执行一次)
  • 如果是无限期订阅,cycles要设为0;如果是固定次数,要填大于1的数值

给你贴一个符合要求的配置示例:

"payment_definitions": [
  {
    "name": "Daily Recurring Plan",
    "type": "REGULAR",
    "frequency": "DAY",
    "frequency_interval": "1",
    "amount": {
      "value": "5.00",
      "currency": "USD"
    },
    "cycles": "0",
    "charge_models": []
  }
]

2. 注意Sandbox环境的账单延迟特性

PayPal Sandbox的定时任务不是实时触发的,每日账单的生成可能会有几小时的延迟,甚至要等到下一个UTC时间节点才会执行。你可以手动触发测试:

  • 登录Sandbox商家后台,进入【Subscriptions】找到目标协议
  • 点击【Generate Invoice】手动生成账单,然后查看Webhook接收日志,确认是否能收到通知

3. 再次核对Webhook事件订阅的类型

虽然你说订阅了所有事件,但还是要确认是否包含这两个关键的账单相关事件:

  • BILLING.AGREEMENT.BILLING.CYCLE.COMPLETED(账单周期完成时的通知)
  • PAYMENT.SALE.COMPLETED(账单支付完成后的通知,对应实际账单生成后的支付结果)

建议重新进入Webhook设置页面,取消所有订阅后重新勾选保存,避免界面缓存导致的订阅失效。

4. 检查Webhook接收端点的可用性

确保你的接收服务器满足以下条件:

  • 能正常响应PayPal的验证请求(必须返回200 OK)
  • 没有防火墙或安全组拦截PayPal Sandbox的IP段
  • 服务器日志中没有解析PayPal JSON payload的报错

你可以用PayPal的【Webhook Simulator】模拟发送BILLING.AGREEMENT.BILLING.CYCLE.COMPLETED事件,快速验证端点是否能正常接收。

5. 确认订阅协议的状态为ACTIVE

如果协议状态是PENDINGCANCELLED,PayPal不会生成后续账单。你可以通过API调用GET /v1/payments/billing-agreements/{agreement_id}查看state字段,确保协议处于ACTIVE状态。


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

火山引擎 最新活动