Method: Wco::SubscriptionsController#create

Defined in:
app/controllers/wco/subscriptions_controller.rb

#createObject

A stripe subscription is currently single-item only.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/controllers/wco/subscriptions_controller.rb', line 11

def create
  @subscription = Wco::Subscription.new params[:subscription].permit!
  authorize! :create, @subscription

  @subscription.leadset_id = Leadset.where({ customer_id: params[:subscription][:customer_id] }).first&.id
  @subscription.price   = Wco::Price.find_by price_id: params[:subscription][:price_id]
  @subscription.product = @subscription.price.product

  if params[:is_stripe]
    payment_methods = Stripe::Customer.list_payment_methods( params[:subscription][:customer_id] ).data
    params = {
      customer: params[:subscription][:customer_id],
      default_payment_method: payment_methods[0][:id],
      items: [
        { price:    params[:subscription][:price_id],
          quantity: params[:subscription][:quantity],
        },
      ],
    }
    @stripe_subscription = Stripe::Subscription.create( params )
    flash_notice @stripe_subscription
  end


  flag = @subscription.save
  if flag
    flash_notice @subscription
    redirect_to action: :show, id: @subscription.id
  else
    flash_alert @subscription
    redirect_to action: :new
  end
end