discourse-subscriptions/app/controllers/subscriptions_controller.rb

42 lines
888 B
Ruby
Raw Normal View History

2019-10-13 18:52:43 -04:00
# frozen_string_literal: true
module DiscoursePatrons
class SubscriptionsController < ::ApplicationController
include DiscoursePatrons::Stripe
before_action :set_api_key
def create
2019-10-16 21:07:06 -04:00
begin
2019-10-23 20:37:20 -04:00
plan = ::Stripe::Plan.retrieve(params[:plan])
@subscription = ::Stripe::Subscription.create(
2019-10-16 21:07:06 -04:00
customer: params[:customer],
2019-10-23 20:37:20 -04:00
items: [ { plan: params[:plan] } ]
2019-10-16 21:07:06 -04:00
)
2019-10-23 20:37:20 -04:00
group = plan_group(plan)
if subscription_ok && group
2019-10-16 21:07:06 -04:00
group.add(current_user)
end
2019-10-23 20:37:20 -04:00
render_json_dump @subscription
2019-10-16 21:07:06 -04:00
rescue ::Stripe::InvalidRequestError => e
return render_json_error e.message
end
end
private
2019-10-23 20:37:20 -04:00
def plan_group(plan)
Group.find_by_name(plan[:metadata][:group_name])
end
def subscription_ok
['active', 'trialing'].include?(@subscription[:status])
2019-10-13 18:52:43 -04:00
end
end
end