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', '2223000010309703']
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 Spree::Gateway

FROM_DOLLAR_TO_CENT_RATE

Constants inherited from PaymentMethod

PaymentMethod::DISPLAY

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Spree::Gateway

#disable_customer_profile, #exchange_multiplier, #method_missing, #method_type, #options, #payment_source_class, #provider, #reusable_sources, #sources_by_order, #supports?

Methods inherited from PaymentMethod

#auto_capture?, #available_for_order?, find_with_destroyed, #method_type, #payment_source_class, providers, #reusable_sources, #source_required?, #store_credit?, #supports?

Methods inherited from Base

belongs_to_required_by_default, page, spree_base_scopes

Methods included from Preferences::Preferable

#clear_preferences, #default_preferences, #defined_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_type, #set_preference

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



76
77
78
# File 'app/models/spree/gateway/bogus.rb', line 76

def actions
  %w(capture void credit)
end

#authorize(_money, credit_card, _options = {}) ⇒ Object



29
30
31
32
33
34
35
36
# File 'app/models/spree/gateway/bogus.rb', line 29

def authorize(_money, credit_card, _options = {})
  profile_id = credit_card.gateway_customer_profile_id
  if VALID_CCS.include?(credit_card.number) || (profile_id&.starts_with?('BGS-'))
    ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345', avs_result: { code: 'D' })
  else
    ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', { message: 'Bogus Gateway: Forced failure' }, test: true)
  end
end

#cancel(_response_code) ⇒ Object



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

def cancel(_response_code)
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345')
end

#capture(_money, authorization, _gateway_options) ⇒ Object



51
52
53
54
55
56
57
# File 'app/models/spree/gateway/bogus.rb', line 51

def capture(_money, authorization, _gateway_options)
  if authorization == '12345'
    ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true)
  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
25
26
27
# File 'app/models/spree/gateway/bogus.rb', line 20

def create_profile(payment)
  return if payment.source.has_payment_profile?

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

#credit(_money, _credit_card, _response_code, _options = {}) ⇒ Object



47
48
49
# File 'app/models/spree/gateway/bogus.rb', line 47

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

Returns:

  • (Boolean)


72
73
74
# File 'app/models/spree/gateway/bogus.rb', line 72

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



38
39
40
41
42
43
44
45
# File 'app/models/spree/gateway/bogus.rb', line 38

def purchase(_money, credit_card, _options = {})
  profile_id = credit_card.gateway_customer_profile_id
  if VALID_CCS.include?(credit_card.number) || (profile_id&.starts_with?('BGS-'))
    ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345', avs_result: { code: 'M' })
  else
    ActiveMerchant::Billing::Response.new(false, 'Bogus Gateway: Forced failure', message: 'Bogus Gateway: Forced failure', test: true)
  end
end

#test?Boolean

Returns:

  • (Boolean)


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

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



59
60
61
# File 'app/models/spree/gateway/bogus.rb', line 59

def void(_response_code, _credit_card, _options = {})
  ActiveMerchant::Billing::Response.new(true, 'Bogus Gateway: Forced success', {}, test: true, authorization: '12345')
end