3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'app/services/tang/save_card.rb', line 3
def self.call(customer, token)
if customer.card.present?
card = customer.card
else
card = Card.new(customer: customer)
end
begin
if customer.stripe_id.present?
cu = Stripe::Customer.retrieve(customer.stripe_id)
cu.source = token
cu.save
else
cu = Stripe::Customer.create(
source: token,
email: customer.email
)
customer.stripe_id = cu.id
customer.save!
end
stripe_card = Stripe::Customer.retrieve_source(
cu.id,
cu.default_source,
)
card.update_from_stripe(stripe_card)
rescue Stripe::StripeError => e
card.errors.add(:base, :invalid, message: e.message)
end
return card
end
|