Rails: как обрабатывать несколько подписок для одного пользователя

#ruby-on-rails

#ruby-on-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
  

Ответ №1:

См. Документ: 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

Надеюсь, это поможет 🙂