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)


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

def accepted?
  payment_method.payment_intent_accepted?(stripe_payment_intent)
end

#charge_not_required?Boolean

Returns:

  • (Boolean)


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

def charge_not_required?
  payment_method.payment_intent_charge_not_required?(stripe_payment_intent)
end

#client_secretObject



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

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

#ephemeral_key_secretObject



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

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

#find_or_create_payment!(metadata = {}) ⇒ Object



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

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



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

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 matching SpreeStripe::PaymentIntent This allows reuse of CompleteOrder and CreatePayment services



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

def stripe_id
  external_id
end

#stripe_payment_intentObject



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

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

#successful?Boolean

Returns:

  • (Boolean)


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

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