【问题标题】:Stripe webhook POST route does not have req.userStripe webhook POST 路由没有 req.user
【发布时间】:2018-08-07 20:37:57
【问题描述】:

我正在使用 ngrok 在本地测试 Stripe webhook,以便可以将 webhook 发送到 localhost 上的端点。

我想测试将客户和付款信息保存到我的数据库,但是,中间件似乎没有像在任何其他路线上那样附加 req.user(由 Passport 设置)。这使得访问经过身份验证的用户变得不那么方便了。

我可以在收到 Stripe 令牌的路由上进行数据库工作,但大部分有用信息都是作为 webhook 发送的。另一种选择是在该阶段保存费用 ID 或客户 ID,然后在稍后阶段查找用户,但这似乎又是不必要的工作。

我有点困惑为什么会这样,除非我遗漏了一些非常明显的东西。

router.post('/stripe/webhook', (req, res) => {

   console.log(req.user); //undefined
   res.sendStatus(200);

});

【问题讨论】:

  • 您对此有何解决方案?我有一个问题,我需要在获取请求中使用我的 req.user 凭据。使用存储 req.user 的护照

标签: node.js express passport.js stripe-payments


【解决方案1】:

您可以找到Stripe webhook机制的详细信息here

您需要解析 requestbody ,其中包含有效载荷 JSON

接收端点示例:

app.post("/my/webhook/url", function(request, response) {

  // Retrieve the request's body and parse it as JSON
  var event_json = JSON.parse(request.body);
  // Do something with event_json
  response.send(200);
});

您可以通过测试 JSON 来测试您的接收端点,您可以在 Stripe 的 Event API 中找到它!并且您使用许多应用程序(如 POSTMAN)发送测试 JSON (还有一个 chrome 应用)

【讨论】:

  • 这不是 Zico 的问题,我已经在使用 body-parser 解析 JSON 响应了。
  • 我有点不清楚,请求是异步发起的,直接来自 Stripe,它不会包含任何经过身份验证的用户的详细信息 --- 只有 Stripe 对象的详细信息(客户 ID 、费用 ID、您设置的任何元数据等)。您希望 req.user 填充什么值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
相关资源
最近更新 更多