Class: Gateway::StripeGateway

Inherits:
Gateway
  • Object
show all
Defined in:
app/models/spree/gateway/stripe_gateway.rb

Constant Summary collapse

CARD_TYPE_MAPPING =
{
  'American Express' => 'american_express',
  'Diners Club' => 'diners_club',
  'Visa' => 'visa'
}

Instance Method Summary collapse

Instance Method Details

#authorize(money, creditcard, gateway_options) ⇒ Object



28
29
30
# File 'app/models/spree/gateway/stripe_gateway.rb', line 28

def authorize(money, creditcard, gateway_options)
  provider.authorize(*options_for_purchase_or_auth(money, creditcard, gateway_options))
end

#cancel(response_code) ⇒ Object



44
45
46
# File 'app/models/spree/gateway/stripe_gateway.rb', line 44

def cancel(response_code)
  provider.void(response_code, {})
end

#capture(money, response_code, gateway_options) ⇒ Object



32
33
34
# File 'app/models/spree/gateway/stripe_gateway.rb', line 32

def capture(money, response_code, gateway_options)
  provider.capture(money, response_code, gateway_options)
end

#create_profile(payment) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/models/spree/gateway/stripe_gateway.rb', line 48

def create_profile(payment)
  return unless payment.source.gateway_customer_profile_id.nil?
  options = {
    email: payment.order.email,
    login: preferred_secret_key,
  }.merge! address_for(payment)

  source = update_source!(payment.source)
  if source.number.blank? && source.gateway_payment_profile_id.present?
    creditcard = source.gateway_payment_profile_id
  else
    creditcard = source
  end

  response = provider.store(creditcard, options)
  if response.success?
    payment.source.update_attributes!({
      cc_type: payment.source.cc_type, # side-effect of update_source!
      gateway_customer_profile_id: response.params['id'],
      gateway_payment_profile_id: response.params['default_source'] || response.params['default_card']
    })

  else
    payment.send(:gateway_error, response.message)
  end
end

#credit(money, creditcard, response_code, gateway_options) ⇒ Object



36
37
38
# File 'app/models/spree/gateway/stripe_gateway.rb', line 36

def credit(money, creditcard, response_code, gateway_options)
  provider.refund(money, response_code, {})
end

#method_typeObject



12
13
14
# File 'app/models/spree/gateway/stripe_gateway.rb', line 12

def method_type
  'stripe'
end

#payment_profiles_supported?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'app/models/spree/gateway/stripe_gateway.rb', line 20

def payment_profiles_supported?
  true
end

#provider_classObject



16
17
18
# File 'app/models/spree/gateway/stripe_gateway.rb', line 16

def provider_class
  ActiveMerchant::Billing::StripeGateway
end

#purchase(money, creditcard, gateway_options) ⇒ Object



24
25
26
# File 'app/models/spree/gateway/stripe_gateway.rb', line 24

def purchase(money, creditcard, gateway_options)
  provider.purchase(*options_for_purchase_or_auth(money, creditcard, gateway_options))
end

#void(response_code, creditcard, gateway_options) ⇒ Object



40
41
42
# File 'app/models/spree/gateway/stripe_gateway.rb', line 40

def void(response_code, creditcard, gateway_options)
  provider.void(response_code, {})
end