我有一个销售特定产品的网站,并使用Stripe进行支付处理。该过程包括两个可能的步骤:
第一步:没有帐户的用户将产品添加到购物车。然后,后端从Stripe生成一个结帐URL。成功支付后,用户将被重定向到“/setup”路径以创建其帐户。
或第二步骤:已经具有帐户的用户进行购买并被引导到成功路由。他们收到有关产品的信息,并被告知可以在“/dashboard”中下载该产品。
当我需要用新购买的产品更新用户帐户时,问题就出现了。我考虑的一个可能的解决方案是在用户单击“/success”路由中的“go to dashboard”之后向后端发送PUT请求。该请求将检索用户已经拥有的可用产品,并将它们与他们刚刚购买的新产品连接起来。但是,问题是我为用户设置的PUT路由只能由管理员访问,而大多数用户没有此权限。
我不能修改PUT路由以允许用户更新他们的产品,因为这会产生安全风险,因为任何人都可能添加产品。
我将感谢任何关于解决这一问题的替代解决方案的建议。
我试过只在 Jmeter 板中更新
1条答案
按热度按时间avkwfej41#
就像评论中提到的那样,您可能希望在后端执行任何DB操作。
创建Checkout Session时,可以将
{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属于发出请求的同一客户/用户,并更新您的DB。
但是,一般建议是侦听相关的webhook事件以执行后支付操作,而不是等待来自客户端的回调。在客户端上,客户可以在回调执行之前关闭浏览器窗口或退出应用程序。
您可以设置一个webhook端点来侦听来自Stripe的
checkout.session.completed
(或其他)事件。收到该事件后,验证该事件是否由Stripe发送,并执行您希望在服务器中处理的任何操作。Webhooks的其他资源: