# _ _ # __| |_ _ _(_)_ __ ___ # (_-< _| '_| | '_ \/ -_) # /__/\__|_| |_| .__/\___| # |_| # __ _ _ __| |_ ___ _ __ ___ _ _ # / _| || (_-< _/ _ \ ' \/ -_) '_| # \__|\_,_/__/\__\___/_|_|_\___|_| # # (c) 2013 stephan.com module StripeCustomer extend ActiveSupport::Concern included do before_destroy :remove_stripe_customer end def remove_stripe_customer stripe_customer.delete self.stripe_customer_id = nil self.save end def stripe_customer if self.stripe_customer_id begin customer = Stripe::Customer.retrieve(self.stripe_customer_id) # TODO make this configurable return customer rescue logger.info "There was a problem fetching the customer from Stripe" end end begin customer = self.class.create_stripe_customer( :email => self.email ) rescue logger.info 'There was error creating the Stripe customer' end self.stripe_customer_id = customer.id self.save customer end module ClassMethods def create_stripe_customer(params = {}) begin Stripe::Customer.create( :email => params[:email] ) rescue 'There was an error adding a customer' end end end end