Next.js 中的 Stripe Payment:Webhook 问题 - 401(未经授权)

问题描述 投票:0回答:1

我正在尝试将 Stripe(订阅)结帐集成到我的 Next.js 应用程序(14 w/应用程序路由器)中。

TL;DR
: 我认为这可能是 Next.js 的问题,因为当我对应用程序执行
curl
命令时
/api/webhooks/stripe
我得到一个
401
就像我的 Stripe 开发仪表板日志中显示的那样。似乎表明 Next 服务器需要对此 api 路由进行身份验证。我没有
middleware.ts
或类似的东西,所以我不知道是什么原因造成的。

我关注了这个仓库这个视频

一切都在本地运行。我登录,通过我重定向到的 Stripe 表单/页面完成(测试)付款,然后我被重定向回我的应用程序,然后我看到在我的数据库中我的用户记录已更新(带有

stripe_customer_id 
例如)。

然后我设置了一个 Webhook 并将其指向 vercel 上的暂存部署

https://subdomain.domain.xyz/api/webhooks/stripe
。我能够完成 Stripe 付款,并且从 Stripe 表单/页面重定向回我的申请页面。但是数据库中的用户记录不会使用任何条带信息进行更新,并且我在条带 Webhook 日志中看到错误:

HTTP status code
401 (Unauthorized)
<!doctype html><html lang=en><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>Authentication Required</title>...

我的 Next.js 应用程序上没有任何

middleware.ts
或类似的东西。

我的

STRIPE_WEBHOOK_SECRET
已正确设置为 Webhook 的 Stripe Dev Dashboard 中显示的值。

我在 vercel 部署日志中没有看到

console.log
位于我的
src/app/api/webhooks/stripe/route.ts
中(但当我在本地执行此操作时,我确实看到了这些日志)。在我看来,在处理程序有机会处理 POST 请求之前,对我设置的 webhook url 的请求就被拒绝了。

我正在使用服务器操作,在制作本教程时这些操作还处于实验阶段,但我使用的是 Next 14+,因此应该完全支持它们。

有人认识到这个错误或者知道我如何解决这个问题吗?

next.js stripe-payments webhooks server-action
1个回答
0
投票

我已经看到了一些类似的问题,所以我将在我的案例中添加:

我正在推送到暂存分支并在 MyProject > 设置 > 部署保护中:

Vercel 身份验证已启用,我需要禁用它。

我希望保持其启用状态,并将 Stripe 列入白名单。如果有人知道如何做到这一点,请发表评论。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.