Sha256: ecfb85508a0dc5175a4fde16faaa739974d6c5d24912cd5ba43d49f8119fefc8
Contents?: true
Size: 1.25 KB
Versions: 4
Compression:
Stored size: 1.25 KB
Contents
module Wbase class UpdateSubscription attr_reader :subscription, :user, :errors, :params def initialize(user, params) @params = params @user = user @errors = [] end def subscription user.subscription end def stripe_customer @stripe_customer ||= subscription.stripe_customer end def call Rails.logger.info("Updating Stripe Customer for #{ user.email }") card = stripe_customer.sources.create(card: params[:credit_card_token]) card.save stripe_customer.default_source = card.id stripe_customer.save subscription.update!(params) Rails.logger.info stripe_customer rescue Stripe::CardError => e # Since it's a decline, Stripe::CardError will be caught body = e.json_body err = body[:error] @errors << body[:error] puts "Status is: #{e.http_status}" puts "Type is: #{err[:type]}" puts "Code is: #{err[:code]}" # param is '' in this case puts "Param is: #{err[:param]}" puts "Message is: #{err[:message]}" rescue Stripe::InvalidRequestError => e Rails.logger.error "Stripe error while updating card: #{ e.message }" @errors << e.message end def valid? errors.empty? end end end
Version data entries
4 entries across 4 versions & 1 rubygems