app/services/stripe_invoice_events.rb
class StripeInvoiceEvents
attr_reader :event
attr_reader :user
def initialize(event)
@event = event
@user = User.find_by(stripe_customer_id: stripe_customer)
end
def payment_succeeded
return unless user.present?
# Stripe sends receipts currently, so we don't need to.
#InvoicesMailer.dispatch_invoice(user.id).deliver_now!
end
def payment_failed
return unless user.present?
# todo style email
#InvoicesMailer.problem_with_payment(user.id).deliver_now!
if stripe_invoice.next_payment_attempt.blank?
user.update(selected_billing_plan_id: 1)
# todo style email
#InvoicesMailer.downgraded_to_starter(user.id).deliver_now!
end
end
private
def stripe_customer
stripe_invoice.customer
end
def stripe_invoice
event.data.object
end
end