首页 > 解决方案 > Rails:如何为一个用户处理多个订阅

问题描述

我可以为一个用户分配多个订阅,但问题是每次我为一个用户分配一个新订阅时,我都会覆盖subscription_id.

我仍然可以通过 向用户显示他的所有订阅Stripe::Subscription.list(current_user.stripe_id),但无法显示特定订阅,只能显示创建的最后一个订阅。

我目前正在使用的代码:

customer = if current_user.stripe_id?
             Stripe::Customer.retrieve(current_user.stripe_id)
           else
             Stripe::Customer.create(
               email: current_user.email,
               source: params[:stripeToken]
             )
           end

begin
  product = Stripe::Product.retrieve(@order.project)
rescue Stripe::InvalidRequestError => e
  if e.response.http_status == 404
  product = Stripe::Product.create(
    id: @order.project, # Unqiue Identifier -> In Ordnung etc
    name: @order.project, # Produkt name -> In Ordnung
    statement_descriptor: 'Mediadesign Web',
    metadata: {"Module" => @order.moduls},
    type: 'service'
  )
  end
 end

begin
  plan = Stripe::Plan.retrieve(product.id)
rescue Stripe::InvalidRequestError => e
  if e.response.http_status == 404
    plan  = Stripe::Plan.create(
      id: product.id,
      nickname: @order.nickname,
      product: product.id,
      amount: @order.price * 100,
      currency: 'eur',
      interval: 'month'
    )
  end
end

subscription = customer.subscriptions.create(
  plan: plan.id
)

current_user.update(
 stripe_id: customer.id,
 subscription_id: subscription.id
 )

  redirect_to webdesigns_order_subscriptions_path

标签: ruby-on-rails

解决方案


请参阅文档:https ://stripe.com/docs/api/subscriptions

基本上这个概念是:

订阅允许您定期向客户收费。订阅将客户与您创建的特定计划联系起来。

计划定义订阅的基本价格、货币和计费周期

订阅项允许您创建具有多个计划的客户订阅,从而轻松表示复杂的计费关系。

简而言之,客户将通过计划订阅。

您可以通过传递 plan_id 来检索计划...参见文档:https ://stripe.com/docs/api/plans/retrieve

如果您想获取特定订阅...请参阅文档:https ://stripe.com/docs/api/subscriptions/retrieve

对于特定的 Subscription_item... 参见文档:https ://stripe.com/docs/api/subscription_items/object

对于计划 https://stripe.com/docs/api/plans

希望能帮助到你 :)


推荐阅读