在我的 Rails 7 应用程序中,我正在使用订阅模型,因此通过 Stripe API 实现订阅。
请参阅下面的付款方式 (subscriptions_controller.rb),当用户单击“选择计划”按钮时会触发该付款方式。重定向有效,然后无效,然后再次有效;我没有改变订阅的创建方式以及检索 URL 的方式。
def payment
@subscription = current_user.subscription
if @subscription
plan_id = params[:plan_id]
@subscription.update(id: @subscription.id, plan_id:, user_id: current_user.id, active: true)
else
subscription_id = SecureRandom.uuid
plan_id = params[:plan_id]
@subscription = Subscription.new(id: subscription_id, plan_id:, user_id: current_user.id)
end
@checkout_session = create_checkout_session(@subscription)
@subscription.checkout_session_id = @checkout_session.id
@subscription.save!
redirect_to @checkout_session.url, allow_other_host: true
end
private
def create_checkout_session(subscription)
Stripe::Checkout::Session.create({
customer: current_user.stripe_id,
payment_method_types: ['card'],
line_items: [{
price: subscription.plan.stripe_price_id,
quantity: 1
}],
mode: 'subscription',
success_url: subscription_url(subscription),
cancel_url: new_subscription_url
})
end
Run Code Online (Sandbox Code Playgroud)
错误信息