【问题标题】:Node.js: Stripe error No signatures found matching the expected signature for payloadNode.js:条带错误未找到与有效负载的预期签名匹配的签名
【发布时间】:2020-07-07 11:52:36
【问题描述】:

错误:

"message": "没有找到与负载的预期签名匹配的签名。您是否传递了从 Stripe 收到的原始请求正文?https://github.com/stripe/stripe-node#webhook-signing",

我试过req.rawBody,但结果相同。我还尝试了堆栈溢出和 github 上可用的所有解决方案。

server.js

// use express body parser
app.use(bodyParse.json());

stripe.js

router
  .route('/payment/hook')
  .post(bodyParser.raw({
    type: 'application/json'
  }), paymentsController.transactionHook);

paymentsController.js

transactionHook: async(req, res, next) => {
    const sig = req.headers['stripe-signature'];
    let event;

    try {
      event = await stripe.webhooks.constructEvent(req.body, sig, endpointSecret);

    } catch (err) {
        return res.status(400).json({ message: err.message, detail: err.detail });
      }
  }

响应

【问题讨论】:

    标签: javascript node.js express ecmascript-6 stripe-payments


    【解决方案1】:

    使用bodyParser.json() 将修改正文,使签名无法验证。您需要确保此中间件应用于您的 webhook /hook 端点。

    使用 Express 执行此操作的一种方法是在应用中间件之前简单地定义 webhook 端点(按照构建路由的顺序)。

    【讨论】:

    • 我已经在适用于我的 bodyParser.json() 之前暴露了端点。
    • 感谢您的支持
    猜你喜欢
    • 2019-05-22
    • 2019-09-04
    • 2021-02-19
    • 2019-11-10
    • 2020-04-25
    • 2021-07-26
    • 2021-03-14
    • 2022-12-12
    • 1970-01-01
    相关资源
    最近更新 更多