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

如何用Postman测试Stripe Webhook端点?签名验证失败求助

解决Postman测试Stripe Webhook签名验证失败问题

问题核心

用Stripe CLI测试Webhook端点正常,但Postman手动发送请求时出现签名验证错误,原因是Postman未生成符合Stripe要求的签名,或请求体/头部不符合验证规则。

解决方案

1. 修正代码中的拼写错误

你的代码里环境变量名写错了:STRIP_ENDPOINT_KEY 应该是 STRIPE_ENDPOINT_KEY(少了字母E),这个错误可能导致签名密钥未正确读取,先修正:

const stripeEndpointKey = process.env.STRIPE_ENDPOINT_KEY;

2. 用Stripe CLI生成可直接复用的测试请求

Stripe CLI会自动生成合法的签名和原始请求体,步骤如下:

  • 启动监听时,记录终端输出的webhook signing secret(格式为whsec_xxx),确保它和环境变量STRIPE_ENDPOINT_KEY一致。
  • 执行触发命令时添加--print-request参数,打印完整请求详情:
    stripe trigger checkout.session.completed --print-request
    
  • 复制输出中Headers里的Stripe-Signature值,以及Body的原始JSON内容。

3. 配置Postman请求

  • 请求方法与URL:选择POST,填入你的Webhook端点URL(如http://localhost:3000/dev/v1/webhook)。
  • Headers设置:
    • 添加Content-Type头,值为application/json。
    • 添加Stripe-Signature头,值为刚才从CLI复制的签名字符串。
  • Body设置:
    • 选择raw格式,类型选JSON。
    • 粘贴从CLI复制的原始请求体,不要格式化或修改任何字符(签名验证依赖原始请求体的字节内容,格式化会改变字节导致验证失败)。

4. 开发环境临时跳过签名验证(可选)

如果只是快速测试业务逻辑,不想每次都用CLI生成请求,可以在开发环境下跳过签名验证(生产环境必须禁用此逻辑):

let stripeEvent;
const stripeEndpointKey = process.env.STRIPE_ENDPOINT_KEY;

if (stripeEndpointKey && process.env.NODE_ENV !== 'development') {
  // 生产环境正常验证签名
  const signature = event.headers['Stripe-Signature'];
  try {
    stripeEvent = stripe.webhooks.constructEvent(
      event.rawBody,
      signature,
      stripeEndpointKey
    );
  } catch (err) {
    console.log(`⚠️  Webhook signature verification failed.`, err.message);
    return { statusCode: 400, body: 'Invalid signature' };
  }
} else {
  // 开发环境直接解析请求体
  stripeEvent = JSON.parse(event.rawBody.toString());
  console.log('Skipping signature verification in development');
}

原因说明

Stripe的签名验证基于三个要素:原始请求体字节、签名密钥、请求头中的Stripe-Signature(包含timestamp和签名)。Postman手动发送请求时,要么未正确生成签名,要么修改了请求体格式(比如美化JSON),导致字节内容和签名不匹配,从而验证失败。而Stripe CLI会严格按照Stripe规则生成请求,因此可以正常通过验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:36:10