Class: ActiveMerchant::Billing::MultiResponse
- Inherits:
-
Response
- Object
- Response
- ActiveMerchant::Billing::MultiResponse
show all
- Defined in:
- lib/active_merchant/billing/response.rb
Instance Attribute Summary collapse
Attributes inherited from Response
#authorization, #emv_authorization, #error_code, #message, #network_transaction_id, #params, #pending, #test
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Response
#failure?, #fraud_review?, #test?
Constructor Details
#initialize(use_first_response = false) ⇒ MultiResponse
Returns a new instance of MultiResponse.
56
57
58
59
60
|
# File 'lib/active_merchant/billing/response.rb', line 56
def initialize(use_first_response = false)
@responses = []
@use_first_response = use_first_response
@primary_response = nil
end
|
Instance Attribute Details
#primary_response ⇒ Object
Returns the value of attribute primary_response.
54
55
56
|
# File 'lib/active_merchant/billing/response.rb', line 54
def primary_response
@primary_response
end
|
#responses ⇒ Object
Returns the value of attribute responses.
54
55
56
|
# File 'lib/active_merchant/billing/response.rb', line 54
def responses
@responses
end
|
Class Method Details
.run(use_first_response = false, &block) ⇒ Object
50
51
52
|
# File 'lib/active_merchant/billing/response.rb', line 50
def self.run(use_first_response = false, &block)
new(use_first_response).tap(&block)
end
|
Instance Method Details
#<<(response) ⇒ Object
77
78
79
80
81
82
83
|
# File 'lib/active_merchant/billing/response.rb', line 77
def <<(response)
if response.is_a?(MultiResponse)
response.responses.each { |r| @responses << r }
else
@responses << response
end
end
|
#avs_result ⇒ Object
89
90
91
92
93
94
|
# File 'lib/active_merchant/billing/response.rb', line 89
def avs_result
return @primary_response.try(:avs_result) if @use_first_response
result = responses.reverse.find { |r| r.avs_result['code'].present? }
result.try(:avs_result) || responses.last.try(:avs_result)
end
|
#cvv_result ⇒ Object
96
97
98
99
100
101
|
# File 'lib/active_merchant/billing/response.rb', line 96
def cvv_result
return @primary_response.try(:cvv_result) if @use_first_response
result = responses.reverse.find { |r| r.cvv_result['code'].present? }
result.try(:cvv_result) || responses.last.try(:cvv_result)
end
|
#process(ignore_result = false) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/active_merchant/billing/response.rb', line 62
def process(ignore_result = false)
return unless success?
response = yield
self << response
unless ignore_result
if @use_first_response && response.success?
@primary_response ||= response
else
@primary_response = response
end
end
end
|
#success? ⇒ Boolean
85
86
87
|
# File 'lib/active_merchant/billing/response.rb', line 85
def success?
(primary_response ? primary_response.success? : true)
end
|