Ability to change stored credit card

This commit is contained in:
Kyle Drake 2015-08-12 15:04:47 -05:00
parent b6686531c7
commit ec306f9059
6 changed files with 86 additions and 4 deletions

View file

@ -334,3 +334,29 @@ get '/settings/unsubscribe_email/?' do
end
erb :'settings/account/unsubscribe'
end
post '/settings/update_card' do
require_login
customer = Stripe::Customer.retrieve current_site.stripe_customer_id
old_card_ids = customer.sources.collect {|s| s.id}
begin
customer.sources.create source: params[:stripe_token]
rescue Stripe::InvalidRequestError => e
if e.message.match /cannot use a.+token more than once/
flash[:error] = 'Card is already being used.'
redirect '/settings#billing'
else
raise e
end
end
old_card_ids.each do |card_id|
customer.sources.retrieve(card_id).delete
end
flash[:success] = 'Card information updated.'
redirect '/settings#billing'
end