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

如何在测试环境中测试Stripe Payout Webhook及用户通知逻辑?

解决Stripe Connect提现Webhook测试及到账通知问题

一、用Stripe CLI测试payout事件触发流程

1. 基础配置

  • 安装Stripe CLI后,执行登录命令绑定你的测试账户:
    stripe login
    
  • 启动本地事件监听器,指定要监听的payout事件,并转发到你的webhook端点(替换成实际的本地接口地址):
    stripe listen --events payout.paid,payout.failed --forward-to http://localhost:3000/stripe-webhook
    
    启动后会生成一个webhook secret,务必确保后端用这个密钥做签名验证,避免事件被篡改。

2. 手动触发测试事件

  • 触发通用的payout.paid测试事件:
    stripe trigger payout.paid
    
  • 若要针对你创建的特定payout(ID:po_1Sh5U4E0BzCx7du2iwEU9KUL)触发事件,执行:
    stripe trigger payout.paid --payout po_1Sh5U4E0BzCx7du2iwEU9KUL
    
    执行后,Stripe CLI会模拟Stripe服务器将事件发送到你的本地webhook端点,可通过后端日志验证是否成功接收。

二、基于arrival_date实现到账通知

  1. 解析arrival_date时间戳
    接口返回的arrival_date是Unix时间戳(示例中为1766361600),先转换成可读时间,以JavaScript为例:

    const arrivalDate = new Date(1766361600 * 1000);
    
  2. 定时任务+状态校验
    不能仅依赖webhook(测试环境可能延迟,生产环境也可能出现异常),建议结合定时任务实现:

    • 将每个payout的ID和arrival_date记录到数据库
    • 使用定时任务框架(如Node.js的node-schedule、Python的APScheduler),在arrival_date时间点调用Stripe的Payout查询接口:
      const stripe = require('stripe')('你的测试密钥');
      const payout = await stripe.payouts.retrieve('po_1Sh5U4E0BzCx7du2iwEU9KUL');
      
    • 若payout的status为paid,立即给用户发送到账通知(邮件、短信、站内信等)
  3. webhook兜底
    生产环境中,同时监听payout.paid webhook事件作为补充:如果webhook先触发,标记该payout为已通知;如果定时任务先执行,同样做标记,避免重复发送通知。

三、排查未收到webhook的原因

如果沙箱显示资金已到账但未收到webhook,优先检查:

  • 登录Stripe测试仪表盘,进入【Webhooks】→【Events】,查看对应payout.paid事件的状态:若为failed,查看失败原因(如端点不可达、签名验证错误)
  • 本地开发时,确保用Stripe CLI转发事件,或用内网穿透工具暴露本地端口到公网
  • 验证后端的webhook签名逻辑是否正确,Stripe会在请求头中携带Stripe-Signature,需用对应的webhook secret完成验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 20:33:16