Class: PaymentSessions::Stripe

Inherits:
PaymentSession
  • Object
show all
Defined in:
app/models/spree/payment_sessions/stripe.rb

Instance Method Summary collapse

Instance Method Details

#accepted?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'app/models/spree/payment_sessions/stripe.rb', line 29

def accepted?
  payment_method.payment_intent_accepted?(stripe_payment_intent)
end

#charge_not_required?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'app/models/spree/payment_sessions/stripe.rb', line 37

def charge_not_required?
  payment_method.payment_intent_charge_not_required?(stripe_payment_intent)
end

#client_secretObject



10
11
12
# File 'app/models/spree/payment_sessions/stripe.rb', line 10

def client_secret
  external_data&.dig('client_secret')
end

#ephemeral_key_secretObject



14
15
16
# File 'app/models/spree/payment_sessions/stripe.rb', line 14

def ephemeral_key_secret
  external_data&.dig('ephemeral_key_secret')
end

#find_or_create_payment!(metadata = {}) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
# File 'app/models/spree/payment_sessions/stripe.rb', line 41

def find_or_create_payment!( = {})
  return unless persisted?
  return payment if payment.present?

  SpreeStripe::CreatePayment.new(
    order: order,
    payment_intent: self,
    gateway: payment_method,
    amount: amount
  ).call
end

#stripe_chargeObject



22
23
24
25
26
27
# File 'app/models/spree/payment_sessions/stripe.rb', line 22

def stripe_charge
  @stripe_charge ||= begin
    latest_charge = stripe_payment_intent.latest_charge
    latest_charge.present? ? payment_method.retrieve_charge(latest_charge) : nil
  end
end

#stripe_idObject

Duck-type interface consumed by the CompleteOrder and CreatePayment services



6
7
8
# File 'app/models/spree/payment_sessions/stripe.rb', line 6

def stripe_id
  external_id
end

#stripe_payment_intentObject



18
19
20
# File 'app/models/spree/payment_sessions/stripe.rb', line 18

def stripe_payment_intent
  @stripe_payment_intent ||= payment_method.retrieve_payment_intent(external_id)
end

#successful?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'app/models/spree/payment_sessions/stripe.rb', line 33

def successful?
  stripe_payment_intent.status == 'succeeded'
end