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
@@ -33,7 +33,7 @@ module ActiveMerchant #:nodoc:
|
|
33
33
|
def authorize(money, creditcard, options = {})
|
34
34
|
post = {}
|
35
35
|
add_invoice(post, options)
|
36
|
-
add_payment_source(post, creditcard,options)
|
36
|
+
add_payment_source(post, creditcard, options)
|
37
37
|
add_address(post, creditcard, options)
|
38
38
|
add_customer_data(post, options)
|
39
39
|
|
@@ -136,11 +136,11 @@ module ActiveMerchant #:nodoc:
|
|
136
136
|
end
|
137
137
|
end
|
138
138
|
|
139
|
-
def add_customer_vault_id(params,vault_id)
|
139
|
+
def add_customer_vault_id(params, vault_id)
|
140
140
|
params[:customer_vault_id] = vault_id
|
141
141
|
end
|
142
142
|
|
143
|
-
def add_creditcard(post, creditcard,options)
|
143
|
+
def add_creditcard(post, creditcard, options)
|
144
144
|
if options[:store]
|
145
145
|
post[:customer_vault] = 'add_customer'
|
146
146
|
post[:customer_vault_id] = options[:store] unless options[:store] == true
|
@@ -164,7 +164,7 @@ module ActiveMerchant #:nodoc:
|
|
164
164
|
def parse(body)
|
165
165
|
results = {}
|
166
166
|
body.split(/&/).each do |pair|
|
167
|
-
key,val = pair.split(%r{=})
|
167
|
+
key, val = pair.split(%r{=})
|
168
168
|
results[key] = val
|
169
169
|
end
|
170
170
|
|
@@ -174,7 +174,7 @@ module ActiveMerchant #:nodoc:
|
|
174
174
|
def commit(action, money, parameters)
|
175
175
|
parameters[:amount] = amount(money) if money
|
176
176
|
|
177
|
-
response = parse(
|
177
|
+
response = parse(ssl_post(self.live_url, post_data(action, parameters)))
|
178
178
|
|
179
179
|
Response.new(response['response'] == '1', message_from(response), response,
|
180
180
|
:authorization => response['transactionid'],
|
@@ -186,7 +186,7 @@ module ActiveMerchant #:nodoc:
|
|
186
186
|
|
187
187
|
def message_from(response)
|
188
188
|
case response['responsetext']
|
189
|
-
when 'SUCCESS','Approved'
|
189
|
+
when 'SUCCESS', 'Approved'
|
190
190
|
'This transaction has been approved'
|
191
191
|
when 'DECLINE'
|
192
192
|
'This transaction has been declined'
|
@@ -201,7 +201,7 @@ module ActiveMerchant #:nodoc:
|
|
201
201
|
post[:password] = @options[:password]
|
202
202
|
post[:type] = action if action
|
203
203
|
|
204
|
-
request = post.merge(parameters).map {|key,value| "#{key}=#{CGI.escape(value.to_s)}"}.join('&')
|
204
|
+
request = post.merge(parameters).map { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
|
205
205
|
request
|
206
206
|
end
|
207
207
|
|
@@ -278,7 +278,7 @@ module ActiveMerchant #:nodoc:
|
|
278
278
|
private
|
279
279
|
|
280
280
|
def build_purchase_request(type, money, creditcard, options)
|
281
|
-
options
|
281
|
+
options[:action] = 'CardDetailsTransaction'
|
282
282
|
build_request(options) do |xml|
|
283
283
|
add_purchase_data(xml, type, money, options)
|
284
284
|
add_creditcard(xml, creditcard)
|
@@ -287,7 +287,7 @@ module ActiveMerchant #:nodoc:
|
|
287
287
|
end
|
288
288
|
|
289
289
|
def build_reference_request(type, money, authorization, options)
|
290
|
-
options
|
290
|
+
options[:action] = 'CrossReferenceTransaction'
|
291
291
|
order_id, cross_reference, _ = authorization.split(';')
|
292
292
|
build_request(options) do |xml|
|
293
293
|
if money
|
@@ -419,39 +419,39 @@ module ActiveMerchant #:nodoc:
|
|
419
419
|
case node.name
|
420
420
|
when 'CrossReferenceTransactionResult'
|
421
421
|
reply[:transaction_result] = {}
|
422
|
-
node.attributes.each do |a,b|
|
422
|
+
node.attributes.each do |a, b|
|
423
423
|
reply[:transaction_result][a.underscore.to_sym] = b
|
424
424
|
end
|
425
|
-
node.elements.each{|e| parse_element(reply[:transaction_result], e) } if node.has_elements?
|
425
|
+
node.elements.each { |e| parse_element(reply[:transaction_result], e) } if node.has_elements?
|
426
426
|
|
427
427
|
when 'CardDetailsTransactionResult'
|
428
428
|
reply[:transaction_result] = {}
|
429
|
-
node.attributes.each do |a,b|
|
429
|
+
node.attributes.each do |a, b|
|
430
430
|
reply[:transaction_result][a.underscore.to_sym] = b
|
431
431
|
end
|
432
|
-
node.elements.each{|e| parse_element(reply[:transaction_result], e) } if node.has_elements?
|
432
|
+
node.elements.each { |e| parse_element(reply[:transaction_result], e) } if node.has_elements?
|
433
433
|
|
434
434
|
when 'TransactionOutputData'
|
435
435
|
reply[:transaction_output_data] = {}
|
436
|
-
node.attributes.each{|a,b| reply[:transaction_output_data][a.underscore.to_sym] = b }
|
437
|
-
node.elements.each{|e| parse_element(reply[:transaction_output_data], e) } if node.has_elements?
|
436
|
+
node.attributes.each { |a, b| reply[:transaction_output_data][a.underscore.to_sym] = b }
|
437
|
+
node.elements.each { |e| parse_element(reply[:transaction_output_data], e) } if node.has_elements?
|
438
438
|
when 'CustomVariables'
|
439
439
|
reply[:custom_variables] = {}
|
440
|
-
node.attributes.each{|a,b| reply[:custom_variables][a.underscore.to_sym] = b }
|
441
|
-
node.elements.each{|e| parse_element(reply[:custom_variables], e) } if node.has_elements?
|
440
|
+
node.attributes.each { |a, b| reply[:custom_variables][a.underscore.to_sym] = b }
|
441
|
+
node.elements.each { |e| parse_element(reply[:custom_variables], e) } if node.has_elements?
|
442
442
|
when 'GatewayEntryPoints'
|
443
443
|
reply[:gateway_entry_points] = {}
|
444
|
-
node.attributes.each{|a,b| reply[:gateway_entry_points][a.underscore.to_sym] = b }
|
445
|
-
node.elements.each{|e| parse_element(reply[:gateway_entry_points], e) } if node.has_elements?
|
444
|
+
node.attributes.each { |a, b| reply[:gateway_entry_points][a.underscore.to_sym] = b }
|
445
|
+
node.elements.each { |e| parse_element(reply[:gateway_entry_points], e) } if node.has_elements?
|
446
446
|
else
|
447
447
|
k = node.name.underscore.to_sym
|
448
448
|
if node.has_elements?
|
449
449
|
reply[k] = {}
|
450
|
-
node.elements.each{|e| parse_element(reply[k], e) }
|
450
|
+
node.elements.each { |e| parse_element(reply[k], e) }
|
451
451
|
else
|
452
452
|
if node.has_attributes?
|
453
453
|
reply[k] = {}
|
454
|
-
node.attributes.each{|a,b| reply[k][a.underscore.to_sym] = b }
|
454
|
+
node.attributes.each { |a, b| reply[k][a.underscore.to_sym] = b }
|
455
455
|
else
|
456
456
|
reply[k] = node.text
|
457
457
|
end
|
@@ -302,7 +302,7 @@ module ActiveMerchant #:nodoc:
|
|
302
302
|
xml.AuthCode options[:force] if options[:force]
|
303
303
|
if options[:order_items].blank?
|
304
304
|
xml.Total(amount(money)) unless(money.nil? || money < 0.01)
|
305
|
-
xml.Description(options[:description]) unless(
|
305
|
+
xml.Description(options[:description]) unless(options[:description].blank?)
|
306
306
|
else
|
307
307
|
xml.OrderItems {
|
308
308
|
options[:order_items].each do |item|
|
@@ -336,7 +336,7 @@ module ActiveMerchant #:nodoc:
|
|
336
336
|
xml.AccountInfo {
|
337
337
|
xml.CardAccount {
|
338
338
|
xml.AccountNumber(creditcard.number.to_s)
|
339
|
-
xml.ExpirationMonth(creditcard.month.to_s.rjust(2,'0'))
|
339
|
+
xml.ExpirationMonth(creditcard.month.to_s.rjust(2, '0'))
|
340
340
|
xml.ExpirationYear(creditcard.year.to_s)
|
341
341
|
xml.CVVNumber(creditcard.verification_value.to_s) unless creditcard.verification_value.blank?
|
342
342
|
}
|
@@ -372,7 +372,7 @@ module ActiveMerchant #:nodoc:
|
|
372
372
|
def add_vendor_data(xml, options)
|
373
373
|
return if options[:vendor_data].blank?
|
374
374
|
xml.VendorData {
|
375
|
-
options[:vendor_data].each do |k,v|
|
375
|
+
options[:vendor_data].each do |k, v|
|
376
376
|
xml.Element {
|
377
377
|
xml.Name(k)
|
378
378
|
xml.Key(v)
|
@@ -424,7 +424,7 @@ module ActiveMerchant #:nodoc:
|
|
424
424
|
|
425
425
|
def successful?(response)
|
426
426
|
# Turns out the PaymentClearing gateway is not consistent...
|
427
|
-
response[:status].
|
427
|
+
response[:status].casecmp('ok').zero?
|
428
428
|
end
|
429
429
|
|
430
430
|
def test_mode?(response)
|
@@ -206,7 +206,7 @@ module ActiveMerchant #:nodoc:
|
|
206
206
|
end
|
207
207
|
|
208
208
|
if !node.elements.empty?
|
209
|
-
node.elements.each {|e| parse_element(parsed, e) }
|
209
|
+
node.elements.each { |e| parse_element(parsed, e) }
|
210
210
|
else
|
211
211
|
parsed[underscore(node.name)] = node.text
|
212
212
|
end
|
@@ -241,8 +241,8 @@ module ActiveMerchant #:nodoc:
|
|
241
241
|
|
242
242
|
def underscore(camel_cased_word)
|
243
243
|
camel_cased_word.to_s.gsub(/::/, '/').
|
244
|
-
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
245
|
-
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
244
|
+
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
|
245
|
+
gsub(/([a-z\d])([A-Z])/, '\1_\2').
|
246
246
|
tr('-', '_').
|
247
247
|
downcase
|
248
248
|
end
|
@@ -315,7 +315,7 @@ module ActiveMerchant #:nodoc:
|
|
315
315
|
|
316
316
|
def parse_element(response, node)
|
317
317
|
if node.has_elements?
|
318
|
-
node.elements.each{|element| parse_element(response, element) }
|
318
|
+
node.elements.each { |element| parse_element(response, element) }
|
319
319
|
else
|
320
320
|
response[node.name.underscore.to_sym] = node.text
|
321
321
|
end
|
@@ -344,7 +344,7 @@ module ActiveMerchant #:nodoc:
|
|
344
344
|
xml.tag! 'CardExpYear', format_exp(credit_card.year)
|
345
345
|
|
346
346
|
if credit_card.first_name || credit_card.last_name
|
347
|
-
xml.tag! 'CardName', [credit_card.first_name,credit_card.last_name].compact.join(' ')
|
347
|
+
xml.tag! 'CardName', [credit_card.first_name, credit_card.last_name].compact.join(' ')
|
348
348
|
end
|
349
349
|
|
350
350
|
unless credit_card.verification_value.nil? || (credit_card.verification_value.length == 0)
|
@@ -324,7 +324,7 @@ module ActiveMerchant #:nodoc:
|
|
324
324
|
|
325
325
|
def parse_element(response, node)
|
326
326
|
if node.has_elements?
|
327
|
-
node.elements.each{|element| parse_element(response, element) }
|
327
|
+
node.elements.each { |element| parse_element(response, element) }
|
328
328
|
else
|
329
329
|
response[node.name.underscore.to_sym] = node.text
|
330
330
|
end
|
@@ -369,7 +369,7 @@ module ActiveMerchant #:nodoc:
|
|
369
369
|
xml.tag! 'CardExpYear', format_exp(credit_card.year)
|
370
370
|
|
371
371
|
if credit_card.first_name || credit_card.last_name
|
372
|
-
xml.tag! 'CardName', [credit_card.first_name,credit_card.last_name].compact.join(' ')
|
372
|
+
xml.tag! 'CardName', [credit_card.first_name, credit_card.last_name].compact.join(' ')
|
373
373
|
end
|
374
374
|
|
375
375
|
unless credit_card.verification_value.nil? || (credit_card.verification_value.length == 0)
|
@@ -169,7 +169,7 @@ module ActiveMerchant #:nodoc:
|
|
169
169
|
def recurring(money, creditcard, options={})
|
170
170
|
ActiveMerchant.deprecated RECURRING_DEPRECATION_MESSAGE
|
171
171
|
|
172
|
-
requires!(options, [:periodicity, :bimonthly, :monthly, :biweekly, :weekly, :yearly, :daily], :installments, :order_id
|
172
|
+
requires!(options, [:periodicity, :bimonthly, :monthly, :biweekly, :weekly, :yearly, :daily], :installments, :order_id)
|
173
173
|
|
174
174
|
options.update(
|
175
175
|
:ordertype => 'SALE',
|
@@ -266,8 +266,8 @@ module ActiveMerchant #:nodoc:
|
|
266
266
|
Response.new(successful?(response), response[:message], response,
|
267
267
|
:test => test?,
|
268
268
|
:authorization => response[:ordernum],
|
269
|
-
:avs_result => { :code => response[:avs].to_s[2,1] },
|
270
|
-
:cvv_result => response[:avs].to_s[3,1]
|
269
|
+
:avs_result => { :code => response[:avs].to_s[2, 1] },
|
270
|
+
:cvv_result => response[:avs].to_s[3, 1]
|
271
271
|
)
|
272
272
|
end
|
273
273
|
|
@@ -268,7 +268,7 @@ module ActiveMerchant #:nodoc:
|
|
268
268
|
end
|
269
269
|
elsif check?(payment_method)
|
270
270
|
doc.echeck do
|
271
|
-
doc.accType(payment_method.account_type)
|
271
|
+
doc.accType(payment_method.account_type.capitalize)
|
272
272
|
doc.accNum(payment_method.account_number)
|
273
273
|
doc.routingNum(payment_method.routing_number)
|
274
274
|
doc.checkNum(payment_method.number)
|
@@ -402,7 +402,7 @@ module ActiveMerchant #:nodoc:
|
|
402
402
|
end
|
403
403
|
|
404
404
|
def authorization_from(kind, parsed, money)
|
405
|
-
|
405
|
+
kind == :registerToken ? parsed[:litleToken] : "#{parsed[:litleTxnId]};#{kind};#{money}"
|
406
406
|
end
|
407
407
|
|
408
408
|
def split_authorization(authorization)
|
@@ -142,7 +142,7 @@ module ActiveMerchant #:nodoc:
|
|
142
142
|
|
143
143
|
def parse_element(response, node)
|
144
144
|
if node.has_elements?
|
145
|
-
node.elements.each{|element| parse_element(response, element) }
|
145
|
+
node.elements.each { |element| parse_element(response, element) }
|
146
146
|
else
|
147
147
|
response[node.name.underscore.to_sym] = node.text
|
148
148
|
end
|
@@ -10,11 +10,6 @@ module ActiveMerchant #:nodoc:
|
|
10
10
|
self.display_name = 'Mercado Pago'
|
11
11
|
self.money_format = :dollars
|
12
12
|
|
13
|
-
CARD_BRAND = {
|
14
|
-
'american_express' => 'amex',
|
15
|
-
'diners_club' => 'diners'
|
16
|
-
}
|
17
|
-
|
18
13
|
def initialize(options={})
|
19
14
|
requires!(options, :access_token)
|
20
15
|
super
|
@@ -23,18 +18,16 @@ module ActiveMerchant #:nodoc:
|
|
23
18
|
def purchase(money, payment, options={})
|
24
19
|
MultiResponse.run do |r|
|
25
20
|
r.process { commit('tokenize', 'card_tokens', card_token_request(money, payment, options)) }
|
26
|
-
options
|
27
|
-
|
28
|
-
r.process { commit('purchase', 'payments', purchase_request(money, payment, options) ) }
|
21
|
+
options[:card_token] = r.authorization.split('|').first
|
22
|
+
r.process { commit('purchase', 'payments', purchase_request(money, payment, options)) }
|
29
23
|
end
|
30
24
|
end
|
31
25
|
|
32
26
|
def authorize(money, payment, options={})
|
33
27
|
MultiResponse.run do |r|
|
34
28
|
r.process { commit('tokenize', 'card_tokens', card_token_request(money, payment, options)) }
|
35
|
-
options
|
36
|
-
|
37
|
-
r.process { commit('authorize', 'payments', authorize_request(money, payment, options) ) }
|
29
|
+
options[:card_token] = r.authorization.split('|').first
|
30
|
+
r.process { commit('authorize', 'payments', authorize_request(money, payment, options)) }
|
38
31
|
end
|
39
32
|
end
|
40
33
|
|
@@ -108,7 +101,7 @@ module ActiveMerchant #:nodoc:
|
|
108
101
|
|
109
102
|
def authorize_request(money, payment, options = {})
|
110
103
|
post = purchase_request(money, payment, options)
|
111
|
-
post
|
104
|
+
post[:capture] = false
|
112
105
|
post
|
113
106
|
end
|
114
107
|
|
@@ -181,7 +174,8 @@ module ActiveMerchant #:nodoc:
|
|
181
174
|
|
182
175
|
def add_payment(post, options)
|
183
176
|
post[:token] = options[:card_token]
|
184
|
-
post[:
|
177
|
+
post[:issuer_id] = options[:issuer_id] if options[:issuer_id]
|
178
|
+
post[:payment_method_id] = options[:payment_method_id] if options[:payment_method_id]
|
185
179
|
end
|
186
180
|
|
187
181
|
def parse(body)
|
@@ -148,7 +148,7 @@ module ActiveMerchant #:nodoc:
|
|
148
148
|
def parse(body)
|
149
149
|
results = {}
|
150
150
|
body.split(/&/).each do |pair|
|
151
|
-
key,val = pair.split(/=/)
|
151
|
+
key, val = pair.split(/=/)
|
152
152
|
results[key] = val
|
153
153
|
end
|
154
154
|
results
|
@@ -159,7 +159,7 @@ module ActiveMerchant #:nodoc:
|
|
159
159
|
parameters[:transaction_amount] = amount(money) if money unless action == 'V'
|
160
160
|
|
161
161
|
response = begin
|
162
|
-
parse(
|
162
|
+
parse(ssl_post(url, post_data(action, parameters)))
|
163
163
|
rescue ActiveMerchant::ResponseError => e
|
164
164
|
{ 'error_code' => '404', 'auth_response_text' => e.to_s }
|
165
165
|
end
|
@@ -186,7 +186,7 @@ module ActiveMerchant #:nodoc:
|
|
186
186
|
post[:profile_key] = @options[:password]
|
187
187
|
post[:transaction_type] = action if action
|
188
188
|
|
189
|
-
request = post.merge(parameters).map {|key,value| "#{key}=#{CGI.escape(value.to_s)}"}.join('&')
|
189
|
+
request = post.merge(parameters).map { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
|
190
190
|
request
|
191
191
|
end
|
192
192
|
end
|
@@ -46,7 +46,7 @@ module ActiveMerchant #:nodoc:
|
|
46
46
|
|
47
47
|
def capture(money, authorization, options = {})
|
48
48
|
post = {}
|
49
|
-
post
|
49
|
+
post[:transactionid] = authorization
|
50
50
|
add_amount(post, money, options)
|
51
51
|
commit('capture', money, post)
|
52
52
|
end
|
@@ -83,11 +83,11 @@ module ActiveMerchant #:nodoc:
|
|
83
83
|
def commit(action, money, parameters={})
|
84
84
|
parameters['username'] = @options[:username]
|
85
85
|
parameters['password'] = @options[:password]
|
86
|
-
parse(ssl_post(BASE_URL,post_data(action, parameters)))
|
86
|
+
parse(ssl_post(BASE_URL, post_data(action, parameters)))
|
87
87
|
end
|
88
88
|
|
89
89
|
def post_data(action, parameters = {})
|
90
|
-
parameters
|
90
|
+
parameters[:type] = action
|
91
91
|
ret = ''
|
92
92
|
for key in parameters.keys
|
93
93
|
ret += "#{key}=#{CGI.escape(parameters[key].to_s)}"
|
@@ -99,7 +99,7 @@ module ActiveMerchant #:nodoc:
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def parse(data)
|
102
|
-
responses = CGI.parse(data).inject({}){|h,(k, v)| h[k] = v.first; h}
|
102
|
+
responses = CGI.parse(data).inject({}) { |h, (k, v)| h[k] = v.first; h }
|
103
103
|
Response.new(
|
104
104
|
(responses['response'].to_i == 1),
|
105
105
|
responses['responsetext'],
|
@@ -212,7 +212,7 @@ module ActiveMerchant #:nodoc:
|
|
212
212
|
if node.elements.size == 0
|
213
213
|
response[node.name.downcase.underscore.to_sym] = node.text
|
214
214
|
else
|
215
|
-
node.elements.each{|element| parse_element(response, element) }
|
215
|
+
node.elements.each { |element| parse_element(response, element) }
|
216
216
|
end
|
217
217
|
end
|
218
218
|
|
@@ -46,7 +46,7 @@ module ActiveMerchant #:nodoc:
|
|
46
46
|
post = {}
|
47
47
|
add_amount(post, money, options)
|
48
48
|
add_transaction(post, identification)
|
49
|
-
post
|
49
|
+
post['captureAmount'] = amount(money)
|
50
50
|
commit('processCapture', post)
|
51
51
|
end
|
52
52
|
|
@@ -158,7 +158,7 @@ module ActiveMerchant #:nodoc:
|
|
158
158
|
|
159
159
|
def parse_element(response, node)
|
160
160
|
if node.has_elements?
|
161
|
-
node.elements.each{|element| parse_element(response, element)}
|
161
|
+
node.elements.each { |element| parse_element(response, element) }
|
162
162
|
else
|
163
163
|
response[node.name.underscore.to_sym] = node.text
|
164
164
|
end
|
@@ -203,7 +203,7 @@ module ActiveMerchant #:nodoc:
|
|
203
203
|
end
|
204
204
|
|
205
205
|
def post_data(post)
|
206
|
-
post.collect{|k,v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
|
206
|
+
post.collect { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
|
207
207
|
end
|
208
208
|
end
|
209
209
|
end
|
@@ -18,7 +18,7 @@ module ActiveMerchant #:nodoc:
|
|
18
18
|
|
19
19
|
self.homepage_url = 'http://www.mercurypay.com'
|
20
20
|
self.display_name = 'Mercury'
|
21
|
-
self.supported_countries = ['US','CA']
|
21
|
+
self.supported_countries = ['US', 'CA']
|
22
22
|
self.supported_cardtypes = [:visa, :master, :american_express, :discover, :diners_club, :jcb]
|
23
23
|
self.default_currency = 'USD'
|
24
24
|
|
@@ -349,7 +349,7 @@ module ActiveMerchant #:nodoc:
|
|
349
349
|
end
|
350
350
|
|
351
351
|
def unescape_xml(escaped_xml)
|
352
|
-
escaped_xml.gsub(/\>/,'>').gsub(/\</,'<')
|
352
|
+
escaped_xml.gsub(/\>/, '>').gsub(/\</, '<')
|
353
353
|
end
|
354
354
|
end
|
355
355
|
end
|
@@ -286,9 +286,9 @@ module ActiveMerchant #:nodoc:
|
|
286
286
|
|
287
287
|
def message_from(results)
|
288
288
|
if results[:response_code] == DECLINED
|
289
|
-
return CVVResult.messages[
|
289
|
+
return CVVResult.messages[results[:card_code]] if CARD_CODE_ERRORS.include?(results[:card_code])
|
290
290
|
if AVS_REASON_CODES.include?(results[:response_reason_code]) && AVS_ERRORS.include?(results[:avs_result_code])
|
291
|
-
return AVSResult.messages[
|
291
|
+
return AVSResult.messages[results[:avs_result_code]]
|
292
292
|
end
|
293
293
|
end
|
294
294
|
|