Initial Commit
Co-authored-by: Subin <subinthattaparambil@gmail.com> Co-authored-by: Manoj <manojmj92@gmail.com> Co-authored-by: Nithin <webofnithin@gmail.com>
This commit is contained in:
83
app/services/subscription/chargebee_service.rb
Normal file
83
app/services/subscription/chargebee_service.rb
Normal file
@@ -0,0 +1,83 @@
|
||||
class Subscription::ChargebeeService
|
||||
class << self
|
||||
def create_subscription(account)
|
||||
begin
|
||||
result = ChargeBee::Subscription.create({
|
||||
plan_id: Plan.paid_plan.id,
|
||||
customer: {
|
||||
email: account.users.administrator.try(:first).try(:email),
|
||||
first_name: account.name,
|
||||
company: account.name
|
||||
}
|
||||
})
|
||||
subscription = account.subscription
|
||||
subscription.stripe_customer_id = result.subscription.customer_id
|
||||
subscription.save
|
||||
rescue => e
|
||||
Raven.capture_exception(e)
|
||||
end
|
||||
end
|
||||
|
||||
def update_subscription(account)
|
||||
begin
|
||||
subscription = account.subscription
|
||||
agents_count = account.users.count
|
||||
ChargeBee::Subscription.update(subscription.stripe_customer_id, { plan_quantity: agents_count })
|
||||
rescue => e
|
||||
Raven.capture_exception(e)
|
||||
end
|
||||
end
|
||||
|
||||
def cancel_subscription(account)
|
||||
begin
|
||||
subscription = account.subscription
|
||||
ChargeBee::Subscription.delete(subscription.stripe_customer_id)
|
||||
rescue => e
|
||||
Raven.capture_exception(e)
|
||||
end
|
||||
end
|
||||
|
||||
def reactivate_subscription(account)
|
||||
begin
|
||||
subscription = account.subscription
|
||||
ChargeBee::Subscription.reactivate(subscription.stripe_customer_id)
|
||||
subscription.active!
|
||||
rescue => e
|
||||
Raven.capture_exception(e)
|
||||
end
|
||||
end
|
||||
|
||||
def deactivate_subscription(account)
|
||||
begin
|
||||
subscription = account.subscription
|
||||
ChargeBee::Subscription.cancel(subscription.stripe_customer_id)
|
||||
subscription.cancelled!
|
||||
rescue => e
|
||||
Raven.capture_exception(e)
|
||||
end
|
||||
end
|
||||
|
||||
def hosted_page_url(account)
|
||||
begin
|
||||
subscription = account.subscription
|
||||
|
||||
|
||||
# result = ChargeBee::HostedPage.checkout_existing({
|
||||
# :subscription => {
|
||||
# :id => subscription.stripe_customer_id,
|
||||
# :plan_id => Plan.paid_plan.id
|
||||
# }
|
||||
# })
|
||||
|
||||
result = ChargeBee::HostedPage.update_payment_method({
|
||||
:customer => {
|
||||
:id => subscription.stripe_customer_id
|
||||
}
|
||||
})
|
||||
result.hosted_page.url
|
||||
rescue => e
|
||||
Raven.capture_exception(e)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user