如何更新 STRIPE CHECKOUT SESSION 属性 RAILS
How to update STRIPE CHECKOUT SESSION attributes RAILS
在rails5,我在order controller的show action中创建了一个stripe session。我还有一个更新操作,用于处理用户是否为该订单选择送货或取货。在update方法中,我尝试通过添加一个shipping_address_collection属性来更新stripe session,让stripe结账页面显示收货地址区域。我设法正确修改了条带会话对象,但没有保存它。我有一个:
NoMethodError (undefined method `save' for #<Stripe::Checkout::Session:0x00007fb60fe5f138>
订单控制器:
def show
@session = Stripe::Checkout::Session.create(
payment_method_types: ['card'],
customer: customer.id,
line_items: line_items_order,
success_url: order_messages_url(@order),
cancel_url: order_failure_message_url(@order)
)
@user.stripe_id = customer.id
@user.save
@order.checkout_session_id = @session.id
@order.save
end
def update
@order = Order.find(params[:id])
@session = Stripe::Checkout::Session.retrieve("#{@order.checkout_session_id}")
if @order.collect_address == nil && @order.shipping_zone != nil
allowed_countries_item = {:allowed_countries => ['GB', 'BE', 'CZ', 'FR', 'DK', 'DE', 'EE', 'IE', 'HR', 'IT', 'CY', 'LV', 'LT', 'LU', 'HU', 'MT', 'NL', 'AT', 'PL', 'RO', 'SI', 'SK', 'FI', 'SE', 'IS', 'LI', 'NO', 'CH', 'PT', 'ES', 'ME', 'MK', 'AL', 'RS', 'TR', 'DZ', 'MA', 'IL']}
@session[:shipping_address_collection] = allowed_countries_item
@session.shipping_address_collection.save
end
@order.save
redirect_to order_path(@order)
end
有没有办法做到这一点,或者我应该根据我想要的属性创建 2 个不同的会话?
无法更新 Stripe 结帐会话。 The API only allows you to create, retrieve, and list them. 您需要创建一个新会话,而不是尝试更新现有会话。
在rails5,我在order controller的show action中创建了一个stripe session。我还有一个更新操作,用于处理用户是否为该订单选择送货或取货。在update方法中,我尝试通过添加一个shipping_address_collection属性来更新stripe session,让stripe结账页面显示收货地址区域。我设法正确修改了条带会话对象,但没有保存它。我有一个:
NoMethodError (undefined method `save' for #<Stripe::Checkout::Session:0x00007fb60fe5f138>
订单控制器:
def show
@session = Stripe::Checkout::Session.create(
payment_method_types: ['card'],
customer: customer.id,
line_items: line_items_order,
success_url: order_messages_url(@order),
cancel_url: order_failure_message_url(@order)
)
@user.stripe_id = customer.id
@user.save
@order.checkout_session_id = @session.id
@order.save
end
def update
@order = Order.find(params[:id])
@session = Stripe::Checkout::Session.retrieve("#{@order.checkout_session_id}")
if @order.collect_address == nil && @order.shipping_zone != nil
allowed_countries_item = {:allowed_countries => ['GB', 'BE', 'CZ', 'FR', 'DK', 'DE', 'EE', 'IE', 'HR', 'IT', 'CY', 'LV', 'LT', 'LU', 'HU', 'MT', 'NL', 'AT', 'PL', 'RO', 'SI', 'SK', 'FI', 'SE', 'IS', 'LI', 'NO', 'CH', 'PT', 'ES', 'ME', 'MK', 'AL', 'RS', 'TR', 'DZ', 'MA', 'IL']}
@session[:shipping_address_collection] = allowed_countries_item
@session.shipping_address_collection.save
end
@order.save
redirect_to order_path(@order)
end
有没有办法做到这一点,或者我应该根据我想要的属性创建 2 个不同的会话?
无法更新 Stripe 结帐会话。 The API only allows you to create, retrieve, and list them. 您需要创建一个新会话,而不是尝试更新现有会话。