【问题标题】:Redirect from successful stripe checkout从成功的条带结帐重定向
【发布时间】:2020-04-11 01:27:02
【问题描述】:

我正在使用带有 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)

支付成功后,支付记录到我的数据库中。

考虑到这是一个 webhook,我如何显示/重定向到感谢页面?

【问题讨论】:

  • 您的成功 URL 是用户将被重定向到的 URL。所以这个页面应该是表示感谢的页面。
  • 好的,但我如何记录它的成功支付并执行数据库任务?我可以将处理程序转换为页面,但我认为我没有完全遵循?

标签: c# asp.net stripe-payments webhooks generic-handler


【解决方案1】:

解决这个问题的方法不止一种。

选项 1:
将成功页面与您的 webhook 相结合。这意味着它将向用户显示页面并在后端更新事务的状态。

您的网址将如下所示
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 需要使用条带单独和全局定义。您可以在这里查看这是如何完成的:https://stripe.com/docs/webhooks/configure

【讨论】:

  • 让我先试试选项 1。我提供的用于处理数据库任务的链接显示来自发布请求的 stripeEvent.Type == Events.PaymentIntentSucceeded - 我如何获得对订单详细信息的访问权限,即我有会话 ID,但我如何加载记录以采取行动反对?
  • 我很快就会看看这个,但在我深入研究之前还有一个问题。会话 ID 是否必须是成功 URL 的一部分?我正在使用 MetaData 来保存其他数据,所以我可以只使用 MD 来保存会话 ID 吗?
  • 哦,是的,您也应该能够将其放入元数据中。我只是使用了这个例子,因为它也在官方文档中
  • 所以我有一个 SessionService(来自您提供的链接),但我如何将其与成功付款相关联以进一步处理?以前我有 Stripe.PaymentIntent,除了响应不包括元数据,我需要打另一个电话吗?
  • 不确定您的意思?您以前是如何获得 PaymentIntent 的?你不能保持它与以前大致相同,但在 asp.net 中返回一个视图吗?
猜你喜欢
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多