1

对于 Stripe 的新结帐,需要在创建会话后重定向到外部 URL。

def create_checkout_session
    Stripe.api_key = "sk_test_"

session = Stripe::Checkout::Session.create({
  line_items: [{
    price_data: {
      currency: 'usd',
      product_data: {
        name: 'KYC services',
      },
      unit_amount: 1000,
    },
    quantity: 1,
  }],
  mode: 'payment',
  # These placeholder URLs will be replaced in a following step.
  success_url: 'https://example.com/success',
  cancel_url: 'https://example.com/cancel'
})


redirect_to session.url, status: 303, allow_other_host: true

我的 redirect_to 没有带我去任何地方,终端也没有错误。如果我不包括,allow_other_host: true我会收到错误消息Unsafe redirect to "https://checkout.stripe.com

如何在 Rails 7 中强制重定向到外部 URL?为了这个演示应用程序,我不介意漏洞。

4

1 回答 1

0

我在 Rails 7 + Stripe Checkout 中遇到了同样的问题,我相信 Turbolinks 正在拦截并导致重定向在某处爆炸。

我现在找到了一种解决方法——添加data: { turbo: false }到相应视图的链接或按钮帮助程序为我修复了它。

于 2022-02-03T21:43:27.117 回答