Com*_*ter 7 c# asp.net webhooks generic-handler stripe-payments
我正在使用带有 C# .Net 的 Stripes 支付网关。我首先创建一个结账,将用户重定向到 Stripe 的支付网关(我不想维护卡号等麻烦,所以这样它会转发到 Stripe 询问卡详细信息、处理付款等)https://stripe .com/docs/ payments/checkout/one-time - 这是在代码隐藏中完成的。
我将成功 URL 设置为 www.example.com/myHandler.ashx(通用处理程序)- 此 URL 将订单 ID 设置为成功。我的处理程序代码类似于https://stripe.com/docs/webhooks/build(因为我使用通用处理程序,所以我使用表单而不是 MVC)
付款成功后,付款会记录到我的数据库中。
考虑到这是一个网络钩子,我如何显示/重定向到感谢页面?
您有不止一种方法可以解决这个问题。
选项 1:
将成功页面与您的 webhook 结合起来。这意味着它将向用户显示页面并更新后端的事务状态。
你的 url 看起来像这样
SuccessUrl = "https://example.com/success?session_id={CHECKOUT_SESSION_ID}"
然后使用会话 ID 来处理状态更改,就像使用 Webhook 一样,但将 html 页面返回给用户(从技术上讲,这不是一个 Webhook)。
根据您的问题,可能会提供SuccessUrl一个会话对象作为主体,因为否则您当前的代码不应该工作,但我不确定。
要根据 Id 获取会话对象,您可以再次调用 stripe,请参阅: https: //stripe.com/docs/api/checkout/sessions/retrieve#retrieve_checkout_session
付款成功后,结账会话将包含对客户的引用,以及成功的 PaymentIntent 或有效的订阅。
选项 2:
与感谢页面分开创建一个 Webhook。这意味着这SuccessUrl将是您的感谢页面。
webhook需要单独定义,并用stripe进行全局定义。您可以在此处查看这是如何完成的:https://stripe.com/docs/webhooks/configure