activemerchant 1.79.2 → 1.80.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +33 -0
- data/README.md +10 -2
- data/lib/active_merchant.rb +1 -1
- data/lib/active_merchant/billing/check.rb +4 -4
- data/lib/active_merchant/billing/compatibility.rb +1 -1
- data/lib/active_merchant/billing/credit_card.rb +21 -21
- data/lib/active_merchant/billing/credit_card_formatting.rb +2 -2
- data/lib/active_merchant/billing/credit_card_methods.rb +2 -2
- data/lib/active_merchant/billing/gateway.rb +13 -13
- data/lib/active_merchant/billing/gateways/adyen.rb +31 -15
- data/lib/active_merchant/billing/gateways/allied_wallet.rb +22 -22
- data/lib/active_merchant/billing/gateways/authorize_net.rb +72 -72
- data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +3 -3
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +3 -3
- data/lib/active_merchant/billing/gateways/axcessms.rb +51 -51
- data/lib/active_merchant/billing/gateways/balanced.rb +29 -29
- data/lib/active_merchant/billing/gateways/bank_frick.rb +3 -3
- data/lib/active_merchant/billing/gateways/banwire.rb +8 -8
- data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +5 -5
- data/lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb +6 -6
- data/lib/active_merchant/billing/gateways/be2bill.rb +2 -2
- data/lib/active_merchant/billing/gateways/beanstream.rb +1 -1
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +69 -69
- data/lib/active_merchant/billing/gateways/blue_pay.rb +19 -19
- data/lib/active_merchant/billing/gateways/blue_snap.rb +42 -42
- data/lib/active_merchant/billing/gateways/bogus.rb +10 -10
- data/lib/active_merchant/billing/gateways/borgun.rb +10 -10
- data/lib/active_merchant/billing/gateways/bpoint.rb +1 -1
- data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +2 -2
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +94 -94
- data/lib/active_merchant/billing/gateways/braintree_orange.rb +1 -1
- data/lib/active_merchant/billing/gateways/bridge_pay.rb +39 -39
- data/lib/active_merchant/billing/gateways/cams.rb +12 -12
- data/lib/active_merchant/billing/gateways/card_connect.rb +38 -13
- data/lib/active_merchant/billing/gateways/card_stream.rb +116 -116
- data/lib/active_merchant/billing/gateways/cardknox.rb +7 -7
- data/lib/active_merchant/billing/gateways/cardprocess.rb +1 -1
- data/lib/active_merchant/billing/gateways/cashnet.rb +10 -10
- data/lib/active_merchant/billing/gateways/cc5.rb +3 -5
- data/lib/active_merchant/billing/gateways/cecabank.rb +6 -6
- data/lib/active_merchant/billing/gateways/cenpos.rb +36 -36
- data/lib/active_merchant/billing/gateways/checkout.rb +5 -5
- data/lib/active_merchant/billing/gateways/checkout_v2.rb +31 -31
- data/lib/active_merchant/billing/gateways/clearhaus.rb +5 -5
- data/lib/active_merchant/billing/gateways/commercegate.rb +6 -6
- data/lib/active_merchant/billing/gateways/conekta.rb +24 -19
- data/lib/active_merchant/billing/gateways/creditcall.rb +41 -41
- data/lib/active_merchant/billing/gateways/credorax.rb +104 -103
- data/lib/active_merchant/billing/gateways/culqi.rb +25 -25
- data/lib/active_merchant/billing/gateways/cyber_source.rb +65 -65
- data/lib/active_merchant/billing/gateways/data_cash.rb +4 -4
- data/lib/active_merchant/billing/gateways/dibs.rb +24 -24
- data/lib/active_merchant/billing/gateways/digitzs.rb +35 -35
- data/lib/active_merchant/billing/gateways/ebanx.rb +26 -26
- data/lib/active_merchant/billing/gateways/efsnet.rb +10 -10
- data/lib/active_merchant/billing/gateways/elavon.rb +5 -5
- data/lib/active_merchant/billing/gateways/element.rb +35 -35
- data/lib/active_merchant/billing/gateways/epay.rb +4 -4
- data/lib/active_merchant/billing/gateways/evo_ca.rb +1 -1
- data/lib/active_merchant/billing/gateways/eway.rb +65 -65
- data/lib/active_merchant/billing/gateways/eway_managed.rb +11 -11
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +31 -31
- data/lib/active_merchant/billing/gateways/exact.rb +12 -12
- data/lib/active_merchant/billing/gateways/ezic.rb +13 -13
- data/lib/active_merchant/billing/gateways/fat_zebra.rb +24 -24
- data/lib/active_merchant/billing/gateways/federated_canada.rb +3 -3
- data/lib/active_merchant/billing/gateways/first_giving.rb +16 -16
- data/lib/active_merchant/billing/gateways/first_pay.rb +7 -4
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +71 -71
- data/lib/active_merchant/billing/gateways/flo2cash.rb +12 -12
- data/lib/active_merchant/billing/gateways/flo2cash_simple.rb +1 -1
- data/lib/active_merchant/billing/gateways/forte.rb +26 -16
- data/lib/active_merchant/billing/gateways/garanti.rb +10 -12
- data/lib/active_merchant/billing/gateways/global_collect.rb +88 -88
- data/lib/active_merchant/billing/gateways/global_transport.rb +4 -4
- data/lib/active_merchant/billing/gateways/hdfc.rb +33 -33
- data/lib/active_merchant/billing/gateways/hps.rb +28 -28
- data/lib/active_merchant/billing/gateways/iats_payments.rb +26 -26
- data/lib/active_merchant/billing/gateways/inspire.rb +15 -15
- data/lib/active_merchant/billing/gateways/instapay.rb +4 -4
- data/lib/active_merchant/billing/gateways/ipp.rb +17 -17
- data/lib/active_merchant/billing/gateways/iridium.rb +207 -207
- data/lib/active_merchant/billing/gateways/iveri.rb +8 -8
- data/lib/active_merchant/billing/gateways/jetpay.rb +134 -134
- data/lib/active_merchant/billing/gateways/jetpay_v2.rb +141 -141
- data/lib/active_merchant/billing/gateways/komoju.rb +15 -15
- data/lib/active_merchant/billing/gateways/kushki.rb +31 -37
- data/lib/active_merchant/billing/gateways/latitude19.rb +64 -64
- data/lib/active_merchant/billing/gateways/linkpoint.rb +22 -22
- data/lib/active_merchant/billing/gateways/litle.rb +4 -4
- data/lib/active_merchant/billing/gateways/mastercard.rb +3 -3
- data/lib/active_merchant/billing/gateways/maxipago.rb +2 -2
- data/lib/active_merchant/billing/gateways/mercado_pago.rb +28 -28
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +9 -9
- data/lib/active_merchant/billing/gateways/merchant_one.rb +6 -6
- data/lib/active_merchant/billing/gateways/merchant_partners.rb +24 -24
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +49 -49
- data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +36 -36
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +4 -4
- data/lib/active_merchant/billing/gateways/mercury.rb +28 -28
- data/lib/active_merchant/billing/gateways/metrics_global.rb +7 -7
- data/lib/active_merchant/billing/gateways/micropayment.rb +31 -31
- data/lib/active_merchant/billing/gateways/migs.rb +11 -9
- data/lib/active_merchant/billing/gateways/modern_payments.rb +1 -1
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +16 -16
- data/lib/active_merchant/billing/gateways/monei.rb +5 -5
- data/lib/active_merchant/billing/gateways/moneris.rb +26 -26
- data/lib/active_merchant/billing/gateways/moneris_us.rb +81 -37
- data/lib/active_merchant/billing/gateways/money_movers.rb +3 -3
- data/lib/active_merchant/billing/gateways/mundipagg.rb +1 -1
- data/lib/active_merchant/billing/gateways/nab_transact.rb +6 -6
- data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +3 -3
- data/lib/active_merchant/billing/gateways/netaxept.rb +15 -15
- data/lib/active_merchant/billing/gateways/netbanx.rb +2 -2
- data/lib/active_merchant/billing/gateways/netbilling.rb +1 -1
- data/lib/active_merchant/billing/gateways/netpay.rb +5 -5
- data/lib/active_merchant/billing/gateways/nmi.rb +18 -18
- data/lib/active_merchant/billing/gateways/ogone.rb +22 -22
- data/lib/active_merchant/billing/gateways/omise.rb +3 -3
- data/lib/active_merchant/billing/gateways/openpay.rb +6 -4
- data/lib/active_merchant/billing/gateways/opp.rb +4 -4
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +2 -2
- data/lib/active_merchant/billing/gateways/orbital.rb +61 -61
- data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +4 -4
- data/lib/active_merchant/billing/gateways/pac_net_raven.rb +5 -5
- data/lib/active_merchant/billing/gateways/pagarme.rb +27 -27
- data/lib/active_merchant/billing/gateways/pago_facil.rb +8 -8
- data/lib/active_merchant/billing/gateways/pay_conex.rb +25 -25
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +32 -32
- data/lib/active_merchant/billing/gateways/pay_hub.rb +29 -29
- data/lib/active_merchant/billing/gateways/pay_junction.rb +7 -7
- data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +30 -30
- data/lib/active_merchant/billing/gateways/pay_secure.rb +4 -4
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +15 -15
- data/lib/active_merchant/billing/gateways/payeezy.rb +5 -5
- data/lib/active_merchant/billing/gateways/payex.rb +4 -4
- data/lib/active_merchant/billing/gateways/payflow.rb +7 -7
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +23 -22
- data/lib/active_merchant/billing/gateways/payflow_express.rb +2 -2
- data/lib/active_merchant/billing/gateways/payment_express.rb +40 -37
- data/lib/active_merchant/billing/gateways/paymentez.rb +11 -3
- data/lib/active_merchant/billing/gateways/paymill.rb +115 -115
- data/lib/active_merchant/billing/gateways/paypal.rb +1 -1
- data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +1 -1
- data/lib/active_merchant/billing/gateways/payscout.rb +1 -1
- data/lib/active_merchant/billing/gateways/paystation.rb +14 -14
- data/lib/active_merchant/billing/gateways/payu_in.rb +43 -43
- data/lib/active_merchant/billing/gateways/payu_latam.rb +41 -41
- data/lib/active_merchant/billing/gateways/payway.rb +6 -6
- data/lib/active_merchant/billing/gateways/pin.rb +7 -7
- data/lib/active_merchant/billing/gateways/plugnpay.rb +62 -62
- data/lib/active_merchant/billing/gateways/pro_pay.rb +123 -123
- data/lib/active_merchant/billing/gateways/psigate.rb +16 -16
- data/lib/active_merchant/billing/gateways/psl_card.rb +13 -13
- data/lib/active_merchant/billing/gateways/qbms.rb +52 -52
- data/lib/active_merchant/billing/gateways/quantum.rb +5 -5
- data/lib/active_merchant/billing/gateways/quickbooks.rb +10 -10
- data/lib/active_merchant/billing/gateways/quickpay.rb +1 -1
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +11 -11
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +3 -3
- data/lib/active_merchant/billing/gateways/qvalent.rb +55 -55
- data/lib/active_merchant/billing/gateways/realex.rb +16 -15
- data/lib/active_merchant/billing/gateways/redsys.rb +128 -121
- data/lib/active_merchant/billing/gateways/s5.rb +5 -5
- data/lib/active_merchant/billing/gateways/safe_charge.rb +16 -16
- data/lib/active_merchant/billing/gateways/sage.rb +20 -20
- data/lib/active_merchant/billing/gateways/sage_pay.rb +32 -32
- data/lib/active_merchant/billing/gateways/sallie_mae.rb +11 -11
- data/lib/active_merchant/billing/gateways/secure_net.rb +19 -19
- data/lib/active_merchant/billing/gateways/secure_pay.rb +5 -5
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +7 -7
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +9 -9
- data/lib/active_merchant/billing/gateways/securion_pay.rb +12 -12
- data/lib/active_merchant/billing/gateways/skip_jack.rb +28 -28
- data/lib/active_merchant/billing/gateways/smart_ps.rb +31 -31
- data/lib/active_merchant/billing/gateways/so_easy_pay.rb +3 -3
- data/lib/active_merchant/billing/gateways/spreedly_core.rb +1 -1
- data/lib/active_merchant/billing/gateways/stripe.rb +63 -63
- data/lib/active_merchant/billing/gateways/swipe_checkout.rb +5 -5
- data/lib/active_merchant/billing/gateways/telr.rb +26 -26
- data/lib/active_merchant/billing/gateways/trans_first.rb +28 -28
- data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +224 -224
- data/lib/active_merchant/billing/gateways/transact_pro.rb +7 -7
- data/lib/active_merchant/billing/gateways/transnational.rb +1 -1
- data/lib/active_merchant/billing/gateways/trexle.rb +5 -5
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +38 -38
- data/lib/active_merchant/billing/gateways/usa_epay.rb +3 -3
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +37 -37
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +3 -3
- data/lib/active_merchant/billing/gateways/vanco.rb +25 -25
- data/lib/active_merchant/billing/gateways/verifi.rb +40 -40
- data/lib/active_merchant/billing/gateways/viaklix.rb +5 -5
- data/lib/active_merchant/billing/gateways/visanet_peru.rb +64 -36
- data/lib/active_merchant/billing/gateways/webpay.rb +8 -8
- data/lib/active_merchant/billing/gateways/wepay.rb +25 -25
- data/lib/active_merchant/billing/gateways/wirecard.rb +26 -26
- data/lib/active_merchant/billing/gateways/worldpay.rb +15 -15
- data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +42 -42
- data/lib/active_merchant/billing/gateways/worldpay_us.rb +17 -17
- data/lib/active_merchant/billing/model.rb +2 -2
- data/lib/active_merchant/billing/network_tokenization_credit_card.rb +1 -1
- data/lib/active_merchant/billing/rails.rb +1 -1
- data/lib/active_merchant/connection.rb +10 -8
- data/lib/active_merchant/country.rb +1 -1
- data/lib/active_merchant/net_http_ssl_connection.rb +1 -0
- data/lib/active_merchant/network_connection_retries.rb +12 -12
- data/lib/active_merchant/post_data.rb +1 -1
- data/lib/active_merchant/posts_data.rb +1 -1
- data/lib/active_merchant/version.rb +1 -1
- data/lib/certs/cacert.pem +37 -0
- data/lib/support/gateway_support.rb +2 -2
- data/lib/support/ssl_verify.rb +5 -5
- data/lib/support/ssl_version.rb +7 -7
- metadata +3 -7
- data/lib/active_merchant/billing/gateways/ideal/ideal_base.rb +0 -246
- data/lib/active_merchant/billing/gateways/ideal/ideal_rabobank.pem +0 -13
- data/lib/active_merchant/billing/gateways/ideal/ideal_response.rb +0 -29
- data/lib/active_merchant/billing/gateways/ideal_rabobank.rb +0 -66
@@ -55,7 +55,7 @@ module ActiveMerchant #:nodoc:
|
|
55
55
|
|
56
56
|
action = if payment.respond_to?(:number)
|
57
57
|
add_payment(post, payment)
|
58
|
-
|
58
|
+
'/authorizations'
|
59
59
|
elsif payment.kind_of?(String)
|
60
60
|
"/cards/#{payment}/authorizations"
|
61
61
|
else
|
@@ -97,7 +97,7 @@ module ActiveMerchant #:nodoc:
|
|
97
97
|
post = {}
|
98
98
|
add_payment(post, credit_card)
|
99
99
|
|
100
|
-
commit(
|
100
|
+
commit('/cards', post)
|
101
101
|
end
|
102
102
|
|
103
103
|
def supports_scrubbing?
|
@@ -139,8 +139,8 @@ module ActiveMerchant #:nodoc:
|
|
139
139
|
|
140
140
|
def headers(api_key)
|
141
141
|
{
|
142
|
-
|
143
|
-
|
142
|
+
'Authorization' => 'Basic ' + Base64.strict_encode64("#{api_key}:"),
|
143
|
+
'User-Agent' => "Clearhaus ActiveMerchantBindings/#{ActiveMerchant::VERSION}"
|
144
144
|
}
|
145
145
|
end
|
146
146
|
|
@@ -155,7 +155,7 @@ module ActiveMerchant #:nodoc:
|
|
155
155
|
|
156
156
|
if @options[:signing_key] && @options[:private_key]
|
157
157
|
begin
|
158
|
-
headers[
|
158
|
+
headers['Signature'] = generate_signature(body)
|
159
159
|
rescue OpenSSL::PKey::RSAError => e
|
160
160
|
return Response.new(false, e.message)
|
161
161
|
end
|
@@ -65,15 +65,15 @@ module ActiveMerchant #:nodoc:
|
|
65
65
|
post[:state] = address[:state]
|
66
66
|
post[:postalCode] = address[:zip]
|
67
67
|
end
|
68
|
-
post[:countryCode] = ((address && address[:country]) ||
|
68
|
+
post[:countryCode] = ((address && address[:country]) || 'US')
|
69
69
|
end
|
70
70
|
|
71
71
|
def add_auth_purchase_options(post, money, options)
|
72
72
|
add_address(post, options[:address])
|
73
73
|
|
74
|
-
post[:customerIP] = options[:ip] ||
|
74
|
+
post[:customerIP] = options[:ip] || '127.0.0.1'
|
75
75
|
post[:amount] = amount(money)
|
76
|
-
post[:email] = options[:email] ||
|
76
|
+
post[:email] = options[:email] || 'unknown@example.com'
|
77
77
|
post[:currencyCode]= options[:currency] || currency(money)
|
78
78
|
post[:merchAcct] = options[:merchant]
|
79
79
|
|
@@ -127,8 +127,8 @@ module ActiveMerchant #:nodoc:
|
|
127
127
|
if response['returnText'].present?
|
128
128
|
response['returnText']
|
129
129
|
else
|
130
|
-
|
131
|
-
|
130
|
+
'Invalid response received from the CommerceGate API. ' +
|
131
|
+
'Please contact CommerceGate support if you continue to receive this message. ' +
|
132
132
|
"(The raw response returned by the API was #{response.inspect})"
|
133
133
|
end
|
134
134
|
end
|
@@ -136,7 +136,7 @@ module ActiveMerchant #:nodoc:
|
|
136
136
|
def post_data(parameters)
|
137
137
|
parameters.collect do |key, value|
|
138
138
|
"#{key}=#{CGI.escape(value.to_s)}"
|
139
|
-
end.join(
|
139
|
+
end.join('&')
|
140
140
|
end
|
141
141
|
end
|
142
142
|
end
|
@@ -23,7 +23,7 @@ module ActiveMerchant #:nodoc:
|
|
23
23
|
add_payment_source(post, payment_source, options)
|
24
24
|
add_details_data(post, options)
|
25
25
|
|
26
|
-
commit(:post, 'charges', post)
|
26
|
+
commit(:post, 'charges', post, options)
|
27
27
|
end
|
28
28
|
|
29
29
|
def authorize(money, payment_source, options = {})
|
@@ -34,7 +34,7 @@ module ActiveMerchant #:nodoc:
|
|
34
34
|
add_details_data(post, options)
|
35
35
|
|
36
36
|
post[:capture] = false
|
37
|
-
commit(:post,
|
37
|
+
commit(:post, 'charges', post, options)
|
38
38
|
end
|
39
39
|
|
40
40
|
def capture(money, identifier, options = {})
|
@@ -43,7 +43,7 @@ module ActiveMerchant #:nodoc:
|
|
43
43
|
post[:order_id] = identifier
|
44
44
|
add_order(post, money, options)
|
45
45
|
|
46
|
-
commit(:post, "charges/#{identifier}/capture", post)
|
46
|
+
commit(:post, "charges/#{identifier}/capture", post, options)
|
47
47
|
end
|
48
48
|
|
49
49
|
def refund(money, identifier, options)
|
@@ -52,12 +52,12 @@ module ActiveMerchant #:nodoc:
|
|
52
52
|
post[:order_id] = identifier
|
53
53
|
add_order(post, money, options)
|
54
54
|
|
55
|
-
commit(:post, "charges/#{identifier}/refund", post)
|
55
|
+
commit(:post, "charges/#{identifier}/refund", post, options)
|
56
56
|
end
|
57
57
|
|
58
58
|
def void(identifier, options = {})
|
59
59
|
post = {}
|
60
|
-
commit(:post, "charges/#{identifier}/void", post)
|
60
|
+
commit(:post, "charges/#{identifier}/void", post, options)
|
61
61
|
end
|
62
62
|
|
63
63
|
def supports_scrubbing
|
@@ -74,7 +74,7 @@ module ActiveMerchant #:nodoc:
|
|
74
74
|
private
|
75
75
|
|
76
76
|
def add_order(post, money, options)
|
77
|
-
post[:description] = options[:description] ||
|
77
|
+
post[:description] = options[:description] || 'Active Merchant Purchase'
|
78
78
|
post[:reference_id] = options[:order_id] if options[:order_id]
|
79
79
|
post[:currency] = (options[:currency] || currency(money)).downcase
|
80
80
|
post[:monthly_installments] = options[:monthly_installments] if options[:monthly_installments]
|
@@ -173,23 +173,28 @@ module ActiveMerchant #:nodoc:
|
|
173
173
|
JSON.parse(body)
|
174
174
|
end
|
175
175
|
|
176
|
-
def headers(
|
176
|
+
def headers(options)
|
177
177
|
{
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
178
|
+
'Accept' => "application/vnd.conekta-v#{@options[:version]}+json",
|
179
|
+
'Accept-Language' => 'es',
|
180
|
+
'Authorization' => 'Basic ' + Base64.encode64("#{@options[:key]}:"),
|
181
|
+
'RaiseHtmlError' => 'false',
|
182
|
+
'Conekta-Client-User-Agent' => {'agent'=>"Conekta ActiveMerchantBindings/#{ActiveMerchant::VERSION}"}.to_json,
|
183
|
+
'X-Conekta-Client-User-Agent' => conekta_client_user_agent(options),
|
184
|
+
'X-Conekta-Client-User-Metadata' => options[:meta].to_json
|
185
185
|
}
|
186
186
|
end
|
187
187
|
|
188
|
+
def conekta_client_user_agent(options)
|
189
|
+
return user_agent unless options[:application]
|
190
|
+
JSON.dump(JSON.parse(user_agent).merge!({application: options[:application]}))
|
191
|
+
end
|
192
|
+
|
188
193
|
def commit(method, url, parameters, options = {})
|
189
194
|
success = false
|
190
195
|
begin
|
191
|
-
raw_response = parse(ssl_request(method, live_url + url, (parameters ? parameters.to_query : nil), headers(options
|
192
|
-
success = (raw_response.key?(
|
196
|
+
raw_response = parse(ssl_request(method, live_url + url, (parameters ? parameters.to_query : nil), headers(options)))
|
197
|
+
success = (raw_response.key?('object') && (raw_response['object'] != 'error'))
|
193
198
|
rescue ResponseError => e
|
194
199
|
raw_response = response_error(e.response.body)
|
195
200
|
rescue JSON::ParserError
|
@@ -198,10 +203,10 @@ module ActiveMerchant #:nodoc:
|
|
198
203
|
|
199
204
|
Response.new(
|
200
205
|
success,
|
201
|
-
raw_response[
|
206
|
+
raw_response['message_to_purchaser'],
|
202
207
|
raw_response,
|
203
208
|
test: test?,
|
204
|
-
authorization: raw_response[
|
209
|
+
authorization: raw_response['id']
|
205
210
|
)
|
206
211
|
end
|
207
212
|
|
@@ -217,7 +222,7 @@ module ActiveMerchant #:nodoc:
|
|
217
222
|
msg = 'Invalid response received from the Conekta API.'
|
218
223
|
msg += " (The raw response returned by the API was #{raw_response.inspect})"
|
219
224
|
{
|
220
|
-
|
225
|
+
'message' => msg
|
221
226
|
}
|
222
227
|
end
|
223
228
|
end
|
@@ -16,29 +16,29 @@ module ActiveMerchant #:nodoc:
|
|
16
16
|
self.display_name = 'Creditcall'
|
17
17
|
|
18
18
|
CVV_CODE = {
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
'matched' => 'M',
|
20
|
+
'notmatched' => 'N',
|
21
|
+
'notchecked' => 'P',
|
22
|
+
'partialmatch' => 'N'
|
23
23
|
}
|
24
24
|
|
25
25
|
AVS_CODE = {
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
26
|
+
'matched;matched' => 'D',
|
27
|
+
'matched;notchecked' =>'B',
|
28
|
+
'matched;notmatched' => 'A',
|
29
|
+
'matched;partialmatch' => 'A',
|
30
|
+
'notchecked;matched' => 'P',
|
31
|
+
'notchecked;notchecked' =>'I',
|
32
|
+
'notchecked;notmatched' => 'I',
|
33
|
+
'notchecked;partialmatch' => 'I',
|
34
|
+
'notmatched;matched' => 'W',
|
35
|
+
'notmatched;notchecked' =>'C',
|
36
|
+
'notmatched;notmatched' => 'C',
|
37
|
+
'notmatched;partialmatch' => 'C',
|
38
|
+
'partialmatched;matched' => 'W',
|
39
|
+
'partialmatched;notchecked' =>'C',
|
40
|
+
'partialmatched;notmatched' => 'C',
|
41
|
+
'partialmatched;partialmatch' => 'C'
|
42
42
|
}
|
43
43
|
|
44
44
|
def initialize(options={})
|
@@ -68,7 +68,7 @@ module ActiveMerchant #:nodoc:
|
|
68
68
|
|
69
69
|
def authorize(money, payment_method, options={})
|
70
70
|
request = build_xml_request do |xml|
|
71
|
-
add_transaction_details(xml, money, nil,
|
71
|
+
add_transaction_details(xml, money, nil, 'Auth', options)
|
72
72
|
add_terminal_details(xml, options)
|
73
73
|
add_card_details(xml, payment_method, options)
|
74
74
|
end
|
@@ -78,7 +78,7 @@ module ActiveMerchant #:nodoc:
|
|
78
78
|
|
79
79
|
def capture(money, authorization, options={})
|
80
80
|
request = build_xml_request do |xml|
|
81
|
-
add_transaction_details(xml, money, authorization,
|
81
|
+
add_transaction_details(xml, money, authorization, 'Conf', options)
|
82
82
|
add_terminal_details(xml, options)
|
83
83
|
end
|
84
84
|
|
@@ -87,7 +87,7 @@ module ActiveMerchant #:nodoc:
|
|
87
87
|
|
88
88
|
def refund(money, authorization, options={})
|
89
89
|
request = build_xml_request do |xml|
|
90
|
-
add_transaction_details(xml, money, authorization,
|
90
|
+
add_transaction_details(xml, money, authorization, 'Refund', options)
|
91
91
|
add_terminal_details(xml, options)
|
92
92
|
end
|
93
93
|
|
@@ -96,7 +96,7 @@ module ActiveMerchant #:nodoc:
|
|
96
96
|
|
97
97
|
def void(authorization, options={})
|
98
98
|
request = build_xml_request do |xml|
|
99
|
-
add_transaction_details(xml, nil, authorization,
|
99
|
+
add_transaction_details(xml, nil, authorization, 'Void', options)
|
100
100
|
add_terminal_details(xml, options)
|
101
101
|
end
|
102
102
|
|
@@ -128,16 +128,16 @@ module ActiveMerchant #:nodoc:
|
|
128
128
|
end
|
129
129
|
|
130
130
|
def cvv_result_code_from(params)
|
131
|
-
CVV_CODE[params[
|
131
|
+
CVV_CODE[params['CSC']]
|
132
132
|
end
|
133
133
|
|
134
134
|
def error_result_code_from(params)
|
135
|
-
params[
|
135
|
+
params['ErrorCode']
|
136
136
|
end
|
137
137
|
|
138
138
|
def build_xml_request
|
139
139
|
builder = Nokogiri::XML::Builder.new do |xml|
|
140
|
-
xml.Request(type:
|
140
|
+
xml.Request(type: 'CardEaseXML', version: '1.0.0') do
|
141
141
|
yield(xml)
|
142
142
|
end
|
143
143
|
end
|
@@ -147,9 +147,9 @@ 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:
|
150
|
+
xml.Amount(unit: 'Minor'){ xml.text(amount) } if amount
|
151
151
|
xml.CardEaseReference authorization if authorization
|
152
|
-
xml.VoidReason
|
152
|
+
xml.VoidReason '01' if type == 'Void'
|
153
153
|
end
|
154
154
|
end
|
155
155
|
|
@@ -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:
|
160
|
+
xml.Software(version: 'SoftwareVersion'){ xml.text('SoftwareName') }
|
161
161
|
end
|
162
162
|
end
|
163
163
|
|
@@ -191,12 +191,12 @@ module ActiveMerchant #:nodoc:
|
|
191
191
|
response = {}
|
192
192
|
xml = Nokogiri::XML(body)
|
193
193
|
|
194
|
-
node = xml.xpath(
|
194
|
+
node = xml.xpath('//Response/TransactionDetails')
|
195
195
|
node.children.each do |childnode|
|
196
196
|
response[childnode.name] = childnode.text
|
197
197
|
end
|
198
198
|
|
199
|
-
node = xml.xpath(
|
199
|
+
node = xml.xpath('//Response/Result')
|
200
200
|
node.children.each do |childnode|
|
201
201
|
if childnode.elements.empty?
|
202
202
|
response[childnode.name] = childnode.text
|
@@ -205,7 +205,7 @@ module ActiveMerchant #:nodoc:
|
|
205
205
|
end
|
206
206
|
end
|
207
207
|
|
208
|
-
node = xml.xpath(
|
208
|
+
node = xml.xpath('//Response/CardDetails')
|
209
209
|
node.children.each do |childnode|
|
210
210
|
if childnode.elements.empty?
|
211
211
|
response[childnode.name] = childnode.text
|
@@ -220,9 +220,9 @@ module ActiveMerchant #:nodoc:
|
|
220
220
|
|
221
221
|
def childnode_to_response(response, childnode)
|
222
222
|
childnode.elements.each do |element|
|
223
|
-
if element.name ==
|
224
|
-
response[
|
225
|
-
response[
|
223
|
+
if element.name == 'Error'
|
224
|
+
response['ErrorCode'] = element.attr('code')
|
225
|
+
response['ErrorMessage'] = element.text
|
226
226
|
else
|
227
227
|
response[element.name] = element.text
|
228
228
|
end
|
@@ -249,23 +249,23 @@ module ActiveMerchant #:nodoc:
|
|
249
249
|
end
|
250
250
|
|
251
251
|
def success_from(response)
|
252
|
-
response[
|
252
|
+
response['LocalResult'] == '0' || response['LocalResult'] == '00'
|
253
253
|
end
|
254
254
|
|
255
255
|
def message_from(response)
|
256
256
|
if success_from(response)
|
257
|
-
|
257
|
+
'Succeeded'
|
258
258
|
else
|
259
|
-
response[
|
259
|
+
response['ErrorMessage']
|
260
260
|
end
|
261
261
|
end
|
262
262
|
|
263
263
|
def authorization_from(response)
|
264
|
-
response[
|
264
|
+
response['CardEaseReference']
|
265
265
|
end
|
266
266
|
|
267
267
|
def manual_type(options)
|
268
|
-
options[:manual_type]
|
268
|
+
options[:manual_type] || 'ecommerce'
|
269
269
|
end
|
270
270
|
end
|
271
271
|
end
|
@@ -3,10 +3,10 @@ module ActiveMerchant #:nodoc:
|
|
3
3
|
class CredoraxGateway < Gateway
|
4
4
|
class_attribute :test_url, :live_na_url, :live_eu_url
|
5
5
|
|
6
|
-
self.display_name =
|
7
|
-
self.homepage_url =
|
6
|
+
self.display_name = 'Credorax Gateway'
|
7
|
+
self.homepage_url = 'https://www.credorax.com/'
|
8
8
|
|
9
|
-
self.test_url =
|
9
|
+
self.test_url = 'https://intconsole.credorax.com/intenv/service/gateway'
|
10
10
|
|
11
11
|
# The live URL is assigned on a per merchant basis once certification has passed
|
12
12
|
# See the Credorax remote tests for the full certification test suite
|
@@ -16,7 +16,7 @@ module ActiveMerchant #:nodoc:
|
|
16
16
|
self.live_url = 'https://assigned-subdomain.credorax.net/crax_gate/service/gateway'
|
17
17
|
|
18
18
|
self.supported_countries = %w(DE GB FR IT ES PL NL BE GR CZ PT SE HU RS AT CH BG DK FI SK NO IE HR BA AL LT MK SI LV EE ME LU MT IS AD MC LI SM)
|
19
|
-
self.default_currency =
|
19
|
+
self.default_currency = 'EUR'
|
20
20
|
self.currencies_without_fractions = %w(CLP JPY KRW PYG VND)
|
21
21
|
self.currencies_with_three_decimal_places = %w(BHD JOD KWD OMR RSD TND)
|
22
22
|
|
@@ -24,96 +24,96 @@ module ActiveMerchant #:nodoc:
|
|
24
24
|
self.supported_cardtypes = [:visa, :master, :maestro]
|
25
25
|
|
26
26
|
RESPONSE_MESSAGES = {
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
27
|
+
'00' => 'Approved or completed successfully',
|
28
|
+
'01' => 'Refer to card issuer',
|
29
|
+
'02' => 'Refer to card issuer special condition',
|
30
|
+
'03' => 'Invalid merchant',
|
31
|
+
'04' => 'Pick up card',
|
32
|
+
'05' => 'Do not Honour',
|
33
|
+
'06' => 'Error',
|
34
|
+
'07' => 'Pick up card special condition',
|
35
|
+
'08' => 'Honour with identification',
|
36
|
+
'09' => 'Request in progress',
|
37
|
+
'10' => 'Approved for partial amount',
|
38
|
+
'11' => 'Approved (VIP)',
|
39
|
+
'12' => 'Invalid transaction',
|
40
|
+
'13' => 'Invalid amount',
|
41
|
+
'14' => 'Invalid card number',
|
42
|
+
'15' => 'No such issuer',
|
43
|
+
'16' => 'Approved, update track 3',
|
44
|
+
'17' => 'Customer cancellation',
|
45
|
+
'18' => 'Customer dispute',
|
46
|
+
'19' => 'Re-enter transaction',
|
47
|
+
'20' => 'Invalid response',
|
48
|
+
'21' => 'No action taken',
|
49
|
+
'22' => 'Suspected malfunction',
|
50
|
+
'23' => 'Unacceptable transaction fee',
|
51
|
+
'24' => 'File update not supported by receiver',
|
52
|
+
'25' => 'No such record',
|
53
|
+
'26' => 'Duplicate record update, old record replaced',
|
54
|
+
'27' => 'File update field edit error',
|
55
|
+
'28' => 'File locked out while update',
|
56
|
+
'29' => 'File update error, contact acquirer',
|
57
|
+
'30' => 'Format error',
|
58
|
+
'31' => 'Issuer signed-off',
|
59
|
+
'32' => 'Completed partially',
|
60
|
+
'33' => 'Pick-up, expired card',
|
61
|
+
'34' => 'Suspect Fraud',
|
62
|
+
'35' => 'Pick-up, card acceptor contact acquirer',
|
63
|
+
'36' => 'Pick up, card restricted',
|
64
|
+
'37' => 'Pick up, call acquirer security',
|
65
|
+
'38' => 'Pick up, Allowable PIN tries exceeded',
|
66
|
+
'39' => 'Transaction Not Allowed',
|
67
|
+
'40' => 'Requested function not supported',
|
68
|
+
'41' => 'Lost Card, Pickup',
|
69
|
+
'42' => 'No universal account',
|
70
|
+
'43' => 'Pick up, stolen card',
|
71
|
+
'44' => 'No investment account',
|
72
|
+
'50' => 'Do not renew',
|
73
|
+
'51' => 'Not sufficient funds',
|
74
|
+
'52' => 'No checking Account',
|
75
|
+
'53' => 'No savings account',
|
76
|
+
'54' => 'Expired card',
|
77
|
+
'55' => 'Pin incorrect',
|
78
|
+
'56' => 'No card record',
|
79
|
+
'57' => 'Transaction not allowed for cardholder',
|
80
|
+
'58' => 'Transaction not allowed for merchant',
|
81
|
+
'59' => 'Suspected Fraud',
|
82
|
+
'60' => 'Card acceptor contact acquirer',
|
83
|
+
'61' => 'Exceeds withdrawal amount limit',
|
84
|
+
'62' => 'Restricted card',
|
85
|
+
'63' => 'Security violation',
|
86
|
+
'64' => 'Wrong original amount',
|
87
|
+
'65' => 'Activity count limit exceeded',
|
88
|
+
'66' => 'Call acquirers security department',
|
89
|
+
'67' => 'Card to be picked up at ATM',
|
90
|
+
'68' => 'Response received too late.',
|
91
|
+
'70' => 'Invalid transaction; contact card issuer',
|
92
|
+
'71' => 'Decline PIN not changed',
|
93
|
+
'75' => 'Pin tries exceeded',
|
94
|
+
'76' => 'Wrong PIN, number of PIN tries exceeded',
|
95
|
+
'77' => 'Wrong Reference No.',
|
96
|
+
'78' => 'Record Not Found',
|
97
|
+
'79' => 'Already reversed',
|
98
|
+
'80' => 'Network error',
|
99
|
+
'81' => 'Foreign network error / PIN cryptographic error',
|
100
|
+
'82' => 'Time out at issuer system',
|
101
|
+
'83' => 'Transaction failed',
|
102
|
+
'84' => 'Pre-authorization timed out',
|
103
|
+
'85' => 'No reason to decline',
|
104
|
+
'86' => 'Cannot verify pin',
|
105
|
+
'87' => 'Purchase amount only, no cashback allowed',
|
106
|
+
'88' => 'MAC sync Error',
|
107
|
+
'89' => 'Authentication failure',
|
108
|
+
'91' => 'Issuer not available',
|
109
|
+
'92' => 'Unable to route at acquirer Module',
|
110
|
+
'93' => 'Cannot be completed, violation of law',
|
111
|
+
'94' => 'Duplicate Transmission',
|
112
|
+
'95' => 'Reconcile error / Auth Not found',
|
113
|
+
'96' => 'System malfunction',
|
114
|
+
'R0' => 'Stop Payment Order',
|
115
|
+
'R1' => 'Revocation of Authorisation Order',
|
116
|
+
'R3' => 'Revocation of all Authorisations Order'
|
117
117
|
}
|
118
118
|
|
119
119
|
def initialize(options={})
|
@@ -215,12 +215,13 @@ module ActiveMerchant #:nodoc:
|
|
215
215
|
post[:a1] = generate_unique_id
|
216
216
|
post[:a5] = currency
|
217
217
|
post[:h9] = options[:order_id]
|
218
|
+
post[:i2] = options[:billing_descriptor] if options[:billing_descriptor]
|
218
219
|
end
|
219
220
|
|
220
221
|
CARD_TYPES = {
|
221
|
-
|
222
|
-
|
223
|
-
|
222
|
+
'visa' => '1',
|
223
|
+
'mastercard' => '2',
|
224
|
+
'maestro' => '9'
|
224
225
|
}
|
225
226
|
|
226
227
|
def add_payment_method(post, payment_method)
|
@@ -245,7 +246,7 @@ module ActiveMerchant #:nodoc:
|
|
245
246
|
end
|
246
247
|
|
247
248
|
def add_reference(post, authorization)
|
248
|
-
response_id, authorization_code, request_id, action = authorization.split(
|
249
|
+
response_id, authorization_code, request_id, action = authorization.split(';')
|
249
250
|
post[:g2] = response_id
|
250
251
|
post[:g3] = authorization_code
|
251
252
|
post[:g4] = request_id
|
@@ -292,8 +293,8 @@ module ActiveMerchant #:nodoc:
|
|
292
293
|
message_from(response),
|
293
294
|
response,
|
294
295
|
authorization: "#{response["Z1"]};#{response["Z4"]};#{response["A1"]};#{action}",
|
295
|
-
avs_result: AVSResult.new(code: response[
|
296
|
-
cvv_result: CVVResult.new(response[
|
296
|
+
avs_result: AVSResult.new(code: response['Z9']),
|
297
|
+
cvv_result: CVVResult.new(response['Z14']),
|
297
298
|
test: test?
|
298
299
|
)
|
299
300
|
end
|
@@ -330,14 +331,14 @@ module ActiveMerchant #:nodoc:
|
|
330
331
|
end
|
331
332
|
|
332
333
|
def success_from(response)
|
333
|
-
response[
|
334
|
+
response['Z2'] == '0'
|
334
335
|
end
|
335
336
|
|
336
337
|
def message_from(response)
|
337
338
|
if success_from(response)
|
338
|
-
|
339
|
+
'Succeeded'
|
339
340
|
else
|
340
|
-
RESPONSE_MESSAGES[response[
|
341
|
+
RESPONSE_MESSAGES[response['Z6']] || response['Z3'] || 'Unable to read error message'
|
341
342
|
end
|
342
343
|
end
|
343
344
|
end
|