activemerchant 1.79.2 → 1.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
@@ -191,7 +191,7 @@ module ActiveMerchant #:nodoc:
|
|
|
191
191
|
|
|
192
192
|
def do_authorize(params)
|
|
193
193
|
headers = {}
|
|
194
|
-
headers['Referer'] = (options[:password] ||
|
|
194
|
+
headers['Referer'] = (options[:password] || 'activemerchant.org')
|
|
195
195
|
|
|
196
196
|
response = raw_ssl_request(:post, live_url + 'auth/default.aspx', authorize_post_data(params), headers)
|
|
197
197
|
|
|
@@ -244,7 +244,7 @@ module ActiveMerchant #:nodoc:
|
|
|
244
244
|
def make_headers(data, soap_call)
|
|
245
245
|
{
|
|
246
246
|
'Content-Type' => 'text/xml; charset=utf-8',
|
|
247
|
-
'Host' =>
|
|
247
|
+
'Host' => 'ssl.ditonlinebetalingssystem.dk',
|
|
248
248
|
'Content-Length' => data.size.to_s,
|
|
249
249
|
'SOAPAction' => self.live_url + 'remote/payment/' + soap_call
|
|
250
250
|
}
|
|
@@ -274,12 +274,12 @@ module ActiveMerchant #:nodoc:
|
|
|
274
274
|
params[:declineurl] = live_url + 'auth/default.aspx?decline=1'
|
|
275
275
|
params[:merchantnumber] = @options[:login]
|
|
276
276
|
|
|
277
|
-
params.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join(
|
|
277
|
+
params.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
|
|
278
278
|
end
|
|
279
279
|
|
|
280
280
|
# Limited to 20 digits max
|
|
281
281
|
def format_order_number(number)
|
|
282
|
-
number.to_s.gsub(/[^\w]/, '').rjust(4,
|
|
282
|
+
number.to_s.gsub(/[^\w]/, '').rjust(4, '0')[0...20]
|
|
283
283
|
end
|
|
284
284
|
end
|
|
285
285
|
end
|
|
@@ -301,7 +301,7 @@ module ActiveMerchant #:nodoc:
|
|
|
301
301
|
post[:username] = options[:username]
|
|
302
302
|
post[:password] = options[:password]
|
|
303
303
|
end
|
|
304
|
-
post.merge(parameters).collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" unless value.nil? }.compact.join(
|
|
304
|
+
post.merge(parameters).collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" unless value.nil? }.compact.join('&')
|
|
305
305
|
end
|
|
306
306
|
end
|
|
307
307
|
end
|
|
@@ -65,13 +65,13 @@ module ActiveMerchant #:nodoc:
|
|
|
65
65
|
|
|
66
66
|
private
|
|
67
67
|
def requires_address!(options)
|
|
68
|
-
raise ArgumentError.new(
|
|
68
|
+
raise ArgumentError.new('Missing eWay required parameters: address or billing_address') unless (options.has_key?(:address) or options.has_key?(:billing_address))
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def add_creditcard(post, creditcard)
|
|
72
72
|
post[:CardNumber] = creditcard.number
|
|
73
|
-
post[:CardExpiryMonth] = sprintf(
|
|
74
|
-
post[:CardExpiryYear] = sprintf(
|
|
73
|
+
post[:CardExpiryMonth] = sprintf('%.2i', creditcard.month)
|
|
74
|
+
post[:CardExpiryYear] = sprintf('%.4i', creditcard.year)[-2..-1]
|
|
75
75
|
post[:CustomerFirstName] = creditcard.first_name
|
|
76
76
|
post[:CustomerLastName] = creditcard.last_name
|
|
77
77
|
post[:CardHoldersName] = creditcard.name
|
|
@@ -119,7 +119,7 @@ module ActiveMerchant #:nodoc:
|
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
def success?(response)
|
|
122
|
-
response[:ewaytrxnstatus] ==
|
|
122
|
+
response[:ewaytrxnstatus] == 'True'
|
|
123
123
|
end
|
|
124
124
|
|
|
125
125
|
def parse(xml)
|
|
@@ -134,7 +134,7 @@ module ActiveMerchant #:nodoc:
|
|
|
134
134
|
|
|
135
135
|
def post_data(parameters = {})
|
|
136
136
|
xml = REXML::Document.new
|
|
137
|
-
root = xml.add_element(
|
|
137
|
+
root = xml.add_element('ewaygateway')
|
|
138
138
|
|
|
139
139
|
parameters.each do |key, value|
|
|
140
140
|
root.add_element("eway#{key}").text = value
|
|
@@ -159,66 +159,66 @@ module ActiveMerchant #:nodoc:
|
|
|
159
159
|
end
|
|
160
160
|
|
|
161
161
|
MESSAGES = {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
162
|
+
'00' => 'Transaction Approved',
|
|
163
|
+
'01' => 'Refer to Issuer',
|
|
164
|
+
'02' => 'Refer to Issuer, special',
|
|
165
|
+
'03' => 'No Merchant',
|
|
166
|
+
'04' => 'Pick Up Card',
|
|
167
|
+
'05' => 'Do Not Honour',
|
|
168
|
+
'06' => 'Error',
|
|
169
|
+
'07' => 'Pick Up Card, Special',
|
|
170
|
+
'08' => 'Honour With Identification',
|
|
171
|
+
'09' => 'Request In Progress',
|
|
172
|
+
'10' => 'Approved For Partial Amount',
|
|
173
|
+
'11' => 'Approved, VIP',
|
|
174
|
+
'12' => 'Invalid Transaction',
|
|
175
|
+
'13' => 'Invalid Amount',
|
|
176
|
+
'14' => 'Invalid Card Number',
|
|
177
|
+
'15' => 'No Issuer',
|
|
178
|
+
'16' => 'Approved, Update Track 3',
|
|
179
|
+
'19' => 'Re-enter Last Transaction',
|
|
180
|
+
'21' => 'No Action Taken',
|
|
181
|
+
'22' => 'Suspected Malfunction',
|
|
182
|
+
'23' => 'Unacceptable Transaction Fee',
|
|
183
|
+
'25' => 'Unable to Locate Record On File',
|
|
184
|
+
'30' => 'Format Error',
|
|
185
|
+
'31' => 'Bank Not Supported By Switch',
|
|
186
|
+
'33' => 'Expired Card, Capture',
|
|
187
|
+
'34' => 'Suspected Fraud, Retain Card',
|
|
188
|
+
'35' => 'Card Acceptor, Contact Acquirer, Retain Card',
|
|
189
|
+
'36' => 'Restricted Card, Retain Card',
|
|
190
|
+
'37' => 'Contact Acquirer Security Department, Retain Card',
|
|
191
|
+
'38' => 'PIN Tries Exceeded, Capture',
|
|
192
|
+
'39' => 'No Credit Account',
|
|
193
|
+
'40' => 'Function Not Supported',
|
|
194
|
+
'41' => 'Lost Card',
|
|
195
|
+
'42' => 'No Universal Account',
|
|
196
|
+
'43' => 'Stolen Card',
|
|
197
|
+
'44' => 'No Investment Account',
|
|
198
|
+
'51' => 'Insufficient Funds',
|
|
199
|
+
'52' => 'No Cheque Account',
|
|
200
|
+
'53' => 'No Savings Account',
|
|
201
|
+
'54' => 'Expired Card',
|
|
202
|
+
'55' => 'Incorrect PIN',
|
|
203
|
+
'56' => 'No Card Record',
|
|
204
|
+
'57' => 'Function Not Permitted to Cardholder',
|
|
205
|
+
'58' => 'Function Not Permitted to Terminal',
|
|
206
|
+
'59' => 'Suspected Fraud',
|
|
207
|
+
'60' => 'Acceptor Contact Acquirer',
|
|
208
|
+
'61' => 'Exceeds Withdrawal Limit',
|
|
209
|
+
'62' => 'Restricted Card',
|
|
210
|
+
'63' => 'Security Violation',
|
|
211
|
+
'64' => 'Original Amount Incorrect',
|
|
212
|
+
'66' => 'Acceptor Contact Acquirer, Security',
|
|
213
|
+
'67' => 'Capture Card',
|
|
214
|
+
'75' => 'PIN Tries Exceeded',
|
|
215
|
+
'82' => 'CVV Validation Error',
|
|
216
|
+
'90' => 'Cutoff In Progress',
|
|
217
|
+
'91' => 'Card Issuer Unavailable',
|
|
218
|
+
'92' => 'Unable To Route Transaction',
|
|
219
|
+
'93' => 'Cannot Complete, Violation Of The Law',
|
|
220
|
+
'94' => 'Duplicate Transaction',
|
|
221
|
+
'96' => 'System Error'
|
|
222
222
|
}
|
|
223
223
|
end
|
|
224
224
|
end
|
|
@@ -46,7 +46,7 @@ module ActiveMerchant #:nodoc:
|
|
|
46
46
|
add_address(post, billing_address)
|
|
47
47
|
add_misc_fields(post, options)
|
|
48
48
|
|
|
49
|
-
commit(
|
|
49
|
+
commit('CreateCustomer', post)
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
def update(billing_id, creditcard, options={})
|
|
@@ -64,7 +64,7 @@ module ActiveMerchant #:nodoc:
|
|
|
64
64
|
add_address(post, billing_address)
|
|
65
65
|
add_misc_fields(post, options)
|
|
66
66
|
|
|
67
|
-
commit(
|
|
67
|
+
commit('UpdateCustomer', post)
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
# Process a payment in the given amount against the stored credit card given by billing_id
|
|
@@ -86,7 +86,7 @@ module ActiveMerchant #:nodoc:
|
|
|
86
86
|
post[:amount]=money
|
|
87
87
|
add_invoice(post, options)
|
|
88
88
|
|
|
89
|
-
commit(
|
|
89
|
+
commit('ProcessPayment', post)
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
# Get customer's stored credit card details given by billing_id
|
|
@@ -98,7 +98,7 @@ module ActiveMerchant #:nodoc:
|
|
|
98
98
|
post = {}
|
|
99
99
|
post[:managedCustomerID] = billing_id.to_s
|
|
100
100
|
|
|
101
|
-
commit(
|
|
101
|
+
commit('QueryCustomer', post)
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
# TODO: eWay API also provides QueryPayment
|
|
@@ -106,8 +106,8 @@ module ActiveMerchant #:nodoc:
|
|
|
106
106
|
private
|
|
107
107
|
|
|
108
108
|
def eway_requires!(hash)
|
|
109
|
-
raise ArgumentError.new(
|
|
110
|
-
raise ArgumentError.new(
|
|
109
|
+
raise ArgumentError.new('Missing eWay required parameter in `billing_address`: title') unless hash.has_key?(:title)
|
|
110
|
+
raise ArgumentError.new('Missing eWay required parameter in `billing_address`: country') unless hash.has_key?(:country)
|
|
111
111
|
end
|
|
112
112
|
|
|
113
113
|
def add_address(post, address)
|
|
@@ -140,8 +140,8 @@ module ActiveMerchant #:nodoc:
|
|
|
140
140
|
# add credit card details to be stored by eway. NOTE eway requires "title" field
|
|
141
141
|
def add_creditcard(post, creditcard)
|
|
142
142
|
post[:CCNumber] = creditcard.number
|
|
143
|
-
post[:CCExpiryMonth] = sprintf(
|
|
144
|
-
post[:CCExpiryYear] = sprintf(
|
|
143
|
+
post[:CCExpiryMonth] = sprintf('%.2i', creditcard.month)
|
|
144
|
+
post[:CCExpiryYear] = sprintf('%.4i', creditcard.year)[-2..-1]
|
|
145
145
|
post[:CCNameOnCard] = creditcard.name
|
|
146
146
|
post[:FirstName] = creditcard.first_name
|
|
147
147
|
post[:LastName] = creditcard.last_name
|
|
@@ -150,7 +150,7 @@ module ActiveMerchant #:nodoc:
|
|
|
150
150
|
def parse(body)
|
|
151
151
|
reply = {}
|
|
152
152
|
xml = REXML::Document.new(body)
|
|
153
|
-
if root = REXML::XPath.first(xml,
|
|
153
|
+
if root = REXML::XPath.first(xml, '//soap:Fault') then
|
|
154
154
|
reply=parse_fault(root)
|
|
155
155
|
else
|
|
156
156
|
if root = REXML::XPath.first(xml, '//ProcessPaymentResponse/ewayResponse') then
|
|
@@ -173,12 +173,12 @@ module ActiveMerchant #:nodoc:
|
|
|
173
173
|
# ERROR: This state should never occur. If there is a problem,
|
|
174
174
|
# a soap:Fault will be returned. The presence of this
|
|
175
175
|
# element always means a success.
|
|
176
|
-
raise StandardError,
|
|
176
|
+
raise StandardError, 'Unexpected "false" in UpdateCustomerResult'
|
|
177
177
|
end
|
|
178
178
|
else
|
|
179
179
|
# ERROR: This state should never occur currently. We have handled
|
|
180
180
|
# responses for all the methods which we support.
|
|
181
|
-
raise StandardError,
|
|
181
|
+
raise StandardError, 'Unexpected response'
|
|
182
182
|
end
|
|
183
183
|
end
|
|
184
184
|
end
|
|
@@ -3,15 +3,15 @@ require 'json'
|
|
|
3
3
|
module ActiveMerchant #:nodoc:
|
|
4
4
|
module Billing #:nodoc:
|
|
5
5
|
class EwayRapidGateway < Gateway
|
|
6
|
-
self.test_url =
|
|
7
|
-
self.live_url =
|
|
6
|
+
self.test_url = 'https://api.sandbox.ewaypayments.com/'
|
|
7
|
+
self.live_url = 'https://api.ewaypayments.com/'
|
|
8
8
|
|
|
9
9
|
self.money_format = :cents
|
|
10
10
|
self.supported_countries = ['AU', 'NZ', 'GB', 'SG', 'MY', 'HK']
|
|
11
11
|
self.supported_cardtypes = [:visa, :master, :american_express, :diners_club, :jcb]
|
|
12
|
-
self.homepage_url =
|
|
13
|
-
self.display_name =
|
|
14
|
-
self.default_currency =
|
|
12
|
+
self.homepage_url = 'http://www.eway.com.au/'
|
|
13
|
+
self.display_name = 'eWAY Rapid 3.1'
|
|
14
|
+
self.default_currency = 'AUD'
|
|
15
15
|
|
|
16
16
|
class_attribute :partner_id
|
|
17
17
|
|
|
@@ -72,13 +72,13 @@ module ActiveMerchant #:nodoc:
|
|
|
72
72
|
add_metadata(params, options)
|
|
73
73
|
add_invoice(params, amount, options)
|
|
74
74
|
add_reference(params, identification)
|
|
75
|
-
commit(url_for(
|
|
75
|
+
commit(url_for('CapturePayment'), params)
|
|
76
76
|
end
|
|
77
77
|
|
|
78
78
|
def void(identification, options = {})
|
|
79
79
|
params = {}
|
|
80
80
|
add_reference(params, identification)
|
|
81
|
-
commit(url_for(
|
|
81
|
+
commit(url_for('CancelAuthorisation'), params)
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
# Public: Refund a transaction.
|
|
@@ -109,8 +109,8 @@ module ActiveMerchant #:nodoc:
|
|
|
109
109
|
def refund(amount, identification, options = {})
|
|
110
110
|
params = {}
|
|
111
111
|
add_metadata(params, options)
|
|
112
|
-
add_invoice(params, amount, options,
|
|
113
|
-
add_reference(params[
|
|
112
|
+
add_invoice(params, amount, options, 'Refund')
|
|
113
|
+
add_reference(params['Refund'], identification)
|
|
114
114
|
add_customer_data(params, options)
|
|
115
115
|
commit(url_for("Transaction/#{identification}/Refund"), params)
|
|
116
116
|
end
|
|
@@ -140,7 +140,7 @@ module ActiveMerchant #:nodoc:
|
|
|
140
140
|
add_customer_data(params, options)
|
|
141
141
|
add_credit_card(params, payment_method, options)
|
|
142
142
|
params['Method'] = 'CreateTokenCustomer'
|
|
143
|
-
commit(url_for(
|
|
143
|
+
commit(url_for('Transaction'), params)
|
|
144
144
|
end
|
|
145
145
|
|
|
146
146
|
# Public: Update a customer's data
|
|
@@ -170,7 +170,7 @@ module ActiveMerchant #:nodoc:
|
|
|
170
170
|
add_credit_card(params, payment_method, options)
|
|
171
171
|
add_customer_token(params, customer_token)
|
|
172
172
|
params['Method'] = 'UpdateTokenCustomer'
|
|
173
|
-
commit(url_for(
|
|
173
|
+
commit(url_for('Transaction'), params)
|
|
174
174
|
end
|
|
175
175
|
|
|
176
176
|
def supports_scrubbing
|
|
@@ -197,7 +197,7 @@ module ActiveMerchant #:nodoc:
|
|
|
197
197
|
params
|
|
198
198
|
end
|
|
199
199
|
|
|
200
|
-
def add_invoice(params, money, options, key =
|
|
200
|
+
def add_invoice(params, money, options, key = 'Payment')
|
|
201
201
|
currency_code = options[:currency] || currency(money)
|
|
202
202
|
params[key] = {
|
|
203
203
|
'TotalAmount' => localized_amount(money, currency_code),
|
|
@@ -243,8 +243,8 @@ module ActiveMerchant #:nodoc:
|
|
|
243
243
|
card_details = params['Customer']['CardDetails'] = {}
|
|
244
244
|
card_details['Name'] = truncate(credit_card.name, 50)
|
|
245
245
|
card_details['Number'] = credit_card.number
|
|
246
|
-
card_details['ExpiryMonth'] =
|
|
247
|
-
card_details['ExpiryYear'] =
|
|
246
|
+
card_details['ExpiryMonth'] = '%02d' % (credit_card.month || 0)
|
|
247
|
+
card_details['ExpiryYear'] = '%02d' % (credit_card.year || 0)
|
|
248
248
|
card_details['CVN'] = credit_card.verification_value
|
|
249
249
|
else
|
|
250
250
|
add_customer_token(params, credit_card)
|
|
@@ -262,8 +262,8 @@ module ActiveMerchant #:nodoc:
|
|
|
262
262
|
|
|
263
263
|
def commit(url, params)
|
|
264
264
|
headers = {
|
|
265
|
-
|
|
266
|
-
|
|
265
|
+
'Authorization' => ('Basic ' + Base64.strict_encode64(@options[:login].to_s + ':' + @options[:password].to_s).chomp),
|
|
266
|
+
'Content-Type' => 'application/json'
|
|
267
267
|
}
|
|
268
268
|
request = params.to_json
|
|
269
269
|
raw = parse(ssl_post(url, request, headers))
|
|
@@ -287,12 +287,12 @@ module ActiveMerchant #:nodoc:
|
|
|
287
287
|
end
|
|
288
288
|
|
|
289
289
|
def success?(response)
|
|
290
|
-
if response['ResponseCode'] ==
|
|
290
|
+
if response['ResponseCode'] == '00'
|
|
291
291
|
true
|
|
292
292
|
elsif response['TransactionStatus']
|
|
293
293
|
(response['TransactionStatus'] == true)
|
|
294
|
-
elsif response[
|
|
295
|
-
(response[
|
|
294
|
+
elsif response['Succeeded']
|
|
295
|
+
(response['Succeeded'] == true)
|
|
296
296
|
else
|
|
297
297
|
false
|
|
298
298
|
end
|
|
@@ -311,9 +311,9 @@ module ActiveMerchant #:nodoc:
|
|
|
311
311
|
elsif response['ResponseCode']
|
|
312
312
|
ActiveMerchant::Billing::EwayGateway::MESSAGES[response['ResponseCode']]
|
|
313
313
|
elsif succeeded
|
|
314
|
-
|
|
314
|
+
'Succeeded'
|
|
315
315
|
else
|
|
316
|
-
|
|
316
|
+
'Failed'
|
|
317
317
|
end
|
|
318
318
|
end
|
|
319
319
|
|
|
@@ -326,12 +326,12 @@ module ActiveMerchant #:nodoc:
|
|
|
326
326
|
def avs_result_from(response)
|
|
327
327
|
verification = response['Verification'] || {}
|
|
328
328
|
code = case verification['Address']
|
|
329
|
-
when
|
|
330
|
-
|
|
331
|
-
when
|
|
332
|
-
|
|
329
|
+
when 'Valid'
|
|
330
|
+
'M'
|
|
331
|
+
when 'Invalid'
|
|
332
|
+
'N'
|
|
333
333
|
else
|
|
334
|
-
|
|
334
|
+
'I'
|
|
335
335
|
end
|
|
336
336
|
{:code => code}
|
|
337
337
|
end
|
|
@@ -339,12 +339,12 @@ module ActiveMerchant #:nodoc:
|
|
|
339
339
|
def cvv_result_from(response)
|
|
340
340
|
verification = response['Verification'] || {}
|
|
341
341
|
case verification['CVN']
|
|
342
|
-
when
|
|
343
|
-
|
|
344
|
-
when
|
|
345
|
-
|
|
342
|
+
when 'Valid'
|
|
343
|
+
'M'
|
|
344
|
+
when 'Invalid'
|
|
345
|
+
'N'
|
|
346
346
|
else
|
|
347
|
-
|
|
347
|
+
'P'
|
|
348
348
|
end
|
|
349
349
|
end
|
|
350
350
|
|
|
@@ -3,15 +3,15 @@ module ActiveMerchant #:nodoc:
|
|
|
3
3
|
class ExactGateway < Gateway
|
|
4
4
|
self.live_url = self.test_url = 'https://secure2.e-xact.com/vplug-in/transaction/rpc-enc/service.asmx'
|
|
5
5
|
|
|
6
|
-
API_VERSION =
|
|
6
|
+
API_VERSION = '8.5'
|
|
7
7
|
|
|
8
|
-
TEST_LOGINS = [ {:login =>
|
|
9
|
-
{:login =>
|
|
8
|
+
TEST_LOGINS = [ {:login => 'A00049-01', :password => 'test1'},
|
|
9
|
+
{:login => 'A00427-01', :password => 'testus'} ]
|
|
10
10
|
|
|
11
|
-
TRANSACTIONS = { :sale =>
|
|
12
|
-
:authorization =>
|
|
13
|
-
:capture =>
|
|
14
|
-
:credit =>
|
|
11
|
+
TRANSACTIONS = { :sale => '00',
|
|
12
|
+
:authorization => '01',
|
|
13
|
+
:capture => '32',
|
|
14
|
+
:credit => '34' }
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
ENVELOPE_NAMESPACES = { 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
|
|
@@ -19,7 +19,7 @@ module ActiveMerchant #:nodoc:
|
|
|
19
19
|
'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance'
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
SEND_AND_COMMIT_ATTRIBUTES = { 'xmlns:n1' =>
|
|
22
|
+
SEND_AND_COMMIT_ATTRIBUTES = { 'xmlns:n1' => 'http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/Request',
|
|
23
23
|
'env:encodingStyle' => 'http://schemas.xmlsoap.org/soap/encoding/'
|
|
24
24
|
}
|
|
25
25
|
|
|
@@ -27,11 +27,11 @@ module ActiveMerchant #:nodoc:
|
|
|
27
27
|
'xsi:type' => 'n2:Transaction'
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
POST_HEADERS = { 'soapAction' =>
|
|
30
|
+
POST_HEADERS = { 'soapAction' => 'http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/SendAndCommit',
|
|
31
31
|
'Content-Type' => 'text/xml'
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
SUCCESS =
|
|
34
|
+
SUCCESS = 'true'
|
|
35
35
|
|
|
36
36
|
SENSITIVE_FIELDS = [ :verification_str2, :expiry_date, :card_number ]
|
|
37
37
|
|
|
@@ -207,9 +207,9 @@ module ActiveMerchant #:nodoc:
|
|
|
207
207
|
response = {}
|
|
208
208
|
xml = REXML::Document.new(xml)
|
|
209
209
|
|
|
210
|
-
if root = REXML::XPath.first(xml,
|
|
210
|
+
if root = REXML::XPath.first(xml, '//types:TransactionResult')
|
|
211
211
|
parse_elements(response, root)
|
|
212
|
-
elsif root = REXML::XPath.first(xml,
|
|
212
|
+
elsif root = REXML::XPath.first(xml, '//soap:Fault')
|
|
213
213
|
parse_elements(response, root)
|
|
214
214
|
end
|
|
215
215
|
|