对于上下文,我在一次结帐中实现了相同的计费间隔订阅
据我所知,我已经添加了多个line_items
及其price_id和quantity,所有结帐都工作正常。但是我不能处理这种多订阅结帐的webhook事件。
当我们执行单个订阅 checkout 时,我们在checkout.session.complete事件对象中获取订阅数据。
我们如何从这个对象中获取所有订阅数据。因此,对于所有订阅,我们可以循环通过这个数组并在数据库中创建一个记录。
def handle_checkout_session_completed(event)
puts "checkout.session.completed\n"
return unless User.exists?(event.data.object.client_reference_id)
checkout_session = event.data.object
puts "checkout_session: #{checkout_session}\n"
session = Stripe::Checkout::Session.retrieve({
id: checkout_session['id'],
expand: ['line_items']
})
line_items = session.line_items.data
puts line_items
if checkout_session.payment_status == 'paid'
fulfill_order(checkout_session, line_items)
end
end
def fulfill_order(checkout_session, line_items)
user = User.find(checkout_session.client_reference_id)
user.update(stripe_id: checkout_session.customer)
line_items.each do |line_item|
product_id = line_item.price.product
tool_id = determine_tool_id(product_id)
Subscription.create(
user: user,
subscription_id: checkout_session.subscription,
plan_id: tool_id,
interval: line_item.price.recurring.interval,
status: 'active',
current_period_start: Time.at(checkout_session.subscription.current_period_start).to_datetime,
current_period_end: Time.at(checkout_session.subscription.current_period_end).to_datetime
)
end
end
字符串
1条答案
按热度按时间bpsygsoo1#
一个
subscription
模式的CheckoutSession只能创建一个订阅,无法使用一个CheckoutSession创建多个订阅。