如何使用Stripe将参数添加到success_url



我有一个网站,我有3个订阅优惠

优惠1=4.99欧元,为期30天。(1个月)

优惠2=12.99欧元,为期90天。(3个月)

优惠3=23.99欧元,180天。(6个月)

使用stripe,我想根据客户选择的优惠添加正确的订阅期限。

如何将参数添加到params?

我想把它用在成功的方法上。如何";注入";成功url中的my_params

这是我的控制器:

class CheckoutController < ApplicationController
before_action :user_logged_in?, only: [:create]
def create
@user = current_user
@total = params[:total].to_d
@session = Stripe::Checkout::Session.create(
payment_method_types: ['card'],
line_items: [
{
name: 'Rails Stripe Checkout',
amount: (@total * 100).to_i,
currency: 'eur',
quantity: 1
},
],
success_url: checkout_success_url + '?session_id={CHECKOUT_SESSION_ID}',
cancel_url: checkout_cancel_url
)
respond_to do |format|
format.js
end
end
def success
@session = Stripe::Checkout::Session.retrieve(params[:session_id])
@payment_intent = Stripe::PaymentIntent.retrieve(@session.payment_intent)
@user = current_user
if params[:my_params] == 2
if @user.sub_lvl < 2
@user.update(sub_lvl: 2)
end
if @user.end_sub_date < Time.now
@user.update(end_sub_date: Time.now + 30.days)
else
@user.update(end_sub_date: end_sub_date + 30.days)
end
end
if params[:my_params] == 3
if @user.sub_lvl < 3
@user.update(sub_lvl: 3)
end
if @user.end_sub_date < Time.now
@user.update(end_sub_date: Time.now + 60.days)
else
@user.update(end_sub_date: end_sub_date + 60.days)
end
end

if params[:my_params] == 4
if @user.sub_lvl < 4
@user.update(sub_lvl: 4)
end
if @user.end_sub_date < Time.now
@user.update(end_sub_date: Time.now + 180.days)
else
@user.update(end_sub_date: end_sub_date + 180.days)
end
end

end
def cancel
@session = Stripe::Checkout::Session.retrieve(params[:session_id])
@payment_intent = Stripe::PaymentIntent.retrieve(@session.payment_intent)
end
private
def user_logged_in?
unless current_user
redirect_to new_user_session_path
end
end
end

要添加参数,您将在创建签出会话时动态生成签出会话success_url。这需要将必要的params传递给create方法,就像动态访问金额一样。

或者,您可以仅依靠Checkout Session的amount_subtotal来指示哪个Subscription计划。

相关内容

  • 没有找到相关文章

最新更新