ASPNET 等待网页上的 Webhook 响应/结果

Stu*_*rtM 2 asp.net-mvc webhooks asp.net-mvc-4 stripe-payments asp.net-webhooks

我们有一个接受 Stripe 付款的网页,一旦付款完成,Stripe 就可以调用我们服务器上的 webhook。

此时,我们可以将订单标记为完成并完成任何其他附加任务。

我们如何让订单网页更新/将用户移至订单完成?

我们是否应该持续访问 AJAX 中的服务器来检查它是否已完成,或者是否有更好的方法来执行此操作。

Igo*_*gor 5

问:我们如何才能让订单网页更新/将用户移至订单完成?

大多数支付引擎会将支付会话重定向到您选择的带有结果代码的 URL 或每个结果代码不同的 URL。这些通常可以在发出请求时配置,也可以在通用配置中为整个站点配置。不应依赖这些结果来进行实际付款,因为这是网络挂钩的工作。它们值得您的网站足够信任,可以显示一般的成功/失败错误消息,并让用户继续执行任何操作。


Stripe 也允许这样做,您可以指定一个success_url(或successUrl在客户端集成中)。

有关如何将此 URL 传递给请求的信息,请参阅在服务器上创建结帐会话。您还可以包括一个cancel_url. 请参阅下面代码示例中的最后 2 个参数:

curl https://api.stripe.com/v1/checkout/sessions \
  -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
  -d payment_method_types[]=card \
  -d line_items[][name]=T-shirt \
  -d line_items[][description]="Comfortable cotton t-shirt" \
  -d line_items[][images][]="https://example.com/t-shirt.png" \
  -d line_items[][amount]=500 \
  -d line_items[][currency]=usd \
  -d line_items[][quantity]=1 \
  -d success_url="https://example.com/success" \
  -d cancel_url="https://example.com/cancel"
Run Code Online (Sandbox Code Playgroud)

另请参阅结账购买履行

当您的客户使用 Checkout 成功完成付款或启动订阅时,Stripe 会将他们重定向到您在 success_url 参数(或客户端集成中的 successUrl)中指定的 URL。通常,这是您网站上的一个页面,通知您的客户付款已成功。

正如我上面所说,如果付款成功,不要依赖于此作为实际指标。您应该为此使用网络挂钩。

不要依赖重定向到success_url单独的页面来完成购买,因为:

  • 恶意用户success_url无需付费即可直接访问并获取您的商品或服务。
  • success_url客户不一定总能在成功付款后到达。他们有可能在重定向发生之前关闭浏览器选项卡。