如果 PUT 请求需要管理员权限,如何使用已购买的产品更新用户帐户?

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

我有一个销售特定产品并使用 Stripe 进行付款处理的网站。该过程包含两个可能的步骤:

第一步:没有帐户的用户将产品添加到购物车。然后后端从 Stripe 生成一个结账 URL。付款成功后,用户将被重定向到

/setup
路径来创建帐户。

或第二步:已经拥有帐户的用户进行购买并被引导至成功的路线。他们收到有关该产品的信息,并被告知该产品可以在

/dashboard
中下载。

当我需要使用新购买的产品更新用户帐户时,就会出现问题。我考虑的一种可能的解决方案是在用户单击

PUT
路线中的“转到仪表板”后,向后端发送
/success
请求。此请求将检索用户已有的可用产品,并将它们与他们刚刚购买的新产品连接起来。然而问题是我的
PUT
用户路由只能由管理员访问,而大多数用户没有这个权限。

我无法修改我的

PUT
路线以允许用户更新其产品,因为这会产生安全风险,因为任何人都可能添加产品。

如果有任何关于解决此问题的替代解决方案的建议,我将不胜感激。

我尝试过更新仪表板。

reactjs node.js stripe-payments
1个回答
0
投票

就像评论中提到的那样,您希望在后端执行任何数据库操作。

创建结帐会话时,您可以将

{CHECKOUT_SESSION_ID}
模板变量添加到
success_url
。客户付款后,
{CHECKOUT_SESSION_ID}
将自动替换为真实的结帐会话 ID,并重定向到成功页面。请参阅 https://stripe.com/docs/ payments/checkout/custom-success-page 了解更多信息。

当客户被重定向到您的 /success 路由时,您可以向后端服务器发出请求,以使用 Checkout Session id 从 Stripe 检索 Checkout Session(和/或任何其他相关信息),验证 Checkout Session 属于提出请求的同一客户/用户,并更新您的数据库。

但是,一般建议是监听相关的 webhook 事件来执行支付后操作,而不是等待客户端的回调。在客户端,客户可以在回调执行之前关闭浏览器窗口或退出应用程序。

您可以设置一个 Webhook 端点来侦听来自 Stripe 的

checkout.session.completed
(或其他)事件。收到该事件后,验证该事件是否由 Stripe 发送,并执行您想要在服务器中处理的任何操作。

Webhook 的其他资源:

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