redirect_to 外部 Stripe 结账 URL 在 Rails 7 中不起作用

And*_*ndy 5 ruby-on-rails ruby-on-rails-7

对于 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
Run Code Online (Sandbox Code Playgroud)

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

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

小智 6

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

\n

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

\n