activemerchant 1.42.6 → 1.90.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 +5 -13
- data/CHANGELOG +1420 -2
- data/CONTRIBUTORS +106 -0
- data/README.md +107 -103
- data/lib/active_merchant/billing/apple_pay_payment_token.rb +22 -0
- data/lib/active_merchant/billing/avs_result.rb +12 -13
- data/lib/active_merchant/billing/base.rb +13 -16
- data/lib/active_merchant/billing/check.rb +35 -24
- data/lib/active_merchant/billing/compatibility.rb +117 -0
- data/lib/active_merchant/billing/credit_card.rb +196 -81
- data/lib/active_merchant/billing/credit_card_formatting.rb +6 -4
- data/lib/active_merchant/billing/credit_card_methods.rb +199 -75
- data/lib/active_merchant/billing/cvv_result.rb +15 -15
- data/lib/active_merchant/billing/gateway.rb +171 -39
- data/lib/active_merchant/billing/gateways/adyen.rb +380 -0
- data/lib/active_merchant/billing/gateways/allied_wallet.rb +205 -0
- data/lib/active_merchant/billing/gateways/authorize_net.rb +933 -604
- data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +417 -0
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +74 -54
- data/lib/active_merchant/billing/gateways/axcessms.rb +181 -0
- data/lib/active_merchant/billing/gateways/balanced.rb +130 -370
- data/lib/active_merchant/billing/gateways/bank_frick.rb +225 -0
- data/lib/active_merchant/billing/gateways/banwire.rb +23 -12
- data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +351 -0
- 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/beanstream_core.rb +109 -32
- data/lib/active_merchant/billing/gateways/beanstream.rb +59 -13
- data/lib/active_merchant/billing/gateways/beanstream_interac.rb +12 -9
- data/lib/active_merchant/billing/gateways/blue_pay.rb +520 -498
- data/lib/active_merchant/billing/gateways/blue_snap.rb +347 -0
- data/lib/active_merchant/billing/gateways/bogus.rb +80 -46
- data/lib/active_merchant/billing/gateways/borgun.rb +220 -0
- data/lib/active_merchant/billing/gateways/bpoint.rb +277 -0
- data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +15 -2
- data/lib/active_merchant/billing/gateways/braintree.rb +2 -2
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +311 -121
- data/lib/active_merchant/billing/gateways/braintree_orange.rb +4 -4
- data/lib/active_merchant/billing/gateways/bridge_pay.rb +244 -0
- data/lib/active_merchant/billing/gateways/cams.rb +230 -0
- data/lib/active_merchant/billing/gateways/card_connect.rb +311 -0
- data/lib/active_merchant/billing/gateways/card_save.rb +6 -7
- data/lib/active_merchant/billing/gateways/card_stream.rb +235 -89
- data/lib/active_merchant/billing/gateways/cardknox.rb +327 -0
- data/lib/active_merchant/billing/gateways/cardprocess.rb +254 -0
- data/lib/active_merchant/billing/gateways/cashnet.rb +219 -0
- data/lib/active_merchant/billing/gateways/cc5.rb +50 -8
- data/lib/active_merchant/billing/gateways/cecabank.rb +27 -14
- data/lib/active_merchant/billing/gateways/cenpos.rb +327 -0
- data/lib/active_merchant/billing/gateways/checkout.rb +214 -0
- data/lib/active_merchant/billing/gateways/checkout_v2.rb +233 -0
- data/lib/active_merchant/billing/gateways/citrus_pay.rb +22 -0
- data/lib/active_merchant/billing/gateways/clearhaus.rb +220 -0
- data/lib/active_merchant/billing/gateways/commercegate.rb +142 -0
- data/lib/active_merchant/billing/gateways/conekta.rb +91 -97
- data/lib/active_merchant/billing/gateways/creditcall.rb +271 -0
- data/lib/active_merchant/billing/gateways/credorax.rb +356 -0
- data/lib/active_merchant/billing/gateways/ct_payment.rb +268 -0
- data/lib/active_merchant/billing/gateways/culqi.rb +277 -0
- data/lib/active_merchant/billing/gateways/cyber_source.rb +294 -158
- data/lib/active_merchant/billing/gateways/d_local.rb +226 -0
- data/lib/active_merchant/billing/gateways/data_cash.rb +59 -347
- data/lib/active_merchant/billing/gateways/dibs.rb +199 -0
- data/lib/active_merchant/billing/gateways/digitzs.rb +292 -0
- data/lib/active_merchant/billing/gateways/ebanx.rb +296 -0
- data/lib/active_merchant/billing/gateways/efsnet.rb +24 -39
- data/lib/active_merchant/billing/gateways/elavon.rb +146 -147
- data/lib/active_merchant/billing/gateways/element.rb +356 -0
- data/lib/active_merchant/billing/gateways/epay.rb +41 -31
- data/lib/active_merchant/billing/gateways/evo_ca.rb +1 -1
- data/lib/active_merchant/billing/gateways/eway.rb +79 -78
- data/lib/active_merchant/billing/gateways/eway_managed.rb +35 -36
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +369 -228
- data/lib/active_merchant/billing/gateways/exact.rb +32 -26
- data/lib/active_merchant/billing/gateways/ezic.rb +195 -0
- data/lib/active_merchant/billing/gateways/fat_zebra.rb +90 -64
- data/lib/active_merchant/billing/gateways/federated_canada.rb +6 -14
- data/lib/active_merchant/billing/gateways/finansbank.rb +3 -3
- data/lib/active_merchant/billing/gateways/first_giving.rb +142 -0
- data/lib/active_merchant/billing/gateways/first_pay.rb +128 -122
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +190 -64
- data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +446 -0
- data/lib/active_merchant/billing/gateways/flo2cash.rb +215 -0
- data/lib/active_merchant/billing/gateways/flo2cash_simple.rb +20 -0
- data/lib/active_merchant/billing/gateways/forte.rb +270 -0
- data/lib/active_merchant/billing/gateways/garanti.rb +29 -27
- data/lib/active_merchant/billing/gateways/global_collect.rb +340 -0
- data/lib/active_merchant/billing/gateways/global_transport.rb +194 -0
- data/lib/active_merchant/billing/gateways/hdfc.rb +35 -36
- data/lib/active_merchant/billing/gateways/hps.rb +305 -0
- data/lib/active_merchant/billing/gateways/iats_payments.rb +271 -16
- data/lib/active_merchant/billing/gateways/in_context_paypal_express.rb +15 -0
- data/lib/active_merchant/billing/gateways/inspire.rb +29 -32
- data/lib/active_merchant/billing/gateways/instapay.rb +5 -6
- data/lib/active_merchant/billing/gateways/ipp.rb +175 -0
- data/lib/active_merchant/billing/gateways/iridium.rb +247 -41
- data/lib/active_merchant/billing/gateways/itransact.rb +4 -5
- data/lib/active_merchant/billing/gateways/iveri.rb +251 -0
- data/lib/active_merchant/billing/gateways/jetpay.rb +198 -71
- data/lib/active_merchant/billing/gateways/jetpay_v2.rb +437 -0
- data/lib/active_merchant/billing/gateways/komoju.rb +115 -0
- data/lib/active_merchant/billing/gateways/kushki.rb +219 -0
- data/lib/active_merchant/billing/gateways/latitude19.rb +411 -0
- data/lib/active_merchant/billing/gateways/linkpoint.rb +45 -43
- data/lib/active_merchant/billing/gateways/litle.rb +328 -444
- data/lib/active_merchant/billing/gateways/mastercard.rb +267 -0
- data/lib/active_merchant/billing/gateways/maxipago.rb +145 -115
- data/lib/active_merchant/billing/gateways/mercado_pago.rb +277 -0
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +37 -19
- data/lib/active_merchant/billing/gateways/merchant_one.rb +13 -15
- data/lib/active_merchant/billing/gateways/merchant_partners.rb +245 -0
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +57 -60
- data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +59 -48
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +38 -19
- data/lib/active_merchant/billing/gateways/mercury.rb +77 -54
- data/lib/active_merchant/billing/gateways/metrics_global.rb +11 -30
- data/lib/active_merchant/billing/gateways/micropayment.rb +183 -0
- data/lib/active_merchant/billing/gateways/migs.rb +81 -22
- data/lib/active_merchant/billing/gateways/modern_payments.rb +3 -3
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +23 -25
- data/lib/active_merchant/billing/gateways/monei.rb +307 -0
- data/lib/active_merchant/billing/gateways/moneris.rb +146 -64
- data/lib/active_merchant/billing/gateways/moneris_us.rb +197 -53
- data/lib/active_merchant/billing/gateways/money_movers.rb +6 -15
- data/lib/active_merchant/billing/gateways/mundipagg.rb +292 -0
- data/lib/active_merchant/billing/gateways/nab_transact.rb +86 -64
- data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +165 -0
- data/lib/active_merchant/billing/gateways/net_registry.rb +11 -5
- data/lib/active_merchant/billing/gateways/netaxept.rb +21 -22
- data/lib/active_merchant/billing/gateways/netbanx.rb +290 -0
- data/lib/active_merchant/billing/gateways/netbilling.rb +70 -35
- data/lib/active_merchant/billing/gateways/netpay.rb +5 -6
- data/lib/active_merchant/billing/gateways/network_merchants.rb +241 -0
- data/lib/active_merchant/billing/gateways/nmi.rb +274 -10
- data/lib/active_merchant/billing/gateways/ogone.rb +90 -47
- data/lib/active_merchant/billing/gateways/omise.rb +324 -0
- data/lib/active_merchant/billing/gateways/openpay.rb +48 -20
- data/lib/active_merchant/billing/gateways/opp.rb +369 -0
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +79 -44
- data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +22 -21
- data/lib/active_merchant/billing/gateways/orbital.rb +346 -102
- data/lib/active_merchant/billing/gateways/pac_net_raven.rb +48 -29
- data/lib/active_merchant/billing/gateways/pagarme.rb +246 -0
- data/lib/active_merchant/billing/gateways/pago_facil.rb +122 -0
- data/lib/active_merchant/billing/gateways/pay_conex.rb +245 -0
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +67 -48
- data/lib/active_merchant/billing/gateways/pay_hub.rb +213 -0
- data/lib/active_merchant/billing/gateways/pay_junction.rb +20 -26
- data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +188 -0
- data/lib/active_merchant/billing/gateways/pay_secure.rb +7 -15
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +40 -36
- data/lib/active_merchant/billing/gateways/payeezy.rb +410 -0
- data/lib/active_merchant/billing/gateways/payex.rb +38 -30
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +62 -36
- data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +11 -7
- data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +3 -3
- data/lib/active_merchant/billing/gateways/payflow.rb +74 -27
- data/lib/active_merchant/billing/gateways/payflow_express.rb +77 -81
- data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +2 -3
- data/lib/active_merchant/billing/gateways/payflow_uk.rb +5 -6
- data/lib/active_merchant/billing/gateways/payment_express.rb +54 -45
- data/lib/active_merchant/billing/gateways/paymentez.rb +304 -0
- data/lib/active_merchant/billing/gateways/paymill.rb +160 -66
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +54 -7
- data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +4 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +17 -3
- data/lib/active_merchant/billing/gateways/paypal.rb +36 -27
- data/lib/active_merchant/billing/gateways/paypal_ca.rb +1 -1
- data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +7 -6
- data/lib/active_merchant/billing/gateways/paypal_express.rb +32 -4
- data/lib/active_merchant/billing/gateways/paypal_express_common.rb +3 -3
- data/lib/active_merchant/billing/gateways/payscout.rb +2 -13
- data/lib/active_merchant/billing/gateways/paystation.rb +96 -88
- data/lib/active_merchant/billing/gateways/payu_in.rb +248 -0
- data/lib/active_merchant/billing/gateways/payu_latam.rb +445 -0
- data/lib/active_merchant/billing/gateways/payway.rb +8 -8
- data/lib/active_merchant/billing/gateways/pin.rb +74 -18
- data/lib/active_merchant/billing/gateways/plugnpay.rb +66 -76
- data/lib/active_merchant/billing/gateways/pro_pay.rb +326 -0
- data/lib/active_merchant/billing/gateways/psigate.rb +30 -30
- data/lib/active_merchant/billing/gateways/psl_card.rb +27 -34
- data/lib/active_merchant/billing/gateways/qbms.rb +65 -54
- data/lib/active_merchant/billing/gateways/quantum.rb +18 -18
- data/lib/active_merchant/billing/gateways/quickbooks.rb +290 -0
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_common.rb +184 -0
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +295 -0
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +226 -0
- data/lib/active_merchant/billing/gateways/quickpay.rb +10 -350
- data/lib/active_merchant/billing/gateways/qvalent.rb +236 -0
- data/lib/active_merchant/billing/gateways/realex.rb +78 -48
- data/lib/active_merchant/billing/gateways/redsys.rb +310 -170
- data/lib/active_merchant/billing/gateways/s5.rb +246 -0
- data/lib/active_merchant/billing/gateways/safe_charge.rb +262 -0
- data/lib/active_merchant/billing/gateways/sage.rb +415 -119
- data/lib/active_merchant/billing/gateways/sage_pay.rb +195 -90
- data/lib/active_merchant/billing/gateways/sallie_mae.rb +11 -12
- data/lib/active_merchant/billing/gateways/secure_net.rb +51 -43
- data/lib/active_merchant/billing/gateways/secure_pay.rb +182 -10
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +25 -14
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +10 -18
- data/lib/active_merchant/billing/gateways/securion_pay.rb +264 -0
- data/lib/active_merchant/billing/gateways/skip_jack.rb +35 -38
- data/lib/active_merchant/billing/gateways/smart_ps.rb +50 -42
- data/lib/active_merchant/billing/gateways/so_easy_pay.rb +9 -9
- data/lib/active_merchant/billing/gateways/spreedly_core.rb +62 -12
- data/lib/active_merchant/billing/gateways/stripe.rb +536 -103
- data/lib/active_merchant/billing/gateways/swipe_checkout.rb +12 -18
- data/lib/active_merchant/billing/gateways/telr.rb +274 -0
- data/lib/active_merchant/billing/gateways/tns.rb +22 -0
- data/lib/active_merchant/billing/gateways/trans_first.rb +143 -30
- data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +608 -0
- data/lib/active_merchant/billing/gateways/transact_pro.rb +224 -0
- data/lib/active_merchant/billing/gateways/transax.rb +5 -6
- data/lib/active_merchant/billing/gateways/transnational.rb +2 -232
- data/lib/active_merchant/billing/gateways/trexle.rb +218 -0
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +86 -57
- data/lib/active_merchant/billing/gateways/usa_epay.rb +4 -4
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +196 -89
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +157 -32
- data/lib/active_merchant/billing/gateways/vanco.rb +294 -0
- data/lib/active_merchant/billing/gateways/verifi.rb +42 -49
- data/lib/active_merchant/billing/gateways/viaklix.rb +11 -24
- data/lib/active_merchant/billing/gateways/visanet_peru.rb +233 -0
- data/lib/active_merchant/billing/gateways/webpay.rb +26 -28
- data/lib/active_merchant/billing/gateways/wepay.rb +237 -0
- data/lib/active_merchant/billing/gateways/wirecard.rb +153 -31
- data/lib/active_merchant/billing/gateways/world_net.rb +344 -0
- data/lib/active_merchant/billing/gateways/worldpay.rb +207 -63
- data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +215 -0
- data/lib/active_merchant/billing/gateways/worldpay_us.rb +221 -0
- data/lib/active_merchant/billing/gateways.rb +8 -11
- data/lib/active_merchant/billing/model.rb +30 -0
- data/lib/active_merchant/billing/network_tokenization_credit_card.rb +39 -0
- data/lib/active_merchant/billing/payment_token.rb +21 -0
- data/lib/active_merchant/billing/rails.rb +3 -0
- data/lib/active_merchant/billing/response.rb +31 -24
- data/lib/active_merchant/billing.rb +7 -1
- data/lib/active_merchant/connection.rb +195 -0
- data/lib/active_merchant/country.rb +335 -0
- data/lib/active_merchant/empty.rb +20 -0
- data/lib/active_merchant/errors.rb +35 -0
- data/lib/active_merchant/net_http_ssl_connection.rb +10 -0
- data/lib/active_merchant/network_connection_retries.rb +80 -0
- data/lib/active_merchant/post_data.rb +25 -0
- data/lib/active_merchant/posts_data.rb +92 -0
- data/lib/active_merchant/version.rb +1 -1
- data/lib/active_merchant.rb +23 -27
- data/lib/activemerchant.rb +1 -1
- data/lib/certs/cacert.pem +3988 -0
- data/lib/support/gateway_support.rb +7 -9
- data/lib/support/outbound_hosts.rb +13 -10
- data/lib/support/ssl_verify.rb +6 -7
- data/lib/support/ssl_version.rb +87 -0
- metadata +148 -323
- checksums.yaml.gz.sig +0 -0
- data/gem-public_cert.pem +0 -21
- data/lib/active_merchant/billing/expiry_date.rb +0 -34
- data/lib/active_merchant/billing/gateways/app55.rb +0 -185
- data/lib/active_merchant/billing/gateways/barclays_epdq.rb +0 -314
- data/lib/active_merchant/billing/gateways/certo_direct.rb +0 -277
- data/lib/active_merchant/billing/gateways/ideal/ideal_base.rb +0 -249
- 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
- data/lib/active_merchant/billing/gateways/orbital/avs_result.rb +0 -93
- data/lib/active_merchant/billing/gateways/orbital/cvv_result.rb +0 -34
- data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +0 -93
- data/lib/active_merchant/billing/gateways/sage/sage_core.rb +0 -114
- data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +0 -102
- data/lib/active_merchant/billing/gateways/samurai.rb +0 -118
- data/lib/active_merchant/billing/gateways/vindicia.rb +0 -361
- data/lib/active_merchant/billing/integrations/a1agregator/helper.rb +0 -31
- data/lib/active_merchant/billing/integrations/a1agregator/notification.rb +0 -186
- data/lib/active_merchant/billing/integrations/a1agregator/status.rb +0 -38
- data/lib/active_merchant/billing/integrations/a1agregator.rb +0 -26
- data/lib/active_merchant/billing/integrations/action_view_helper.rb +0 -74
- data/lib/active_merchant/billing/integrations/alipay/helper.rb +0 -34
- data/lib/active_merchant/billing/integrations/alipay/notification.rb +0 -101
- data/lib/active_merchant/billing/integrations/alipay.rb +0 -18
- data/lib/active_merchant/billing/integrations/authorize_net_sim/helper.rb +0 -229
- data/lib/active_merchant/billing/integrations/authorize_net_sim/notification.rb +0 -340
- data/lib/active_merchant/billing/integrations/authorize_net_sim.rb +0 -38
- data/lib/active_merchant/billing/integrations/bit_pay/helper.rb +0 -64
- data/lib/active_merchant/billing/integrations/bit_pay/notification.rb +0 -74
- data/lib/active_merchant/billing/integrations/bit_pay/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/bit_pay.rb +0 -30
- data/lib/active_merchant/billing/integrations/bogus/helper.rb +0 -17
- data/lib/active_merchant/billing/integrations/bogus/notification.rb +0 -11
- data/lib/active_merchant/billing/integrations/bogus/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/bogus.rb +0 -23
- data/lib/active_merchant/billing/integrations/chronopay/helper.rb +0 -120
- data/lib/active_merchant/billing/integrations/chronopay/notification.rb +0 -158
- data/lib/active_merchant/billing/integrations/chronopay/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/chronopay.rb +0 -23
- data/lib/active_merchant/billing/integrations/citrus/helper.rb +0 -40
- data/lib/active_merchant/billing/integrations/citrus/notification.rb +0 -133
- data/lib/active_merchant/billing/integrations/citrus/return.rb +0 -40
- data/lib/active_merchant/billing/integrations/citrus.rb +0 -51
- data/lib/active_merchant/billing/integrations/direc_pay/helper.rb +0 -200
- data/lib/active_merchant/billing/integrations/direc_pay/notification.rb +0 -76
- data/lib/active_merchant/billing/integrations/direc_pay/return.rb +0 -32
- data/lib/active_merchant/billing/integrations/direc_pay/status.rb +0 -37
- data/lib/active_merchant/billing/integrations/direc_pay.rb +0 -41
- data/lib/active_merchant/billing/integrations/directebanking/helper.rb +0 -90
- data/lib/active_merchant/billing/integrations/directebanking/notification.rb +0 -120
- data/lib/active_merchant/billing/integrations/directebanking/return.rb +0 -11
- data/lib/active_merchant/billing/integrations/directebanking.rb +0 -47
- data/lib/active_merchant/billing/integrations/doku/helper.rb +0 -102
- data/lib/active_merchant/billing/integrations/doku/notification.rb +0 -69
- data/lib/active_merchant/billing/integrations/doku/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/doku.rb +0 -24
- data/lib/active_merchant/billing/integrations/dotpay/helper.rb +0 -77
- data/lib/active_merchant/billing/integrations/dotpay/notification.rb +0 -86
- data/lib/active_merchant/billing/integrations/dotpay/return.rb +0 -11
- data/lib/active_merchant/billing/integrations/dotpay.rb +0 -22
- data/lib/active_merchant/billing/integrations/dwolla/common.rb +0 -23
- data/lib/active_merchant/billing/integrations/dwolla/helper.rb +0 -43
- data/lib/active_merchant/billing/integrations/dwolla/notification.rb +0 -64
- data/lib/active_merchant/billing/integrations/dwolla/return.rb +0 -49
- data/lib/active_merchant/billing/integrations/dwolla.rb +0 -23
- data/lib/active_merchant/billing/integrations/e_payment_plans/helper.rb +0 -34
- data/lib/active_merchant/billing/integrations/e_payment_plans/notification.rb +0 -84
- data/lib/active_merchant/billing/integrations/e_payment_plans.rb +0 -48
- data/lib/active_merchant/billing/integrations/easy_pay/common.rb +0 -40
- data/lib/active_merchant/billing/integrations/easy_pay/helper.rb +0 -36
- data/lib/active_merchant/billing/integrations/easy_pay/notification.rb +0 -59
- data/lib/active_merchant/billing/integrations/easy_pay.rb +0 -30
- data/lib/active_merchant/billing/integrations/epay/helper.rb +0 -55
- data/lib/active_merchant/billing/integrations/epay/notification.rb +0 -110
- data/lib/active_merchant/billing/integrations/epay.rb +0 -21
- data/lib/active_merchant/billing/integrations/first_data/helper.rb +0 -61
- data/lib/active_merchant/billing/integrations/first_data/notification.rb +0 -56
- data/lib/active_merchant/billing/integrations/first_data.rb +0 -38
- data/lib/active_merchant/billing/integrations/gestpay/common.rb +0 -42
- data/lib/active_merchant/billing/integrations/gestpay/helper.rb +0 -70
- data/lib/active_merchant/billing/integrations/gestpay/notification.rb +0 -85
- data/lib/active_merchant/billing/integrations/gestpay/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/gestpay.rb +0 -25
- data/lib/active_merchant/billing/integrations/helper.rb +0 -117
- data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +0 -58
- data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +0 -59
- data/lib/active_merchant/billing/integrations/hi_trust/return.rb +0 -68
- data/lib/active_merchant/billing/integrations/hi_trust.rb +0 -27
- data/lib/active_merchant/billing/integrations/ipay88/helper.rb +0 -118
- data/lib/active_merchant/billing/integrations/ipay88/notification.rb +0 -103
- data/lib/active_merchant/billing/integrations/ipay88/return.rb +0 -29
- data/lib/active_merchant/billing/integrations/ipay88.rb +0 -23
- data/lib/active_merchant/billing/integrations/liqpay/helper.rb +0 -43
- data/lib/active_merchant/billing/integrations/liqpay/notification.rb +0 -89
- data/lib/active_merchant/billing/integrations/liqpay/return.rb +0 -83
- data/lib/active_merchant/billing/integrations/liqpay.rb +0 -30
- data/lib/active_merchant/billing/integrations/maksuturva/helper.rb +0 -119
- data/lib/active_merchant/billing/integrations/maksuturva/notification.rb +0 -48
- data/lib/active_merchant/billing/integrations/maksuturva.rb +0 -86
- data/lib/active_merchant/billing/integrations/moneybookers/helper.rb +0 -75
- data/lib/active_merchant/billing/integrations/moneybookers/notification.rb +0 -123
- data/lib/active_merchant/billing/integrations/moneybookers.rb +0 -26
- data/lib/active_merchant/billing/integrations/nochex/helper.rb +0 -68
- data/lib/active_merchant/billing/integrations/nochex/notification.rb +0 -94
- data/lib/active_merchant/billing/integrations/nochex/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/nochex.rb +0 -88
- data/lib/active_merchant/billing/integrations/notification.rb +0 -71
- data/lib/active_merchant/billing/integrations/paxum/common.rb +0 -24
- data/lib/active_merchant/billing/integrations/paxum/helper.rb +0 -42
- data/lib/active_merchant/billing/integrations/paxum/notification.rb +0 -33
- data/lib/active_merchant/billing/integrations/paxum.rb +0 -44
- data/lib/active_merchant/billing/integrations/pay_fast/common.rb +0 -42
- data/lib/active_merchant/billing/integrations/pay_fast/helper.rb +0 -50
- data/lib/active_merchant/billing/integrations/pay_fast/notification.rb +0 -134
- data/lib/active_merchant/billing/integrations/pay_fast/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/pay_fast.rb +0 -70
- data/lib/active_merchant/billing/integrations/paydollar/helper.rb +0 -41
- data/lib/active_merchant/billing/integrations/paydollar/notification.rb +0 -60
- data/lib/active_merchant/billing/integrations/paydollar/return.rb +0 -15
- data/lib/active_merchant/billing/integrations/paydollar.rb +0 -59
- data/lib/active_merchant/billing/integrations/payflow_link/helper.rb +0 -116
- data/lib/active_merchant/billing/integrations/payflow_link/notification.rb +0 -78
- data/lib/active_merchant/billing/integrations/payflow_link.rb +0 -21
- data/lib/active_merchant/billing/integrations/paypal/helper.rb +0 -119
- data/lib/active_merchant/billing/integrations/paypal/notification.rb +0 -227
- data/lib/active_merchant/billing/integrations/paypal/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/paypal.rb +0 -39
- data/lib/active_merchant/billing/integrations/paypal_payments_advanced/helper.rb +0 -15
- data/lib/active_merchant/billing/integrations/paypal_payments_advanced.rb +0 -20
- data/lib/active_merchant/billing/integrations/paysbuy/helper.rb +0 -15
- data/lib/active_merchant/billing/integrations/paysbuy/notification.rb +0 -39
- data/lib/active_merchant/billing/integrations/paysbuy.rb +0 -36
- data/lib/active_merchant/billing/integrations/payu_in/helper.rb +0 -76
- data/lib/active_merchant/billing/integrations/payu_in/notification.rb +0 -154
- data/lib/active_merchant/billing/integrations/payu_in/return.rb +0 -36
- data/lib/active_merchant/billing/integrations/payu_in.rb +0 -36
- data/lib/active_merchant/billing/integrations/payu_in_paisa/helper.rb +0 -19
- data/lib/active_merchant/billing/integrations/payu_in_paisa/notification.rb +0 -13
- data/lib/active_merchant/billing/integrations/payu_in_paisa/return.rb +0 -16
- data/lib/active_merchant/billing/integrations/payu_in_paisa.rb +0 -30
- data/lib/active_merchant/billing/integrations/platron/helper.rb +0 -32
- data/lib/active_merchant/billing/integrations/platron/notification.rb +0 -113
- data/lib/active_merchant/billing/integrations/platron.rb +0 -28
- data/lib/active_merchant/billing/integrations/pxpay/helper.rb +0 -112
- data/lib/active_merchant/billing/integrations/pxpay/notification.rb +0 -157
- data/lib/active_merchant/billing/integrations/pxpay/return.rb +0 -25
- data/lib/active_merchant/billing/integrations/pxpay.rb +0 -31
- data/lib/active_merchant/billing/integrations/quickpay/helper.rb +0 -96
- data/lib/active_merchant/billing/integrations/quickpay/notification.rb +0 -137
- data/lib/active_merchant/billing/integrations/quickpay.rb +0 -21
- data/lib/active_merchant/billing/integrations/rbkmoney/helper.rb +0 -23
- data/lib/active_merchant/billing/integrations/rbkmoney/notification.rb +0 -91
- data/lib/active_merchant/billing/integrations/rbkmoney.rb +0 -17
- data/lib/active_merchant/billing/integrations/return.rb +0 -42
- data/lib/active_merchant/billing/integrations/robokassa/common.rb +0 -19
- data/lib/active_merchant/billing/integrations/robokassa/helper.rb +0 -50
- data/lib/active_merchant/billing/integrations/robokassa/notification.rb +0 -55
- data/lib/active_merchant/billing/integrations/robokassa/return.rb +0 -17
- data/lib/active_merchant/billing/integrations/robokassa.rb +0 -49
- data/lib/active_merchant/billing/integrations/sage_pay_form/encryption.rb +0 -33
- data/lib/active_merchant/billing/integrations/sage_pay_form/helper.rb +0 -136
- data/lib/active_merchant/billing/integrations/sage_pay_form/notification.rb +0 -210
- data/lib/active_merchant/billing/integrations/sage_pay_form/return.rb +0 -31
- data/lib/active_merchant/billing/integrations/sage_pay_form.rb +0 -37
- data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +0 -107
- data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +0 -171
- data/lib/active_merchant/billing/integrations/two_checkout/return.rb +0 -58
- data/lib/active_merchant/billing/integrations/two_checkout.rb +0 -44
- data/lib/active_merchant/billing/integrations/valitor/helper.rb +0 -86
- data/lib/active_merchant/billing/integrations/valitor/notification.rb +0 -13
- data/lib/active_merchant/billing/integrations/valitor/response_fields.rb +0 -97
- data/lib/active_merchant/billing/integrations/valitor/return.rb +0 -13
- data/lib/active_merchant/billing/integrations/valitor.rb +0 -33
- data/lib/active_merchant/billing/integrations/verkkomaksut/helper.rb +0 -88
- data/lib/active_merchant/billing/integrations/verkkomaksut/notification.rb +0 -59
- data/lib/active_merchant/billing/integrations/verkkomaksut.rb +0 -20
- data/lib/active_merchant/billing/integrations/web_pay/common.rb +0 -50
- data/lib/active_merchant/billing/integrations/web_pay/helper.rb +0 -68
- data/lib/active_merchant/billing/integrations/web_pay/notification.rb +0 -51
- data/lib/active_merchant/billing/integrations/web_pay.rb +0 -45
- data/lib/active_merchant/billing/integrations/webmoney/common.rb +0 -17
- data/lib/active_merchant/billing/integrations/webmoney/helper.rb +0 -40
- data/lib/active_merchant/billing/integrations/webmoney/notification.rb +0 -47
- data/lib/active_merchant/billing/integrations/webmoney.rb +0 -43
- data/lib/active_merchant/billing/integrations/wirecard_checkout_page/common.rb +0 -104
- data/lib/active_merchant/billing/integrations/wirecard_checkout_page/helper.rb +0 -145
- data/lib/active_merchant/billing/integrations/wirecard_checkout_page/notification.rb +0 -101
- data/lib/active_merchant/billing/integrations/wirecard_checkout_page/return.rb +0 -35
- data/lib/active_merchant/billing/integrations/wirecard_checkout_page.rb +0 -39
- data/lib/active_merchant/billing/integrations/world_pay/helper.rb +0 -101
- data/lib/active_merchant/billing/integrations/world_pay/notification.rb +0 -160
- data/lib/active_merchant/billing/integrations/world_pay.rb +0 -34
- data/lib/active_merchant/billing/integrations.rb +0 -17
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -1
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
require 'nokogiri'
|
|
2
|
+
|
|
3
|
+
module ActiveMerchant #:nodoc:
|
|
4
|
+
module Billing #:nodoc:
|
|
5
|
+
class NcrSecurePayGateway < Gateway
|
|
6
|
+
self.test_url = 'https://testbox.monetra.com:8665/'
|
|
7
|
+
self.live_url = 'https://portal.ncrsecurepay.com:8444/'
|
|
8
|
+
|
|
9
|
+
self.supported_countries = ['US']
|
|
10
|
+
self.default_currency = 'USD'
|
|
11
|
+
self.supported_cardtypes = [:visa, :master, :american_express, :discover]
|
|
12
|
+
|
|
13
|
+
self.homepage_url = 'http://www.ncrretailonline.com'
|
|
14
|
+
self.display_name = 'NCR Secure Pay'
|
|
15
|
+
|
|
16
|
+
def initialize(options={})
|
|
17
|
+
requires!(options, :username, :password)
|
|
18
|
+
super
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def purchase(money, payment, options={})
|
|
22
|
+
post = {}
|
|
23
|
+
add_invoice(post, money, options)
|
|
24
|
+
add_payment(post, payment)
|
|
25
|
+
add_address(post, payment, options)
|
|
26
|
+
|
|
27
|
+
commit('sale', post)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def authorize(money, payment, options={})
|
|
31
|
+
post = {}
|
|
32
|
+
add_invoice(post, money, options)
|
|
33
|
+
add_payment(post, payment)
|
|
34
|
+
add_address(post, payment, options)
|
|
35
|
+
|
|
36
|
+
commit('preauth', post)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def capture(money, authorization, options={})
|
|
40
|
+
post = {}
|
|
41
|
+
add_reference(post, authorization)
|
|
42
|
+
add_invoice(post, money, options)
|
|
43
|
+
|
|
44
|
+
commit('preauthcomplete', post)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def refund(money, authorization, options={})
|
|
48
|
+
post = {}
|
|
49
|
+
add_reference(post, authorization)
|
|
50
|
+
add_invoice(post, money, options)
|
|
51
|
+
|
|
52
|
+
commit('credit', post)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def void(authorization, options={})
|
|
56
|
+
post = {}
|
|
57
|
+
add_reference(post, authorization)
|
|
58
|
+
commit('void', post)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def verify(credit_card, options={})
|
|
62
|
+
MultiResponse.run(:use_first_response) do |r|
|
|
63
|
+
r.process { authorize(100, credit_card, options) }
|
|
64
|
+
r.process(:ignore_result) { void(r.authorization, options) }
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def supports_scrubbing?
|
|
69
|
+
true
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def scrub(transcript)
|
|
73
|
+
transcript.gsub(%r((<password>)[^<]*(</password>))i, '\1[FILTERED]\2').
|
|
74
|
+
gsub(%r((<account>)[^<]*(</account>))i, '\1[FILTERED]\2').
|
|
75
|
+
gsub(%r((<cv>)[^<]*(</cv>))i, '\1[FILTERED]\2')
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
private
|
|
79
|
+
|
|
80
|
+
def add_reference(post, reference)
|
|
81
|
+
post[:ttid] = reference
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def add_address(post, payment, options)
|
|
85
|
+
address = options[:billing_address] || options[:address]
|
|
86
|
+
post[:zip] = address[:zip]
|
|
87
|
+
post[:street] = address[:address1]
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def add_invoice(post, money, options)
|
|
91
|
+
post[:amount] = amount(money)
|
|
92
|
+
post[:currency] = (options[:currency] || currency(money))
|
|
93
|
+
post[:descmerch] = options[:merchant] if options[:merchant]
|
|
94
|
+
post[:ordernum] = options[:order_id] if options[:order_id]
|
|
95
|
+
post[:comments] = options[:description] if options[:description]
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def add_payment(post, payment)
|
|
99
|
+
post[:cardholdername] = payment.name
|
|
100
|
+
post[:account] = payment.number
|
|
101
|
+
post[:cv] = payment.verification_value
|
|
102
|
+
post[:expdate] = expdate(payment)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def parse(body)
|
|
106
|
+
doc = Nokogiri::XML(body)
|
|
107
|
+
doc.remove_namespaces!
|
|
108
|
+
response = doc.xpath('/MonetraResp/Resp')[0]
|
|
109
|
+
resp_params = {}
|
|
110
|
+
|
|
111
|
+
response.elements.each do |node|
|
|
112
|
+
resp_params[node.name.downcase.to_sym] = node.text
|
|
113
|
+
end
|
|
114
|
+
resp_params
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def commit(action, parameters)
|
|
118
|
+
url = (test? ? test_url : live_url)
|
|
119
|
+
response = parse(ssl_post(url, request_body(action, parameters)))
|
|
120
|
+
|
|
121
|
+
Response.new(
|
|
122
|
+
success_from(response),
|
|
123
|
+
message_from(response),
|
|
124
|
+
response,
|
|
125
|
+
authorization: authorization_from(response),
|
|
126
|
+
test: test?,
|
|
127
|
+
error_code: error_code_from(response)
|
|
128
|
+
)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def success_from(response)
|
|
132
|
+
response[:code] == 'AUTH'
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def message_from(response)
|
|
136
|
+
response[:verbiage]
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def authorization_from(response)
|
|
140
|
+
response[:ttid]
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def request_body(action, parameters = {})
|
|
144
|
+
Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
|
|
145
|
+
xml.MonetraTrans do
|
|
146
|
+
xml.Trans(identifier: parameters.delete(:identifier) || '1') do
|
|
147
|
+
xml.username(options[:username])
|
|
148
|
+
xml.password(options[:password])
|
|
149
|
+
xml.action(action)
|
|
150
|
+
parameters.each do |name, value|
|
|
151
|
+
xml.send(name, value)
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end.to_xml
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def error_code_from(response)
|
|
159
|
+
unless success_from(response)
|
|
160
|
+
response[:msoft_code] || response[:phard_code]
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
end
|
|
@@ -22,7 +22,7 @@ module ActiveMerchant
|
|
|
22
22
|
# response will contain a 'receipt' parameter
|
|
23
23
|
# (response.params['receipt']) if a receipt was issued by the gateway.
|
|
24
24
|
class NetRegistryGateway < Gateway
|
|
25
|
-
self.live_url = self.test_url = 'https://
|
|
25
|
+
self.live_url = self.test_url = 'https://paygate.ssllock.net/external2.pl'
|
|
26
26
|
|
|
27
27
|
FILTERED_PARAMS = [ 'card_no', 'card_expiry', 'receipt_array' ]
|
|
28
28
|
|
|
@@ -104,7 +104,7 @@ module ActiveMerchant
|
|
|
104
104
|
end
|
|
105
105
|
|
|
106
106
|
def credit(money, identification, options = {})
|
|
107
|
-
deprecated CREDIT_DEPRECATION_MESSAGE
|
|
107
|
+
ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
|
|
108
108
|
refund(money, identification, options)
|
|
109
109
|
end
|
|
110
110
|
|
|
@@ -122,6 +122,7 @@ module ActiveMerchant
|
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
private
|
|
125
|
+
|
|
125
126
|
def add_request_details(params, options)
|
|
126
127
|
params['COMMENT'] = options[:description] unless options[:description].blank?
|
|
127
128
|
end
|
|
@@ -130,7 +131,7 @@ module ActiveMerchant
|
|
|
130
131
|
# format for a command.
|
|
131
132
|
def expiry(credit_card)
|
|
132
133
|
month = format(credit_card.month, :two_digits)
|
|
133
|
-
year = format(credit_card.year
|
|
134
|
+
year = format(credit_card.year, :two_digits)
|
|
134
135
|
"#{month}/#{year}"
|
|
135
136
|
end
|
|
136
137
|
|
|
@@ -141,7 +142,7 @@ module ActiveMerchant
|
|
|
141
142
|
# omitted if nil.
|
|
142
143
|
def commit(action, params)
|
|
143
144
|
# get gateway response
|
|
144
|
-
response = parse(
|
|
145
|
+
response = parse(ssl_post(self.live_url, post_data(action, params)))
|
|
145
146
|
|
|
146
147
|
Response.new(response['status'] == 'approved', message_from(response), response,
|
|
147
148
|
:authorization => authorization_from(response, action)
|
|
@@ -151,7 +152,12 @@ module ActiveMerchant
|
|
|
151
152
|
def post_data(action, params)
|
|
152
153
|
params['COMMAND'] = TRANSACTIONS[action]
|
|
153
154
|
params['LOGIN'] = "#{@options[:login]}/#{@options[:password]}"
|
|
154
|
-
|
|
155
|
+
escape_uri(params.map { |k, v| "#{k}=#{v}" }.join('&'))
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# The upstream is picky and so we can't use CGI.escape like we want to
|
|
159
|
+
def escape_uri(uri)
|
|
160
|
+
URI::DEFAULT_PARSER.escape(uri)
|
|
155
161
|
end
|
|
156
162
|
|
|
157
163
|
def parse(response)
|
|
@@ -31,8 +31,8 @@ module ActiveMerchant #:nodoc:
|
|
|
31
31
|
requires!(options, :order_id)
|
|
32
32
|
|
|
33
33
|
MultiResponse.run do |r|
|
|
34
|
-
r.process{authorize(money, creditcard, options)}
|
|
35
|
-
r.process{capture(money, r.authorization, options)}
|
|
34
|
+
r.process { authorize(money, creditcard, options) }
|
|
35
|
+
r.process { capture(money, r.authorization, options) }
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
|
|
@@ -40,9 +40,9 @@ module ActiveMerchant #:nodoc:
|
|
|
40
40
|
requires!(options, :order_id)
|
|
41
41
|
|
|
42
42
|
MultiResponse.run do |r|
|
|
43
|
-
r.process{setup_transaction(money, options)}
|
|
44
|
-
r.process{add_and_auth_credit_card(r.authorization, creditcard, options)}
|
|
45
|
-
r.process{query_transaction(r.authorization, options)}
|
|
43
|
+
r.process { setup_transaction(money, options) }
|
|
44
|
+
r.process { add_and_auth_credit_card(r.authorization, creditcard, options) }
|
|
45
|
+
r.process { query_transaction(r.authorization, options) }
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
|
|
@@ -50,24 +50,24 @@ module ActiveMerchant #:nodoc:
|
|
|
50
50
|
post = {}
|
|
51
51
|
add_credentials(post, options)
|
|
52
52
|
add_authorization(post, authorization, money)
|
|
53
|
-
post[:operation] =
|
|
54
|
-
commit(
|
|
53
|
+
post[:operation] = 'Capture'
|
|
54
|
+
commit('Netaxept/process.aspx', post)
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
def refund(money, authorization, options = {})
|
|
58
58
|
post = {}
|
|
59
59
|
add_credentials(post, options)
|
|
60
60
|
add_authorization(post, authorization, money)
|
|
61
|
-
post[:operation] =
|
|
62
|
-
commit(
|
|
61
|
+
post[:operation] = 'Credit'
|
|
62
|
+
commit('Netaxept/process.aspx', post)
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
def void(authorization, options = {})
|
|
66
66
|
post = {}
|
|
67
67
|
add_credentials(post, options)
|
|
68
68
|
add_authorization(post, authorization)
|
|
69
|
-
post[:operation] =
|
|
70
|
-
commit(
|
|
69
|
+
post[:operation] = 'Annul'
|
|
70
|
+
commit('Netaxept/process.aspx', post)
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
private
|
|
@@ -76,7 +76,7 @@ module ActiveMerchant #:nodoc:
|
|
|
76
76
|
post = {}
|
|
77
77
|
add_credentials(post, options)
|
|
78
78
|
add_order(post, money, options)
|
|
79
|
-
commit(
|
|
79
|
+
commit('Netaxept/Register.aspx', post)
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
def add_and_auth_credit_card(authorization, creditcard, options)
|
|
@@ -84,14 +84,14 @@ module ActiveMerchant #:nodoc:
|
|
|
84
84
|
add_credentials(post, options, false)
|
|
85
85
|
add_authorization(post, authorization)
|
|
86
86
|
add_creditcard(post, creditcard)
|
|
87
|
-
commit(
|
|
87
|
+
commit('terminal/default.aspx', post, false)
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
def query_transaction(authorization, options)
|
|
91
91
|
post = {}
|
|
92
92
|
add_credentials(post, options)
|
|
93
93
|
add_authorization(post, authorization)
|
|
94
|
-
commit(
|
|
94
|
+
commit('Netaxept/query.aspx', post)
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
def add_credentials(post, options, secure=true)
|
|
@@ -109,7 +109,7 @@ module ActiveMerchant #:nodoc:
|
|
|
109
109
|
post[:orderNumber] = options[:order_id]
|
|
110
110
|
post[:amount] = amount(money)
|
|
111
111
|
post[:currencyCode] = (options[:currency] || currency(money))
|
|
112
|
-
post[:autoAuth] =
|
|
112
|
+
post[:autoAuth] = 'true'
|
|
113
113
|
end
|
|
114
114
|
|
|
115
115
|
def add_creditcard(post, options)
|
|
@@ -122,13 +122,13 @@ module ActiveMerchant #:nodoc:
|
|
|
122
122
|
raw = parse(ssl_get(build_url(path, parameters)), xml)
|
|
123
123
|
|
|
124
124
|
success = false
|
|
125
|
-
authorization = (raw[
|
|
125
|
+
authorization = (raw['TransactionId'] || parameters[:transactionId])
|
|
126
126
|
if raw[:container] =~ /Exception|Error/
|
|
127
|
-
message = (raw[
|
|
128
|
-
elsif raw[
|
|
129
|
-
message = (raw[
|
|
127
|
+
message = (raw['Message'] || raw['Error']['Message'])
|
|
128
|
+
elsif raw['Error'] && !raw['Error'].empty?
|
|
129
|
+
message = (raw['Error']['ResponseText'] || raw['Error']['ResponseCode'])
|
|
130
130
|
else
|
|
131
|
-
message = (raw[
|
|
131
|
+
message = (raw['ResponseText'] || raw['ResponseCode'] || 'OK')
|
|
132
132
|
success = true
|
|
133
133
|
end
|
|
134
134
|
|
|
@@ -173,9 +173,8 @@ module ActiveMerchant #:nodoc:
|
|
|
173
173
|
end
|
|
174
174
|
|
|
175
175
|
def encode(hash)
|
|
176
|
-
hash.collect{|(k,v)| "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}"}.join('&')
|
|
176
|
+
hash.collect { |(k, v)| "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}" }.join('&')
|
|
177
177
|
end
|
|
178
178
|
end
|
|
179
179
|
end
|
|
180
180
|
end
|
|
181
|
-
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
class NetbanxGateway < Gateway
|
|
4
|
+
# Netbanx is the new REST based API for Optimal Payments / Paysafe
|
|
5
|
+
self.test_url = 'https://api.test.netbanx.com/'
|
|
6
|
+
self.live_url = 'https://api.netbanx.com/'
|
|
7
|
+
|
|
8
|
+
self.supported_countries = %w(AF AX AL DZ AS AD AO AI AQ AG AR AM AW AU AT AZ BS BH BD BB BY BE BZ BJ BM BT BO BQ BA BW BV BR IO BN BG BF BI KH CM CA CV KY CF TD CL CN CX CC CO KM CG CD CK CR CI HR CU CW CY CZ DK DJ DM DO EC EG SV GQ ER EE ET FK FO FJ FI FR GF PF TF GA GM GE DE GH GI GR GL GD GP GU GT GG GN GW GY HT HM HN HK HU IS IN ID IR IQ IE IM IL IT JM JP JE JO KZ KE KI KP KR KW KG LA LV LB LS LR LY LI LT LU MO MK MG MW MY MV ML MT MH MQ MR MU YT MX FM MD MC MN ME MS MA MZ MM NA NR NP NC NZ NI NE NG NU NF MP NO OM PK PW PS PA PG PY PE PH PN PL PT PR QA RE RO RU RW BL SH KN LC MF VC WS SM ST SA SN RS SC SL SG SX SK SI SB SO ZA GS SS ES LK PM SD SR SJ SZ SE CH SY TW TJ TZ TH NL TL TG TK TO TT TN TR TM TC TV UG UA AE GB US UM UY UZ VU VA VE VN VG VI WF EH YE ZM ZW)
|
|
9
|
+
self.default_currency = 'CAD'
|
|
10
|
+
self.supported_cardtypes = [
|
|
11
|
+
:american_express,
|
|
12
|
+
:diners_club,
|
|
13
|
+
:discover,
|
|
14
|
+
:jcb,
|
|
15
|
+
:master,
|
|
16
|
+
:maestro,
|
|
17
|
+
:visa
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
self.money_format = :cents
|
|
21
|
+
|
|
22
|
+
self.homepage_url = 'https://processing.paysafe.com/'
|
|
23
|
+
self.display_name = 'Netbanx by PaySafe'
|
|
24
|
+
|
|
25
|
+
def initialize(options={})
|
|
26
|
+
requires!(options, :account_number, :api_key)
|
|
27
|
+
super
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def purchase(money, payment, options={})
|
|
31
|
+
post = {}
|
|
32
|
+
add_invoice(post, money, options)
|
|
33
|
+
add_settle_with_auth(post)
|
|
34
|
+
add_payment(post, payment, options)
|
|
35
|
+
|
|
36
|
+
commit(:post, 'auths', post)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def authorize(money, payment, options={})
|
|
40
|
+
post = {}
|
|
41
|
+
add_invoice(post, money, options)
|
|
42
|
+
add_payment(post, payment, options)
|
|
43
|
+
|
|
44
|
+
commit(:post, 'auths', post)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def capture(money, authorization, options={})
|
|
48
|
+
post = {}
|
|
49
|
+
add_invoice(post, money, options)
|
|
50
|
+
|
|
51
|
+
commit(:post, "auths/#{authorization}/settlements", post)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def refund(money, authorization, options={})
|
|
55
|
+
post = {}
|
|
56
|
+
add_invoice(post, money, options)
|
|
57
|
+
|
|
58
|
+
commit(:post, "settlements/#{authorization}/refunds", post)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def void(authorization, options={})
|
|
62
|
+
post = {}
|
|
63
|
+
add_order_id(post, options)
|
|
64
|
+
|
|
65
|
+
commit(:post, "auths/#{authorization}/voidauths", post)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def verify(credit_card, options={})
|
|
69
|
+
post = {}
|
|
70
|
+
add_payment(post, credit_card)
|
|
71
|
+
add_order_id(post, options)
|
|
72
|
+
|
|
73
|
+
commit(:post, 'verifications', post)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# note: when passing options[:customer] we only attempt to add the
|
|
77
|
+
# card to the profile_id passed as the options[:customer]
|
|
78
|
+
def store(credit_card, options={})
|
|
79
|
+
# locale can only be one of en_US, fr_CA, en_GB
|
|
80
|
+
requires!(options, :locale)
|
|
81
|
+
post = {}
|
|
82
|
+
add_credit_card(post, credit_card, options)
|
|
83
|
+
add_customer_data(post, options)
|
|
84
|
+
|
|
85
|
+
commit(:post, 'customervault/v1/profiles', post)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def unstore(identification, options = {})
|
|
89
|
+
customer_id, card_id = identification.split('|')
|
|
90
|
+
|
|
91
|
+
if card_id.nil?
|
|
92
|
+
# deleting the profile
|
|
93
|
+
commit(:delete, "customervault/v1/profiles/#{CGI.escape(customer_id)}", nil)
|
|
94
|
+
else
|
|
95
|
+
# deleting the card from the profile
|
|
96
|
+
commit(:delete, "customervault/v1/profiles/#{CGI.escape(customer_id)}/cards/#{CGI.escape(card_id)}", nil)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def supports_scrubbing?
|
|
101
|
+
true
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def scrub(transcript)
|
|
105
|
+
transcript.
|
|
106
|
+
gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]').
|
|
107
|
+
gsub(%r(("card\\?":{\\?"cardNum\\?":\\?")\d+), '\1[FILTERED]').
|
|
108
|
+
gsub(%r(("cvv\\?":\\?")\d+), '\1[FILTERED]')
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
private
|
|
112
|
+
|
|
113
|
+
def add_settle_with_auth(post)
|
|
114
|
+
post[:settleWithAuth] = true
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def add_customer_data(post, options)
|
|
118
|
+
post[:merchantCustomerId] = (options[:merchant_customer_id] || SecureRandom.uuid)
|
|
119
|
+
post[:locale] = options[:locale]
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def add_credit_card(post, credit_card, options = {})
|
|
123
|
+
post[:card] ||= {}
|
|
124
|
+
post[:card][:cardNum] = credit_card.number
|
|
125
|
+
post[:card][:holderName] = credit_card.name
|
|
126
|
+
post[:card][:cvv] = credit_card.verification_value
|
|
127
|
+
post[:card][:cardExpiry] = expdate(credit_card)
|
|
128
|
+
if options[:billing_address]
|
|
129
|
+
post[:card][:billingAddress] = map_address(options[:billing_address])
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def add_invoice(post, money, options)
|
|
134
|
+
post[:amount] = amount(money)
|
|
135
|
+
add_order_id(post, options)
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def add_payment(post, credit_card_or_reference, options = {})
|
|
139
|
+
post[:card] ||= {}
|
|
140
|
+
if credit_card_or_reference.is_a?(String)
|
|
141
|
+
post[:card][:paymentToken] = credit_card_or_reference
|
|
142
|
+
else
|
|
143
|
+
post[:card][:cardNum] = credit_card_or_reference.number
|
|
144
|
+
post[:card][:cvv] = credit_card_or_reference.verification_value
|
|
145
|
+
post[:card][:cardExpiry] = expdate(credit_card_or_reference)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
post[:currencyCode] = options[:currency] if options[:currency]
|
|
149
|
+
post[:billingDetails] = map_address(options[:billing_address]) if options[:billing_address]
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def expdate(credit_card)
|
|
153
|
+
year = format(credit_card.year, :four_digits)
|
|
154
|
+
month = format(credit_card.month, :two_digits)
|
|
155
|
+
|
|
156
|
+
# returns a hash (necessary in the card JSON object)
|
|
157
|
+
{ :month => month, :year => year }
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def add_order_id(post, options)
|
|
161
|
+
post[:merchantRefNum] = (options[:order_id] || SecureRandom.uuid)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def map_address(address)
|
|
165
|
+
return {} if address.nil?
|
|
166
|
+
country = Country.find(address[:country]) if address[:country]
|
|
167
|
+
mapped = {
|
|
168
|
+
:street => address[:address1],
|
|
169
|
+
:city => address[:city],
|
|
170
|
+
:zip => address[:zip],
|
|
171
|
+
:state => address[:state],
|
|
172
|
+
}
|
|
173
|
+
mapped[:country] = country.code(:alpha2).value unless country.blank?
|
|
174
|
+
|
|
175
|
+
mapped
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def parse(body)
|
|
179
|
+
body.blank? ? {} : JSON.parse(body)
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def commit(method, uri, parameters)
|
|
183
|
+
params = parameters.to_json unless parameters.nil?
|
|
184
|
+
response = begin
|
|
185
|
+
parse(ssl_request(method, get_url(uri), params, headers))
|
|
186
|
+
rescue ResponseError => e
|
|
187
|
+
return Response.new(false, 'Invalid Login') if(e.response.code == '401')
|
|
188
|
+
parse(e.response.body)
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
success = success_from(response)
|
|
192
|
+
Response.new(
|
|
193
|
+
success,
|
|
194
|
+
message_from(success, response),
|
|
195
|
+
response,
|
|
196
|
+
:test => test?,
|
|
197
|
+
:error_code => error_code_from(response),
|
|
198
|
+
:authorization => authorization_from(success, get_url(uri), method, response)
|
|
199
|
+
)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def get_url(uri)
|
|
203
|
+
url = (test? ? test_url : live_url)
|
|
204
|
+
if uri =~ /^customervault/
|
|
205
|
+
"#{url}#{uri}"
|
|
206
|
+
else
|
|
207
|
+
"#{url}cardpayments/v1/accounts/#{@options[:account_number]}/#{uri}"
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
def success_from(response)
|
|
212
|
+
response.blank? || !response.key?('error')
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def message_from(success, response)
|
|
216
|
+
success ? 'OK' : (response['error']['message'] || 'Unknown error - please contact Netbanx-Paysafe')
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def authorization_from(success, url, method, response)
|
|
220
|
+
if success && response.present? && url.match(/cardpayments\/v1\/accounts\/.*\//)
|
|
221
|
+
response['id']
|
|
222
|
+
elsif method == :post && url.match(/customervault\/.*\//)
|
|
223
|
+
# auth for tokenised customer vault is returned as
|
|
224
|
+
# customer_profile_id|card_id|payment_method_token
|
|
225
|
+
#
|
|
226
|
+
# customer_profile_id is the uuid that identifies the customer
|
|
227
|
+
# card_id is the uuid that identifies the card
|
|
228
|
+
# payment_method_token is the token that needs to be used when
|
|
229
|
+
# calling purchase with a token
|
|
230
|
+
#
|
|
231
|
+
# both id's are used to unstore, the payment token is only used for
|
|
232
|
+
# purchase transactions
|
|
233
|
+
[response['id'], response['cards'].first['id'], response['cards'].first['paymentToken']].join('|')
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
# Builds the auth and U-A headers for the request
|
|
238
|
+
def headers
|
|
239
|
+
{
|
|
240
|
+
'Accept' => 'application/json',
|
|
241
|
+
'Content-type' => 'application/json',
|
|
242
|
+
'Authorization' => "Basic #{Base64.strict_encode64(@options[:api_key].to_s)}",
|
|
243
|
+
'User-Agent' => "Netbanx-Paysafe v1.0/ActiveMerchant #{ActiveMerchant::VERSION}"
|
|
244
|
+
}
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
def error_code_from(response)
|
|
248
|
+
unless success_from(response)
|
|
249
|
+
case response['errorCode']
|
|
250
|
+
when '3002' then STANDARD_ERROR_CODE[:invalid_number] # You submitted an invalid card number or brand or combination of card number and brand with your request.
|
|
251
|
+
when '3004' then STANDARD_ERROR_CODE[:incorrect_zip] # The zip/postal code must be provided for an AVS check request.
|
|
252
|
+
when '3005' then STANDARD_ERROR_CODE[:incorrect_cvc] # You submitted an incorrect CVC value with your request.
|
|
253
|
+
when '3006' then STANDARD_ERROR_CODE[:expired_card] # You submitted an expired credit card number with your request.
|
|
254
|
+
when '3009' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined by the issuing bank.
|
|
255
|
+
when '3011' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined by the issuing bank because the card used is a restricted card. Contact the cardholder's credit card company for further investigation.
|
|
256
|
+
when '3012' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined by the issuing bank because the credit card expiry date submitted is invalid.
|
|
257
|
+
when '3013' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined by the issuing bank due to problems with the credit card account.
|
|
258
|
+
when '3014' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined - the issuing bank has returned an unknown response. Contact the card holder's credit card company for further investigation.
|
|
259
|
+
when '3015' then STANDARD_ERROR_CODE[:card_declined] # The bank has requested that you process the transaction manually by calling the cardholder's credit card company.
|
|
260
|
+
when '3016' then STANDARD_ERROR_CODE[:card_declined] # The bank has requested that you retrieve the card from the cardholder – it may be a lost or stolen card.
|
|
261
|
+
when '3017' then STANDARD_ERROR_CODE[:invalid_number] # You submitted an invalid credit card number with your request.
|
|
262
|
+
when '3022' then STANDARD_ERROR_CODE[:card_declined] # The card has been declined due to insufficient funds.
|
|
263
|
+
when '3023' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined by the issuing bank due to its proprietary card activity regulations.
|
|
264
|
+
when '3024' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined because the issuing bank does not permit the transaction for this card.
|
|
265
|
+
when '3032' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined by the issuing bank or external gateway because the card is probably in one of their negative databases.
|
|
266
|
+
when '3035' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined due to exceeded PIN attempts.
|
|
267
|
+
when '3036' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined due to an invalid issuer.
|
|
268
|
+
when '3037' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined because it is invalid.
|
|
269
|
+
when '3038' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined due to customer cancellation.
|
|
270
|
+
when '3039' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined due to an invalid authentication value.
|
|
271
|
+
when '3040' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined because the request type is not permitted on the card.
|
|
272
|
+
when '3041' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined due to a timeout.
|
|
273
|
+
when '3042' then STANDARD_ERROR_CODE[:card_declined] # Your request has been declined due to a cryptographic error.
|
|
274
|
+
when '3045' then STANDARD_ERROR_CODE[:invalid_expiry_date] # You submitted an invalid date format for this request.
|
|
275
|
+
when '3046' then STANDARD_ERROR_CODE[:card_declined] # The transaction was declined because the amount was set to zero.
|
|
276
|
+
when '3047' then STANDARD_ERROR_CODE[:card_declined] # The transaction was declined because the amount exceeds the floor limit.
|
|
277
|
+
when '3048' then STANDARD_ERROR_CODE[:card_declined] # The transaction was declined because the amount is less than the floor limit.
|
|
278
|
+
when '3049' then STANDARD_ERROR_CODE[:card_declined] # The bank has requested that you retrieve the card from the cardholder – the credit card has expired.
|
|
279
|
+
when '3050' then STANDARD_ERROR_CODE[:card_declined] # The bank has requested that you retrieve the card from the cardholder – fraudulent activity is suspected.
|
|
280
|
+
when '3051' then STANDARD_ERROR_CODE[:card_declined] # The bank has requested that you retrieve the card from the cardholder – contact the acquirer for more information.
|
|
281
|
+
when '3052' then STANDARD_ERROR_CODE[:card_declined] # The bank has requested that you retrieve the card from the cardholder – the credit card is restricted.
|
|
282
|
+
when '3053' then STANDARD_ERROR_CODE[:card_declined] # The bank has requested that you retrieve the card from the cardholder – please call the acquirer.
|
|
283
|
+
when '3054' then STANDARD_ERROR_CODE[:card_declined] # The transaction was declined due to suspected fraud.
|
|
284
|
+
else STANDARD_ERROR_CODE[:processing_error]
|
|
285
|
+
end
|
|
286
|
+
end
|
|
287
|
+
end
|
|
288
|
+
end
|
|
289
|
+
end
|
|
290
|
+
end
|