Class: Spree::Gateway::Bogus

Inherits:
Spree::Gateway show all
Defined in:
app/models/spree/gateway/bogus.rb

Direct Known Subclasses

BogusSimple

Constant Summary collapse

TEST_VISA =
['4111111111111111','4012888888881881','4222222222222']
TEST_MC =
['5500000000000004','5555555555554444','5105105105105100']
TEST_AMEX =
['378282246310005','371449635398431','378734493671000','340000000000009']
TEST_DISC =
['6011000000000004','6011111111111117','6011000990139424']
VALID_CCS =
['1', TEST_VISA, TEST_MC, TEST_AMEX, TEST_DISC].flatten

Constants inherited from PaymentMethod

PaymentMethod::DISPLAY

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Spree::Gateway

current, #method_missing, #method_type, #options, #payment_source_class, #provider, #supports?

Methods inherited from PaymentMethod

active?, #auto_capture?, available, find_with_destroyed, #method_type, #payment_source_class, providers, #source_required?, #supports?

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Spree::Gateway

Instance Attribute Details

#testObject

Returns the value of attribute test


10
11
12
# File 'app/models/spree/gateway/bogus.rb', line 10

def test
  @test
end

Instance Method Details

#actionsObject


70
71
72
# File 'app/models/spree/gateway/bogus.rb', line 70

def actions
  %w(capture void credit)
end

#authorize(money, credit_card, options = {}) ⇒ Object


26
27
28
29
30
31
32
33
# File 'app/models/spree/gateway/bogus.rb', line 26

def authorize(money, credit_card, options = {})
  profile_id = credit_card.gateway_customer_profile_id
  if VALID_CCS.include? credit_card.number or (profile_id and profile_id.starts_with? 'BGS-')
    ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true, :authorization => '12345', :avs_result => { :code => 'A' })
  else
    ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', { :message => 'Bogus Gateway: Forced failure' }, :test => true)
  end
end

#capture(authorization, credit_card, gateway_options) ⇒ Object


48
49
50
51
52
53
54
55
# File 'app/models/spree/gateway/bogus.rb', line 48

def capture(authorization, credit_card, gateway_options)
  if authorization.response_code == '12345'
    ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true, :authorization => '67890')
  else
    ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', :error => 'Bogus Gateway: Forced failure', :test => true)
  end

end

#create_profile(payment) ⇒ Object


20
21
22
23
24
# File 'app/models/spree/gateway/bogus.rb', line 20

def create_profile(payment)
  # simulate the storage of credit card profile using remote service
  success = VALID_CCS.include? payment.source.number
  payment.source.update_attributes(:gateway_customer_profile_id => generate_profile_id(success))
end

#credit(money, credit_card, response_code, options = {}) ⇒ Object


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

def credit(money, credit_card, response_code, options = {})
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true, :authorization => '12345')
end

#payment_profiles_supported?Boolean


66
67
68
# File 'app/models/spree/gateway/bogus.rb', line 66

def payment_profiles_supported?
  true
end

#preferencesObject


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

def preferences
  {}
end

#provider_classObject


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

def provider_class
  self.class
end

#purchase(money, credit_card, options = {}) ⇒ Object


35
36
37
38
39
40
41
42
# File 'app/models/spree/gateway/bogus.rb', line 35

def purchase(money, credit_card, options = {})
  profile_id = credit_card.gateway_customer_profile_id
  if VALID_CCS.include? credit_card.number  or (profile_id and profile_id.starts_with? 'BGS-')
    ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true, :authorization => '12345', :avs_result => { :code => 'A' })
  else
    ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', :message => 'Bogus Gateway: Forced failure', :test => true)
  end
end

#test?Boolean


61
62
63
64
# File 'app/models/spree/gateway/bogus.rb', line 61

def test?
  # Test mode is not really relevant with bogus gateway (no such thing as live server)
  true
end

#void(response_code, credit_card, options = {}) ⇒ Object


57
58
59
# File 'app/models/spree/gateway/bogus.rb', line 57

def void(response_code, credit_card, options = {})
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, :test => true, :authorization => '12345')
end