houdini/lib/construct/construct_billing_subscription.rb

21 lines
655 B
Ruby

require 'stripe'
require 'active_support/core_ext'
module ConstructBillingSubscription
def self.with_stripe(np, billing_plan)
raise ArgumentError.new("Billing plan not found") if billing_plan.nil?
trial_end = QueryBillingSubscriptions.currently_in_trial?(np.id) ? (np.created_at + 15.days).to_i : nil
customer = Stripe::Customer.retrieve np.active_card.stripe_customer_id
stripe_subscription = customer.subscriptions.create({
plan: billing_plan.stripe_plan_id,
trial_end: trial_end
})
return {
billing_plan_id: billing_plan.id,
stripe_subscription_id: stripe_subscription.id,
status: stripe_subscription.status
}
end
end