activemerchant 1.86.0 → 1.87.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG +22 -0
- data/lib/active_merchant/billing/avs_result.rb +0 -1
- data/lib/active_merchant/billing/check.rb +1 -1
- data/lib/active_merchant/billing/compatibility.rb +3 -3
- data/lib/active_merchant/billing/credit_card.rb +1 -1
- data/lib/active_merchant/billing/credit_card_formatting.rb +3 -3
- data/lib/active_merchant/billing/credit_card_methods.rb +6 -4
- data/lib/active_merchant/billing/gateway.rb +9 -9
- data/lib/active_merchant/billing/gateways/adyen.rb +48 -7
- data/lib/active_merchant/billing/gateways/allied_wallet.rb +1 -1
- data/lib/active_merchant/billing/gateways/authorize_net.rb +8 -8
- data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +1 -1
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +15 -15
- data/lib/active_merchant/billing/gateways/axcessms.rb +2 -2
- data/lib/active_merchant/billing/gateways/balanced.rb +11 -11
- data/lib/active_merchant/billing/gateways/bank_frick.rb +1 -1
- data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +5 -5
- data/lib/active_merchant/billing/gateways/beanstream.rb +3 -2
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +5 -5
- data/lib/active_merchant/billing/gateways/blue_pay.rb +5 -5
- data/lib/active_merchant/billing/gateways/blue_snap.rb +5 -5
- data/lib/active_merchant/billing/gateways/bogus.rb +3 -3
- data/lib/active_merchant/billing/gateways/borgun.rb +5 -6
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +18 -12
- data/lib/active_merchant/billing/gateways/bridge_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/cams.rb +12 -12
- data/lib/active_merchant/billing/gateways/card_stream.rb +9 -9
- data/lib/active_merchant/billing/gateways/cardknox.rb +4 -4
- data/lib/active_merchant/billing/gateways/cardprocess.rb +1 -1
- data/lib/active_merchant/billing/gateways/cashnet.rb +2 -2
- data/lib/active_merchant/billing/gateways/cc5.rb +2 -2
- data/lib/active_merchant/billing/gateways/cenpos.rb +2 -2
- data/lib/active_merchant/billing/gateways/checkout.rb +1 -1
- data/lib/active_merchant/billing/gateways/clearhaus.rb +12 -12
- data/lib/active_merchant/billing/gateways/commercegate.rb +3 -3
- data/lib/active_merchant/billing/gateways/creditcall.rb +2 -2
- data/lib/active_merchant/billing/gateways/credorax.rb +13 -3
- data/lib/active_merchant/billing/gateways/ct_payment.rb +6 -6
- data/lib/active_merchant/billing/gateways/culqi.rb +1 -1
- data/lib/active_merchant/billing/gateways/cyber_source.rb +8 -8
- data/lib/active_merchant/billing/gateways/data_cash.rb +2 -2
- data/lib/active_merchant/billing/gateways/dibs.rb +2 -2
- data/lib/active_merchant/billing/gateways/digitzs.rb +5 -5
- data/lib/active_merchant/billing/gateways/ebanx.rb +1 -1
- data/lib/active_merchant/billing/gateways/efsnet.rb +4 -4
- data/lib/active_merchant/billing/gateways/elavon.rb +3 -3
- data/lib/active_merchant/billing/gateways/element.rb +4 -4
- data/lib/active_merchant/billing/gateways/epay.rb +1 -1
- data/lib/active_merchant/billing/gateways/eway.rb +2 -2
- data/lib/active_merchant/billing/gateways/eway_managed.rb +5 -5
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +1 -1
- data/lib/active_merchant/billing/gateways/exact.rb +1 -1
- data/lib/active_merchant/billing/gateways/federated_canada.rb +1 -1
- data/lib/active_merchant/billing/gateways/first_giving.rb +1 -1
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +7 -7
- data/lib/active_merchant/billing/gateways/flo2cash.rb +2 -2
- data/lib/active_merchant/billing/gateways/forte.rb +11 -7
- data/lib/active_merchant/billing/gateways/garanti.rb +5 -5
- data/lib/active_merchant/billing/gateways/global_collect.rb +2 -3
- data/lib/active_merchant/billing/gateways/hdfc.rb +2 -2
- data/lib/active_merchant/billing/gateways/hps.rb +3 -3
- data/lib/active_merchant/billing/gateways/inspire.rb +7 -7
- data/lib/active_merchant/billing/gateways/iridium.rb +14 -14
- data/lib/active_merchant/billing/gateways/itransact.rb +4 -4
- data/lib/active_merchant/billing/gateways/iveri.rb +3 -3
- data/lib/active_merchant/billing/gateways/jetpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/jetpay_v2.rb +2 -2
- data/lib/active_merchant/billing/gateways/latitude19.rb +1 -1
- data/lib/active_merchant/billing/gateways/linkpoint.rb +3 -3
- data/lib/active_merchant/billing/gateways/litle.rb +2 -2
- data/lib/active_merchant/billing/gateways/maxipago.rb +1 -1
- data/lib/active_merchant/billing/gateways/mercado_pago.rb +7 -13
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +3 -3
- data/lib/active_merchant/billing/gateways/merchant_one.rb +4 -4
- data/lib/active_merchant/billing/gateways/merchant_partners.rb +1 -1
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +3 -3
- data/lib/active_merchant/billing/gateways/mercury.rb +2 -2
- data/lib/active_merchant/billing/gateways/metrics_global.rb +2 -2
- data/lib/active_merchant/billing/gateways/micropayment.rb +1 -1
- data/lib/active_merchant/billing/gateways/migs.rb +4 -6
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +2 -2
- data/lib/active_merchant/billing/gateways/moneris.rb +85 -56
- data/lib/active_merchant/billing/gateways/moneris_us.rb +9 -9
- data/lib/active_merchant/billing/gateways/money_movers.rb +1 -1
- data/lib/active_merchant/billing/gateways/mundipagg.rb +1 -1
- data/lib/active_merchant/billing/gateways/nab_transact.rb +1 -1
- data/lib/active_merchant/billing/gateways/net_registry.rb +2 -2
- data/lib/active_merchant/billing/gateways/netaxept.rb +6 -6
- data/lib/active_merchant/billing/gateways/netbanx.rb +36 -36
- data/lib/active_merchant/billing/gateways/netbilling.rb +2 -2
- data/lib/active_merchant/billing/gateways/netpay.rb +1 -1
- data/lib/active_merchant/billing/gateways/nmi.rb +2 -2
- data/lib/active_merchant/billing/gateways/ogone.rb +7 -7
- data/lib/active_merchant/billing/gateways/omise.rb +6 -6
- data/lib/active_merchant/billing/gateways/opp.rb +1 -1
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +5 -0
- data/lib/active_merchant/billing/gateways/orbital.rb +9 -7
- data/lib/active_merchant/billing/gateways/pac_net_raven.rb +6 -6
- data/lib/active_merchant/billing/gateways/pagarme.rb +1 -1
- data/lib/active_merchant/billing/gateways/pay_conex.rb +1 -1
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +8 -5
- data/lib/active_merchant/billing/gateways/pay_hub.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_junction.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_secure.rb +3 -3
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +8 -8
- data/lib/active_merchant/billing/gateways/payeezy.rb +1 -1
- data/lib/active_merchant/billing/gateways/payex.rb +8 -8
- data/lib/active_merchant/billing/gateways/payflow.rb +13 -13
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +4 -4
- data/lib/active_merchant/billing/gateways/payflow_express.rb +1 -1
- data/lib/active_merchant/billing/gateways/payment_express.rb +10 -10
- data/lib/active_merchant/billing/gateways/paymentez.rb +3 -0
- data/lib/active_merchant/billing/gateways/paymill.rb +4 -4
- data/lib/active_merchant/billing/gateways/payscout.rb +1 -1
- data/lib/active_merchant/billing/gateways/paystation.rb +1 -1
- data/lib/active_merchant/billing/gateways/payu_in.rb +3 -3
- data/lib/active_merchant/billing/gateways/payu_latam.rb +1 -1
- data/lib/active_merchant/billing/gateways/payway.rb +2 -2
- data/lib/active_merchant/billing/gateways/plugnpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/pro_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/psigate.rb +1 -1
- data/lib/active_merchant/billing/gateways/psl_card.rb +3 -3
- data/lib/active_merchant/billing/gateways/qbms.rb +1 -1
- data/lib/active_merchant/billing/gateways/quantum.rb +7 -7
- data/lib/active_merchant/billing/gateways/quickbooks.rb +6 -6
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +1 -1
- data/lib/active_merchant/billing/gateways/qvalent.rb +2 -2
- data/lib/active_merchant/billing/gateways/realex.rb +33 -13
- data/lib/active_merchant/billing/gateways/redsys.rb +2 -2
- data/lib/active_merchant/billing/gateways/safe_charge.rb +2 -2
- data/lib/active_merchant/billing/gateways/sage.rb +6 -6
- data/lib/active_merchant/billing/gateways/sage_pay.rb +7 -7
- data/lib/active_merchant/billing/gateways/secure_net.rb +1 -1
- data/lib/active_merchant/billing/gateways/secure_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +1 -1
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +1 -1
- data/lib/active_merchant/billing/gateways/skip_jack.rb +5 -6
- data/lib/active_merchant/billing/gateways/smart_ps.rb +7 -7
- data/lib/active_merchant/billing/gateways/so_easy_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/stripe.rb +5 -5
- data/lib/active_merchant/billing/gateways/swipe_checkout.rb +2 -2
- data/lib/active_merchant/billing/gateways/telr.rb +1 -1
- data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +2 -2
- data/lib/active_merchant/billing/gateways/transact_pro.rb +5 -5
- data/lib/active_merchant/billing/gateways/transax.rb +1 -1
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +7 -7
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +17 -16
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +2 -2
- data/lib/active_merchant/billing/gateways/vanco.rb +2 -2
- data/lib/active_merchant/billing/gateways/verifi.rb +1 -1
- data/lib/active_merchant/billing/gateways/viaklix.rb +4 -4
- data/lib/active_merchant/billing/gateways/visanet_peru.rb +4 -4
- data/lib/active_merchant/billing/gateways/wirecard.rb +2 -2
- data/lib/active_merchant/billing/gateways/worldpay.rb +24 -13
- data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +2 -2
- data/lib/active_merchant/billing/response.rb +7 -7
- data/lib/active_merchant/country.rb +4 -4
- data/lib/active_merchant/network_connection_retries.rb +7 -9
- data/lib/active_merchant/version.rb +1 -1
- data/lib/support/gateway_support.rb +3 -3
- data/lib/support/ssl_verify.rb +1 -1
- metadata +3 -3
@@ -141,7 +141,7 @@ module ActiveMerchant #:nodoc:
|
|
141
141
|
def initialize(options = {})
|
142
142
|
requires!(options, :login, :shared_secret)
|
143
143
|
@threeds_required = false
|
144
|
-
if
|
144
|
+
if options[:threeDSRequired]
|
145
145
|
ActiveMerchant.deprecated(THREEDSECURE_REQUIRED_DEPRECATION_MESSAGE)
|
146
146
|
@threeds_required = options[:threeDSRequired]
|
147
147
|
end
|
@@ -278,7 +278,7 @@ module ActiveMerchant #:nodoc:
|
|
278
278
|
end
|
279
279
|
|
280
280
|
def add_threeds_required(post, options)
|
281
|
-
add_pair(post, :threeDSRequired,
|
281
|
+
add_pair(post, :threeDSRequired, options[:threeds_required] || @threeds_required ? 'Y' : 'N')
|
282
282
|
end
|
283
283
|
|
284
284
|
def add_remote_address(post, options={})
|
@@ -334,13 +334,13 @@ module ActiveMerchant #:nodoc:
|
|
334
334
|
street_match = AVS_STREET_MATCH[response[:avscv2ResponseCode].to_s[2, 1]]
|
335
335
|
|
336
336
|
code = if postal_match == 'Y' && street_match == 'Y'
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
337
|
+
'M'
|
338
|
+
elsif postal_match == 'Y'
|
339
|
+
'P'
|
340
|
+
elsif street_match == 'Y'
|
341
|
+
'A'
|
342
|
+
else
|
343
|
+
'I'
|
344
344
|
end
|
345
345
|
|
346
346
|
AVSResult.new({
|
@@ -3,7 +3,7 @@ module ActiveMerchant #:nodoc:
|
|
3
3
|
class CardknoxGateway < Gateway
|
4
4
|
self.live_url = 'https://x1.cardknox.com/gateway'
|
5
5
|
|
6
|
-
self.supported_countries = ['US','CA','GB']
|
6
|
+
self.supported_countries = ['US', 'CA', 'GB']
|
7
7
|
self.default_currency = 'USD'
|
8
8
|
self.supported_cardtypes = [:visa, :master, :american_express, :discover, :diners_club, :jcb]
|
9
9
|
|
@@ -255,7 +255,7 @@ module ActiveMerchant #:nodoc:
|
|
255
255
|
def parse(body)
|
256
256
|
fields = {}
|
257
257
|
for line in body.split('&')
|
258
|
-
key, value = *line.scan(
|
258
|
+
key, value = *line.scan(%r{^(\w+)\=(.*)$}).flatten
|
259
259
|
fields[key] = CGI.unescape(value.to_s)
|
260
260
|
end
|
261
261
|
|
@@ -276,7 +276,7 @@ module ActiveMerchant #:nodoc:
|
|
276
276
|
amount: fields['xAuthAmount'],
|
277
277
|
masked_card_num: fields['xMaskedCardNumber'],
|
278
278
|
masked_account_number: fields['MaskedAccountNumber']
|
279
|
-
}.delete_if{|k, v| v.nil?}
|
279
|
+
}.delete_if { |k, v| v.nil? }
|
280
280
|
end
|
281
281
|
|
282
282
|
def commit(action, source_type, parameters)
|
@@ -320,7 +320,7 @@ module ActiveMerchant #:nodoc:
|
|
320
320
|
initial_parameters[:Hash] = "s/#{seed}/#{hash}/n" unless @options[:pin].blank?
|
321
321
|
parameters = initial_parameters.merge(parameters)
|
322
322
|
|
323
|
-
parameters.reject{|k, v| v.blank?}.collect{ |key, value| "x#{key}=#{CGI.escape(value.to_s)}" }.join('&')
|
323
|
+
parameters.reject { |k, v| v.blank? }.collect { |key, value| "x#{key}=#{CGI.escape(value.to_s)}" }.join('&')
|
324
324
|
end
|
325
325
|
end
|
326
326
|
end
|
@@ -189,7 +189,7 @@ module ActiveMerchant #:nodoc:
|
|
189
189
|
post[:authentication][:password] = @options[:password]
|
190
190
|
post[:authentication][:entityId] = @options[:entity_id]
|
191
191
|
post[:paymentType] = action
|
192
|
-
dot_flatten_hash(post).map {|key, value| "#{key}=#{CGI.escape(value.to_s)}"}.join('&')
|
192
|
+
dot_flatten_hash(post).map { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
|
193
193
|
end
|
194
194
|
|
195
195
|
def error_code_from(response)
|
@@ -136,11 +136,11 @@ module ActiveMerchant #:nodoc:
|
|
136
136
|
match = body.match(/<cngateway>(.*)<\/cngateway>/)
|
137
137
|
return nil unless match
|
138
138
|
|
139
|
-
Hash[CGI::parse(match[1]).map{|k,v| [k.to_sym,v.first]}]
|
139
|
+
Hash[CGI::parse(match[1]).map { |k, v| [k.to_sym, v.first] }]
|
140
140
|
end
|
141
141
|
|
142
142
|
def handle_response(response)
|
143
|
-
if (200...300).
|
143
|
+
if (200...300).cover?(response.code.to_i)
|
144
144
|
return response.body
|
145
145
|
elsif response.code.to_i == 302
|
146
146
|
return ssl_get(URI.parse(response['location']))
|
@@ -174,7 +174,7 @@ module ActiveMerchant #:nodoc:
|
|
174
174
|
|
175
175
|
def parse_element(response, node)
|
176
176
|
if node.has_elements?
|
177
|
-
node.elements.each{|element| parse_element(response, element) }
|
177
|
+
node.elements.each { |element| parse_element(response, element) }
|
178
178
|
else
|
179
179
|
response[node.name.underscore.to_sym] = node.text
|
180
180
|
end
|
@@ -188,7 +188,7 @@ module ActiveMerchant #:nodoc:
|
|
188
188
|
return unless text
|
189
189
|
|
190
190
|
if ActiveSupport::Inflector.method(:transliterate).arity == -2
|
191
|
-
ActiveSupport::Inflector.transliterate(text,'')
|
191
|
+
ActiveSupport::Inflector.transliterate(text, '')
|
192
192
|
else
|
193
193
|
text.gsub(/[^\x00-\x7F]+/, '')
|
194
194
|
end
|
@@ -8,7 +8,7 @@ module ActiveMerchant #:nodoc:
|
|
8
8
|
|
9
9
|
self.live_url = 'https://ww3.cenpos.net/6/transact.asmx'
|
10
10
|
|
11
|
-
self.supported_countries = %w(AD AI AG AR AU AT BS BB BE BZ BM BR BN BG CA HR CY CZ DK DM EE FI FR DE GR GD GY HK HU IS
|
11
|
+
self.supported_countries = %w(AD AI AG AR AU AT BS BB BE BZ BM BR BN BG CA HR CY CZ DK DM EE FI FR DE GR GD GY HK HU IS IL IT JP LV LI LT LU MY MT MX MC MS NL PA PL PT KN LC MF VC SM SG SK SI ZA ES SR SE CH TR GB US UY)
|
12
12
|
self.default_currency = 'USD'
|
13
13
|
self.money_format = :dollars
|
14
14
|
self.supported_cardtypes = [:visa, :master, :american_express, :discover]
|
@@ -219,7 +219,7 @@ module ActiveMerchant #:nodoc:
|
|
219
219
|
doc.remove_namespaces!
|
220
220
|
body = doc.xpath('//ProcessCreditCardResult')
|
221
221
|
body.children.each do |node|
|
222
|
-
if
|
222
|
+
if node.elements.size == 0
|
223
223
|
response[node.name.underscore.to_sym] = node.text
|
224
224
|
else
|
225
225
|
node.elements.each do |childnode|
|
@@ -187,7 +187,7 @@ module ActiveMerchant #:nodoc:
|
|
187
187
|
Nokogiri::XML(CGI.unescapeHTML(xml)).xpath('//response').children.each do |node|
|
188
188
|
if node.text?
|
189
189
|
next
|
190
|
-
elsif
|
190
|
+
elsif node.elements.size == 0
|
191
191
|
response[node.name.downcase.to_sym] = node.text
|
192
192
|
else
|
193
193
|
node.elements.each do |childnode|
|
@@ -54,16 +54,16 @@ module ActiveMerchant #:nodoc:
|
|
54
54
|
add_invoice(post, amount, options)
|
55
55
|
|
56
56
|
action = if payment.respond_to?(:number)
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
57
|
+
add_payment(post, payment)
|
58
|
+
'/authorizations'
|
59
|
+
elsif payment.kind_of?(String)
|
60
|
+
"/cards/#{payment}/authorizations"
|
61
|
+
else
|
62
|
+
raise ArgumentError.new("Unknown payment type #{payment.inspect}")
|
63
63
|
end
|
64
64
|
|
65
65
|
post[:recurring] = options[:recurring] if options[:recurring]
|
66
|
-
post[:
|
66
|
+
post[:card][:pares] = options[:pares] if options[:pares]
|
67
67
|
|
68
68
|
commit(action, post)
|
69
69
|
end
|
@@ -108,7 +108,7 @@ module ActiveMerchant #:nodoc:
|
|
108
108
|
transcript.
|
109
109
|
gsub(%r((Authorization: Basic )[\w=]+), '\1[FILTERED]').
|
110
110
|
gsub(%r((&?card(?:\[|%5B)csc(?:\]|%5D)=)[^&]*)i, '\1[FILTERED]').
|
111
|
-
gsub(%r((&?card(?:\[|%5B)
|
111
|
+
gsub(%r((&?card(?:\[|%5B)pan(?:\]|%5D)=)[^&]*)i, '\1[FILTERED]')
|
112
112
|
end
|
113
113
|
|
114
114
|
private
|
@@ -126,12 +126,12 @@ module ActiveMerchant #:nodoc:
|
|
126
126
|
|
127
127
|
def add_payment(post, payment)
|
128
128
|
card = {}
|
129
|
-
card[:
|
129
|
+
card[:pan] = payment.number
|
130
130
|
card[:expire_month] = '%02d'% payment.month
|
131
131
|
card[:expire_year] = payment.year
|
132
132
|
|
133
133
|
if payment.verification_value?
|
134
|
-
card[:csc]
|
134
|
+
card[:csc] = payment.verification_value
|
135
135
|
end
|
136
136
|
|
137
137
|
post[:card] = card if card.any?
|
@@ -139,8 +139,8 @@ module ActiveMerchant #:nodoc:
|
|
139
139
|
|
140
140
|
def headers(api_key)
|
141
141
|
{
|
142
|
-
'Authorization'
|
143
|
-
'User-Agent'
|
142
|
+
'Authorization' => 'Basic ' + Base64.strict_encode64("#{api_key}:"),
|
143
|
+
'User-Agent' => "Clearhaus ActiveMerchantBindings/#{ActiveMerchant::VERSION}"
|
144
144
|
}
|
145
145
|
end
|
146
146
|
|
@@ -111,7 +111,7 @@ module ActiveMerchant #:nodoc:
|
|
111
111
|
results = {}
|
112
112
|
|
113
113
|
body.split(/\&/).each do |pair|
|
114
|
-
key,val = pair.split(%r{=})
|
114
|
+
key, val = pair.split(%r{=})
|
115
115
|
results[key] = CGI.unescape(val)
|
116
116
|
end
|
117
117
|
|
@@ -126,8 +126,8 @@ module ActiveMerchant #:nodoc:
|
|
126
126
|
if response['returnText'].present?
|
127
127
|
response['returnText']
|
128
128
|
else
|
129
|
-
'Invalid response received from the CommerceGate API. '
|
130
|
-
'Please contact CommerceGate support if you continue to receive this message. '
|
129
|
+
'Invalid response received from the CommerceGate API. ' \
|
130
|
+
'Please contact CommerceGate support if you continue to receive this message. ' \
|
131
131
|
"(The raw response returned by the API was #{response.inspect})"
|
132
132
|
end
|
133
133
|
end
|
@@ -147,7 +147,7 @@ module ActiveMerchant #:nodoc:
|
|
147
147
|
def add_transaction_details(xml, amount, authorization, type, options={})
|
148
148
|
xml.TransactionDetails do
|
149
149
|
xml.MessageType type
|
150
|
-
xml.Amount(unit: 'Minor'){ xml.text(amount) } if amount
|
150
|
+
xml.Amount(unit: 'Minor') { xml.text(amount) } if amount
|
151
151
|
xml.CardEaseReference authorization if authorization
|
152
152
|
xml.VoidReason '01' if type == 'Void'
|
153
153
|
end
|
@@ -157,7 +157,7 @@ module ActiveMerchant #:nodoc:
|
|
157
157
|
xml.TerminalDetails do
|
158
158
|
xml.TerminalID @options[:terminal_id]
|
159
159
|
xml.TransactionKey @options[:transaction_key]
|
160
|
-
xml.Software(version: 'SoftwareVersion'){ xml.text('SoftwareName') }
|
160
|
+
xml.Software(version: 'SoftwareVersion') { xml.text('SoftwareName') }
|
161
161
|
end
|
162
162
|
end
|
163
163
|
|
@@ -129,6 +129,7 @@ module ActiveMerchant #:nodoc:
|
|
129
129
|
add_email(post, options)
|
130
130
|
add_3d_secure(post, options)
|
131
131
|
add_echo(post, options)
|
132
|
+
add_submerchant_id(post, options)
|
132
133
|
add_transaction_type(post, options)
|
133
134
|
|
134
135
|
commit(:purchase, post)
|
@@ -142,6 +143,7 @@ module ActiveMerchant #:nodoc:
|
|
142
143
|
add_email(post, options)
|
143
144
|
add_3d_secure(post, options)
|
144
145
|
add_echo(post, options)
|
146
|
+
add_submerchant_id(post, options)
|
145
147
|
add_transaction_type(post, options)
|
146
148
|
|
147
149
|
commit(:authorize, post)
|
@@ -153,6 +155,7 @@ module ActiveMerchant #:nodoc:
|
|
153
155
|
add_reference(post, authorization)
|
154
156
|
add_customer_data(post, options)
|
155
157
|
add_echo(post, options)
|
158
|
+
add_submerchant_id(post, options)
|
156
159
|
|
157
160
|
commit(:capture, post)
|
158
161
|
end
|
@@ -162,6 +165,7 @@ module ActiveMerchant #:nodoc:
|
|
162
165
|
add_customer_data(post, options)
|
163
166
|
reference_action = add_reference(post, authorization)
|
164
167
|
add_echo(post, options)
|
168
|
+
add_submerchant_id(post, options)
|
165
169
|
post[:a1] = generate_unique_id
|
166
170
|
|
167
171
|
commit(:void, post, reference_action)
|
@@ -173,6 +177,7 @@ module ActiveMerchant #:nodoc:
|
|
173
177
|
add_reference(post, authorization)
|
174
178
|
add_customer_data(post, options)
|
175
179
|
add_echo(post, options)
|
180
|
+
add_submerchant_id(post, options)
|
176
181
|
|
177
182
|
commit(:refund, post)
|
178
183
|
end
|
@@ -184,6 +189,7 @@ module ActiveMerchant #:nodoc:
|
|
184
189
|
add_customer_data(post, options)
|
185
190
|
add_email(post, options)
|
186
191
|
add_echo(post, options)
|
192
|
+
add_submerchant_id(post, options)
|
187
193
|
add_transaction_type(post, options)
|
188
194
|
|
189
195
|
commit(:credit, post)
|
@@ -268,6 +274,10 @@ module ActiveMerchant #:nodoc:
|
|
268
274
|
post[:d2] = options[:echo] unless options[:echo].blank?
|
269
275
|
end
|
270
276
|
|
277
|
+
def add_submerchant_id(post, options)
|
278
|
+
post[:h3] = options[:submerchant_id] if options[:submerchant_id]
|
279
|
+
end
|
280
|
+
|
271
281
|
def add_transaction_type(post, options)
|
272
282
|
post[:a9] = options[:transaction_type] if options[:transaction_type]
|
273
283
|
end
|
@@ -307,11 +317,11 @@ module ActiveMerchant #:nodoc:
|
|
307
317
|
end
|
308
318
|
|
309
319
|
def post_data(action, params, reference_action)
|
310
|
-
params.keys.each { |key| params[key] = params[key].to_s}
|
320
|
+
params.keys.each { |key| params[key] = params[key].to_s }
|
311
321
|
params[:M] = @options[:merchant_id]
|
312
322
|
params[:O] = request_action(action, reference_action)
|
313
323
|
params[:K] = sign_request(params)
|
314
|
-
params.map {|k, v| "#{k}=#{CGI.escape(v.to_s)}"}.join('&')
|
324
|
+
params.map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
|
315
325
|
end
|
316
326
|
|
317
327
|
def request_action(action, reference_action)
|
@@ -327,7 +337,7 @@ module ActiveMerchant #:nodoc:
|
|
327
337
|
end
|
328
338
|
|
329
339
|
def parse(body)
|
330
|
-
Hash[CGI::parse(body).map{|k,v| [k.upcase,v.first]}]
|
340
|
+
Hash[CGI::parse(body).map { |k, v| [k.upcase, v.first] }]
|
331
341
|
end
|
332
342
|
|
333
343
|
def success_from(response)
|
@@ -118,7 +118,7 @@ module ActiveMerchant #:nodoc:
|
|
118
118
|
post = {}
|
119
119
|
add_terminal_number(post, options)
|
120
120
|
add_operator_id(post, options)
|
121
|
-
add_invoice(post,0, options)
|
121
|
+
add_invoice(post, 0, options)
|
122
122
|
add_payment(post, credit_card)
|
123
123
|
add_address(post, credit_card, options)
|
124
124
|
add_customer_data(post, options)
|
@@ -159,7 +159,7 @@ module ActiveMerchant #:nodoc:
|
|
159
159
|
end
|
160
160
|
|
161
161
|
def add_money(post, money)
|
162
|
-
post[:Amount] = money.to_s.rjust(11,'0')
|
162
|
+
post[:Amount] = money.to_s.rjust(11, '0')
|
163
163
|
end
|
164
164
|
|
165
165
|
def add_operator_id(post, options)
|
@@ -179,7 +179,7 @@ module ActiveMerchant #:nodoc:
|
|
179
179
|
|
180
180
|
def add_invoice(post, money, options)
|
181
181
|
post[:CurrencyCode] = options[:currency] || (currency(money) if money)
|
182
|
-
post[:InvoiceNumber] = options[:order_id].rjust(12,'0')
|
182
|
+
post[:InvoiceNumber] = options[:order_id].rjust(12, '0')
|
183
183
|
post[:InputType] = 'I'
|
184
184
|
post[:LanguageCode] = 'E'
|
185
185
|
end
|
@@ -189,7 +189,7 @@ module ActiveMerchant #:nodoc:
|
|
189
189
|
post[:Token] = split_authorization(payment)[3].strip
|
190
190
|
else
|
191
191
|
post[:CardType] = CARD_BRAND[payment.brand] || ' '
|
192
|
-
post[:CardNumber] = payment.number.rjust(40,' ')
|
192
|
+
post[:CardNumber] = payment.number.rjust(40, ' ')
|
193
193
|
post[:ExpirationDate] = expdate(payment)
|
194
194
|
post[:Cvv2Cvc2Number] = payment.verification_value
|
195
195
|
end
|
@@ -224,7 +224,7 @@ module ActiveMerchant #:nodoc:
|
|
224
224
|
commit_raw(action, parameters)
|
225
225
|
else
|
226
226
|
MultiResponse.run(true) do |r|
|
227
|
-
r.process { commit_raw(action, parameters)}
|
227
|
+
r.process { commit_raw(action, parameters) }
|
228
228
|
r.process {
|
229
229
|
split_auth = split_authorization(r.authorization)
|
230
230
|
auth = (action.include?('recur')? split_auth[4] : split_auth[0])
|
@@ -254,7 +254,7 @@ module ActiveMerchant #:nodoc:
|
|
254
254
|
parameters[:CompanyNumber] = @options[:company_number]
|
255
255
|
parameters[:MerchantNumber] = @options[:merchant_number]
|
256
256
|
parameters = parameters.collect do |key, value|
|
257
|
-
"#{key}=#{value}" unless
|
257
|
+
"#{key}=#{value}" unless value.nil? || value.empty?
|
258
258
|
end.join('&')
|
259
259
|
payload = Base64.strict_encode64(parameters)
|
260
260
|
"auth-api-key=#{@options[:api_key]}&payload=#{payload}".strip
|
@@ -27,7 +27,7 @@ module ActiveMerchant #:nodoc:
|
|
27
27
|
XSD_VERSION = '1.121'
|
28
28
|
|
29
29
|
self.supported_cardtypes = [:visa, :master, :american_express, :discover, :diners_club, :jcb, :dankort, :maestro]
|
30
|
-
self.supported_countries = %w(US BR CA CN DK FI FR DE JP MX NO SE GB SG LB)
|
30
|
+
self.supported_countries = %w(US BR CA CN DK FI FR DE IN JP MX NO SE GB SG LB)
|
31
31
|
|
32
32
|
self.default_currency = 'USD'
|
33
33
|
self.currencies_without_fractions = %w(JPY)
|
@@ -113,7 +113,7 @@ module ActiveMerchant #:nodoc:
|
|
113
113
|
|
114
114
|
def authorize(money, creditcard_or_reference, options = {})
|
115
115
|
setup_address_hash(options)
|
116
|
-
commit(build_auth_request(money, creditcard_or_reference, options), :authorize, money, options
|
116
|
+
commit(build_auth_request(money, creditcard_or_reference, options), :authorize, money, options)
|
117
117
|
end
|
118
118
|
|
119
119
|
def capture(money, authorization, options = {})
|
@@ -209,7 +209,7 @@ module ActiveMerchant #:nodoc:
|
|
209
209
|
# Determines if a card can be used for Pinless Debit Card transactions
|
210
210
|
def validate_pinless_debit_card(creditcard, options = {})
|
211
211
|
requires!(options, :order_id)
|
212
|
-
commit(build_validate_pinless_debit_request(creditcard,options), :validate_pinless_debit_card, nil, options)
|
212
|
+
commit(build_validate_pinless_debit_request(creditcard, options), :validate_pinless_debit_card, nil, options)
|
213
213
|
end
|
214
214
|
|
215
215
|
def supports_scrubbing?
|
@@ -392,7 +392,7 @@ module ActiveMerchant #:nodoc:
|
|
392
392
|
xml.target!
|
393
393
|
end
|
394
394
|
|
395
|
-
def build_validate_pinless_debit_request(creditcard,options)
|
395
|
+
def build_validate_pinless_debit_request(creditcard, options)
|
396
396
|
xml = Builder::XmlMarkup.new :indent => 2
|
397
397
|
add_creditcard(xml, creditcard)
|
398
398
|
add_validate_pinless_debit_service(xml)
|
@@ -410,7 +410,7 @@ module ActiveMerchant #:nodoc:
|
|
410
410
|
end
|
411
411
|
end
|
412
412
|
|
413
|
-
def extract_option
|
413
|
+
def extract_option(prioritized_options, option_name)
|
414
414
|
options_matching_key = prioritized_options.detect do |options|
|
415
415
|
options.has_key? option_name
|
416
416
|
end
|
@@ -432,7 +432,7 @@ module ActiveMerchant #:nodoc:
|
|
432
432
|
def add_merchant_data(xml, options)
|
433
433
|
xml.tag! 'merchantID', @options[:login]
|
434
434
|
xml.tag! 'merchantReferenceCode', options[:order_id] || generate_unique_id
|
435
|
-
xml.tag! 'clientLibrary','Ruby Active Merchant'
|
435
|
+
xml.tag! 'clientLibrary', 'Ruby Active Merchant'
|
436
436
|
xml.tag! 'clientLibraryVersion', VERSION
|
437
437
|
xml.tag! 'clientEnvironment', RUBY_PLATFORM
|
438
438
|
end
|
@@ -469,7 +469,7 @@ module ActiveMerchant #:nodoc:
|
|
469
469
|
xml.tag! 'accountNumber', creditcard.number
|
470
470
|
xml.tag! 'expirationMonth', format(creditcard.month, :two_digits)
|
471
471
|
xml.tag! 'expirationYear', format(creditcard.year, :four_digits)
|
472
|
-
xml.tag!('cvNumber', creditcard.verification_value) unless
|
472
|
+
xml.tag!('cvNumber', creditcard.verification_value) unless @options[:ignore_cvv] || creditcard.verification_value.blank?
|
473
473
|
xml.tag! 'cardType', @@credit_card_codes[card_brand(creditcard).to_sym]
|
474
474
|
end
|
475
475
|
end
|
@@ -755,7 +755,7 @@ module ActiveMerchant #:nodoc:
|
|
755
755
|
|
756
756
|
def parse_element(reply, node)
|
757
757
|
if node.has_elements?
|
758
|
-
node.elements.each{|e| parse_element(reply, e) }
|
758
|
+
node.elements.each { |e| parse_element(reply, e) }
|
759
759
|
else
|
760
760
|
if node.parent.name =~ /item/
|
761
761
|
parent = node.parent.name
|