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,218 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
class TrexleGateway < Gateway
|
|
4
|
+
self.test_url = 'https://core.trexle.com/api/v1'
|
|
5
|
+
self.live_url = 'https://core.trexle.com/api/v1'
|
|
6
|
+
|
|
7
|
+
self.default_currency = 'USD'
|
|
8
|
+
self.money_format = :cents
|
|
9
|
+
self.supported_countries = %w(AD AE AT AU BD BE BG BN CA CH CY CZ DE DK EE EG ES FI FR GB
|
|
10
|
+
GI GR HK HU ID IE IL IM IN IS IT JO KW LB LI LK LT LU LV MC
|
|
11
|
+
MT MU MV MX MY NL NO NZ OM PH PL PT QA RO SA SE SG SI SK SM
|
|
12
|
+
TR TT UM US VA VN ZA)
|
|
13
|
+
self.supported_cardtypes = [:visa, :master, :american_express]
|
|
14
|
+
self.homepage_url = 'https://trexle.com'
|
|
15
|
+
self.display_name = 'Trexle'
|
|
16
|
+
|
|
17
|
+
def initialize(options = {})
|
|
18
|
+
requires!(options, :api_key)
|
|
19
|
+
super
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Create a charge using a credit card, card token or customer token
|
|
23
|
+
#
|
|
24
|
+
# To charge a credit card: purchase([money], [creditcard hash], ...)
|
|
25
|
+
# To charge a customer: purchase([money], [token], ...)
|
|
26
|
+
def purchase(money, creditcard, options = {})
|
|
27
|
+
post = {}
|
|
28
|
+
|
|
29
|
+
add_amount(post, money, options)
|
|
30
|
+
add_customer_data(post, options)
|
|
31
|
+
add_invoice(post, options)
|
|
32
|
+
add_creditcard(post, creditcard)
|
|
33
|
+
add_address(post, creditcard, options)
|
|
34
|
+
commit(:post, 'charges', post, options)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Create a customer and associated credit card. The token that is returned
|
|
38
|
+
# can be used instead of a credit card parameter in the purchase method
|
|
39
|
+
def store(creditcard, options = {})
|
|
40
|
+
post = {}
|
|
41
|
+
|
|
42
|
+
add_creditcard(post, creditcard)
|
|
43
|
+
add_customer_data(post, options)
|
|
44
|
+
add_address(post, creditcard, options)
|
|
45
|
+
commit(:post, 'customers', post, options)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Refund a transaction
|
|
49
|
+
def refund(money, token, options = {})
|
|
50
|
+
commit(:post, "charges/#{CGI.escape(token)}/refunds", { amount: amount(money) }, options)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Authorize an amount on a credit card. Once authorized, you can later
|
|
54
|
+
# capture this charge using the charge token that is returned.
|
|
55
|
+
def authorize(money, creditcard, options = {})
|
|
56
|
+
post = {}
|
|
57
|
+
|
|
58
|
+
add_amount(post, money, options)
|
|
59
|
+
add_customer_data(post, options)
|
|
60
|
+
add_invoice(post, options)
|
|
61
|
+
add_creditcard(post, creditcard)
|
|
62
|
+
add_address(post, creditcard, options)
|
|
63
|
+
post[:capture] = false
|
|
64
|
+
commit(:post, 'charges', post, options)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Captures a previously authorized charge. Capturing only part of the original
|
|
68
|
+
# authorization is currently not supported.
|
|
69
|
+
def capture(money, token, options = {})
|
|
70
|
+
commit(:put, "charges/#{CGI.escape(token)}/capture", { amount: amount(money) }, options)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Updates the credit card for the customer.
|
|
74
|
+
def update(token, creditcard, options = {})
|
|
75
|
+
post = {}
|
|
76
|
+
|
|
77
|
+
add_creditcard(post, creditcard)
|
|
78
|
+
add_customer_data(post, options)
|
|
79
|
+
add_address(post, creditcard, options)
|
|
80
|
+
commit(:put, "customers/#{CGI.escape(token)}", post, options)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def supports_scrubbing
|
|
84
|
+
true
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def scrub(transcript)
|
|
88
|
+
transcript.
|
|
89
|
+
gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]').
|
|
90
|
+
gsub(/(number\\?":\\?")(\d*)/, '\1[FILTERED]').
|
|
91
|
+
gsub(/(cvc\\?":\\?")(\d*)/, '\1[FILTERED]')
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
private
|
|
95
|
+
|
|
96
|
+
def add_amount(post, money, options)
|
|
97
|
+
post[:amount] = amount(money)
|
|
98
|
+
post[:currency] = (options[:currency] || currency(money))
|
|
99
|
+
post[:currency] = post[:currency].upcase if post[:currency]
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def add_customer_data(post, options)
|
|
103
|
+
post[:email] = options[:email] if options[:email]
|
|
104
|
+
post[:ip_address] = options[:ip] if options[:ip]
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def add_address(post, creditcard, options)
|
|
108
|
+
return if creditcard.kind_of?(String)
|
|
109
|
+
address = (options[:billing_address] || options[:address])
|
|
110
|
+
return unless address
|
|
111
|
+
|
|
112
|
+
post[:card] ||= {}
|
|
113
|
+
post[:card].merge!(
|
|
114
|
+
address_line1: address[:address1],
|
|
115
|
+
address_line2: address[:address_line2],
|
|
116
|
+
address_city: address[:city],
|
|
117
|
+
address_postcode: address[:zip],
|
|
118
|
+
address_state: address[:state],
|
|
119
|
+
address_country: address[:country]
|
|
120
|
+
)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def add_invoice(post, options)
|
|
124
|
+
post[:description] = options[:description] || 'Active Merchant Purchase'
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def add_creditcard(post, creditcard)
|
|
128
|
+
if creditcard.respond_to?(:number)
|
|
129
|
+
post[:card] ||= {}
|
|
130
|
+
|
|
131
|
+
post[:card].merge!(
|
|
132
|
+
number: creditcard.number,
|
|
133
|
+
expiry_month: creditcard.month,
|
|
134
|
+
expiry_year: creditcard.year,
|
|
135
|
+
cvc: creditcard.verification_value,
|
|
136
|
+
name: creditcard.name
|
|
137
|
+
)
|
|
138
|
+
elsif creditcard.kind_of?(String)
|
|
139
|
+
if creditcard =~ /^token_/
|
|
140
|
+
post[:card_token] = creditcard
|
|
141
|
+
else
|
|
142
|
+
post[:customer_token] = creditcard
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def headers(params = {})
|
|
148
|
+
result = {
|
|
149
|
+
'Content-Type' => 'application/json',
|
|
150
|
+
'Authorization' => "Basic #{Base64.strict_encode64(options[:api_key] + ':').strip}"
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
result['X-Partner-Key'] = params[:partner_key] if params[:partner_key]
|
|
154
|
+
result['X-Safe-Card'] = params[:safe_card] if params[:safe_card]
|
|
155
|
+
result
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def commit(method, action, params, options)
|
|
159
|
+
url = "#{test? ? test_url : live_url}/#{action}"
|
|
160
|
+
raw_response = ssl_request(method, url, post_data(params), headers(options))
|
|
161
|
+
parsed_response = parse(raw_response)
|
|
162
|
+
success_response(parsed_response)
|
|
163
|
+
rescue ResponseError => e
|
|
164
|
+
error_response(parse(e.response.body))
|
|
165
|
+
rescue JSON::ParserError
|
|
166
|
+
unparsable_response(raw_response)
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def success_response(body)
|
|
170
|
+
return invalid_response unless body['response']
|
|
171
|
+
|
|
172
|
+
response = body['response']
|
|
173
|
+
Response.new(
|
|
174
|
+
true,
|
|
175
|
+
response['status_message'],
|
|
176
|
+
body,
|
|
177
|
+
authorization: token(response),
|
|
178
|
+
test: test?
|
|
179
|
+
)
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def error_response(body)
|
|
183
|
+
return invalid_response unless body['error']
|
|
184
|
+
Response.new(
|
|
185
|
+
false,
|
|
186
|
+
body['error'],
|
|
187
|
+
body,
|
|
188
|
+
authorization: nil,
|
|
189
|
+
test: test?
|
|
190
|
+
)
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def unparsable_response(raw_response)
|
|
194
|
+
message = 'Invalid JSON response received from Trexle. Please contact support@trexle.com if you continue to receive this message.'
|
|
195
|
+
message += " (The raw response returned by the API was #{raw_response.inspect})"
|
|
196
|
+
return Response.new(false, message)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
def invalid_response
|
|
200
|
+
message = 'Invalid response.'
|
|
201
|
+
return Response.new(false, message)
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def token(response)
|
|
205
|
+
response['token']
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def parse(body)
|
|
209
|
+
return {} if body.blank?
|
|
210
|
+
JSON.parse(body)
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def post_data(parameters = {})
|
|
214
|
+
parameters.to_json
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
end
|
|
@@ -19,10 +19,10 @@ module ActiveMerchant #:nodoc:
|
|
|
19
19
|
# Next, create a credit card object using a TC approved test card.
|
|
20
20
|
#
|
|
21
21
|
# creditcard = ActiveMerchant::Billing::CreditCard.new(
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
22
|
+
# :number => '4111111111111111',
|
|
23
|
+
# :month => 8,
|
|
24
|
+
# :year => 2006,
|
|
25
|
+
# :first_name => 'Longbob',
|
|
26
26
|
# :last_name => 'Longsen'
|
|
27
27
|
# )
|
|
28
28
|
#
|
|
@@ -67,38 +67,38 @@ module ActiveMerchant #:nodoc:
|
|
|
67
67
|
class TrustCommerceGateway < Gateway
|
|
68
68
|
self.live_url = self.test_url = 'https://vault.trustcommerce.com/trans/'
|
|
69
69
|
|
|
70
|
-
SUCCESS_TYPES = [
|
|
70
|
+
SUCCESS_TYPES = ['approved', 'accepted']
|
|
71
71
|
|
|
72
72
|
DECLINE_CODES = {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
73
|
+
'decline' => 'The credit card was declined',
|
|
74
|
+
'avs' => 'AVS failed; the address entered does not match the billing address on file at the bank',
|
|
75
|
+
'cvv' => 'CVV failed; the number provided is not the correct verification number for the card',
|
|
76
|
+
'call' => 'The card must be authorized manually over the phone',
|
|
77
|
+
'expiredcard' => 'Issuer was not certified for card verification',
|
|
78
|
+
'carderror' => 'Card number is invalid',
|
|
79
|
+
'authexpired' => 'Attempt to postauth an expired (more than 14 days old) preauth',
|
|
80
|
+
'fraud' => 'CrediGuard fraud score was below requested threshold',
|
|
81
|
+
'blacklist' => 'CrediGuard blacklist value was triggered',
|
|
82
|
+
'velocity' => 'CrediGuard velocity control value was triggered',
|
|
83
|
+
'dailylimit' => 'Daily limit in transaction count or amount as been reached',
|
|
84
|
+
'weeklylimit' => 'Weekly limit in transaction count or amount as been reached',
|
|
85
|
+
'monthlylimit' => 'Monthly limit in transaction count or amount as been reached'
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
BADDATA_CODES = {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
89
|
+
'missingfields' => 'One or more parameters required for this transaction type were not sent',
|
|
90
|
+
'extrafields' => 'Parameters not allowed for this transaction type were sent',
|
|
91
|
+
'badformat' => 'A field was improperly formatted, such as non-digit characters in a number field',
|
|
92
|
+
'badlength' => 'A field was longer or shorter than the server allows',
|
|
93
|
+
'merchantcantaccept' => "The merchant can't accept data passed in this field",
|
|
94
|
+
'mismatch' => 'Data in one of the offending fields did not cross-check with the other offending field'
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
ERROR_CODES = {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
'cantconnect' => "Couldn't connect to the TrustCommerce gateway",
|
|
99
|
+
'dnsfailure' => 'The TCLink software was unable to resolve DNS hostnames',
|
|
100
|
+
'linkfailure' => 'The connection was established, but was severed before the transaction could complete',
|
|
101
|
+
'failtoprocess' => 'The bank servers are offline and unable to authorize transactions'
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
TEST_LOGIN = 'TestMerchant'
|
|
@@ -153,6 +153,7 @@ module ActiveMerchant #:nodoc:
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
add_order_id(parameters, options)
|
|
156
|
+
add_aggregator(parameters, options)
|
|
156
157
|
add_customer_data(parameters, options)
|
|
157
158
|
add_payment_source(parameters, creditcard_or_billing_id)
|
|
158
159
|
add_addresses(parameters, options)
|
|
@@ -167,6 +168,7 @@ module ActiveMerchant #:nodoc:
|
|
|
167
168
|
}
|
|
168
169
|
|
|
169
170
|
add_order_id(parameters, options)
|
|
171
|
+
add_aggregator(parameters, options)
|
|
170
172
|
add_customer_data(parameters, options)
|
|
171
173
|
add_payment_source(parameters, creditcard_or_billing_id)
|
|
172
174
|
add_addresses(parameters, options)
|
|
@@ -181,6 +183,7 @@ module ActiveMerchant #:nodoc:
|
|
|
181
183
|
:amount => amount(money),
|
|
182
184
|
:transid => authorization,
|
|
183
185
|
}
|
|
186
|
+
add_aggregator(parameters, options)
|
|
184
187
|
|
|
185
188
|
commit('postauth', parameters)
|
|
186
189
|
end
|
|
@@ -192,12 +195,13 @@ module ActiveMerchant #:nodoc:
|
|
|
192
195
|
:amount => amount(money),
|
|
193
196
|
:transid => identification
|
|
194
197
|
}
|
|
198
|
+
add_aggregator(parameters, options)
|
|
195
199
|
|
|
196
200
|
commit('credit', parameters)
|
|
197
201
|
end
|
|
198
202
|
|
|
199
203
|
def credit(money, identification, options = {})
|
|
200
|
-
deprecated CREDIT_DEPRECATION_MESSAGE
|
|
204
|
+
ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
|
|
201
205
|
refund(money, identification, options)
|
|
202
206
|
end
|
|
203
207
|
|
|
@@ -219,11 +223,12 @@ module ActiveMerchant #:nodoc:
|
|
|
219
223
|
parameters = {
|
|
220
224
|
:transid => authorization,
|
|
221
225
|
}
|
|
226
|
+
add_aggregator(parameters, options)
|
|
222
227
|
|
|
223
228
|
commit('reversal', parameters)
|
|
224
229
|
end
|
|
225
230
|
|
|
226
|
-
# recurring() a TrustCommerce account that is activated for
|
|
231
|
+
# recurring() a TrustCommerce account that is activated for Citadel, TrustCommerce's
|
|
227
232
|
# hosted customer billing info database.
|
|
228
233
|
#
|
|
229
234
|
# Recurring billing uses the same TC action as a plain-vanilla 'store', but we have a separate method for clarity. It can be called
|
|
@@ -235,7 +240,9 @@ module ActiveMerchant #:nodoc:
|
|
|
235
240
|
#
|
|
236
241
|
# You can optionally specify how long you want payments to continue using 'payments'
|
|
237
242
|
def recurring(money, creditcard, options = {})
|
|
238
|
-
|
|
243
|
+
ActiveMerchant.deprecated RECURRING_DEPRECATION_MESSAGE
|
|
244
|
+
|
|
245
|
+
requires!(options, [:periodicity, :bimonthly, :monthly, :biweekly, :weekly, :yearly, :daily])
|
|
239
246
|
|
|
240
247
|
cycle = case options[:periodicity]
|
|
241
248
|
when :monthly
|
|
@@ -265,7 +272,7 @@ module ActiveMerchant #:nodoc:
|
|
|
265
272
|
commit('store', parameters)
|
|
266
273
|
end
|
|
267
274
|
|
|
268
|
-
# store() requires a TrustCommerce account that is activated for
|
|
275
|
+
# store() requires a TrustCommerce account that is activated for Citadel. You can call it with a credit card and a billing ID
|
|
269
276
|
# you would like to use to reference the stored credit card info for future captures. Use 'verify' to specify whether you want
|
|
270
277
|
# to simply store the card in the DB, or you want TC to verify the data first.
|
|
271
278
|
|
|
@@ -290,24 +297,46 @@ module ActiveMerchant #:nodoc:
|
|
|
290
297
|
commit('unstore', parameters)
|
|
291
298
|
end
|
|
292
299
|
|
|
300
|
+
def supports_scrubbing
|
|
301
|
+
true
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
def scrub(transcript)
|
|
305
|
+
transcript.
|
|
306
|
+
gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]').
|
|
307
|
+
gsub(%r((&?cc=)\d*(&?)), '\1[FILTERED]\2').
|
|
308
|
+
gsub(%r((&?password=)[^&]+(&?)), '\1[FILTERED]\2').
|
|
309
|
+
gsub(%r((&?cvv=)\d*(&?)), '\1[FILTERED]\2')
|
|
310
|
+
end
|
|
311
|
+
|
|
293
312
|
private
|
|
313
|
+
|
|
314
|
+
def add_aggregator(params, options)
|
|
315
|
+
if @options[:aggregator_id] || application_id != Gateway.application_id
|
|
316
|
+
params[:aggregators] = 1
|
|
317
|
+
params[:aggregator1] = @options[:aggregator_id] || application_id
|
|
318
|
+
end
|
|
319
|
+
end
|
|
320
|
+
|
|
294
321
|
def add_payment_source(params, source)
|
|
295
322
|
if source.is_a?(String)
|
|
296
323
|
add_billing_id(params, source)
|
|
324
|
+
elsif card_brand(source) == 'check'
|
|
325
|
+
add_check(params, source)
|
|
297
326
|
else
|
|
298
327
|
add_creditcard(params, source)
|
|
299
328
|
end
|
|
300
329
|
end
|
|
301
330
|
|
|
302
|
-
def
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
331
|
+
def add_check(params, check)
|
|
332
|
+
params[:media] = 'ach'
|
|
333
|
+
params[:routing] = check.routing_number
|
|
334
|
+
params[:account] = check.account_number
|
|
335
|
+
params[:savings] = 'y' if check.account_type == 'savings'
|
|
307
336
|
end
|
|
308
337
|
|
|
309
338
|
def add_creditcard(params, creditcard)
|
|
310
|
-
params[:media] =
|
|
339
|
+
params[:media] = 'cc'
|
|
311
340
|
params[:name] = creditcard.name
|
|
312
341
|
params[:cc] = creditcard.number
|
|
313
342
|
params[:exp] = expdate(creditcard)
|
|
@@ -346,7 +375,7 @@ module ActiveMerchant #:nodoc:
|
|
|
346
375
|
params[:shipto_address2] = shipping_address[:address2] unless shipping_address[:address2].blank?
|
|
347
376
|
params[:shipto_city] = shipping_address[:city] unless shipping_address[:city].blank?
|
|
348
377
|
params[:shipto_state] = shipping_address[:state] unless shipping_address[:state].blank?
|
|
349
|
-
params[:shipto_zip]
|
|
378
|
+
params[:shipto_zip] = shipping_address[:zip] unless shipping_address[:zip].blank?
|
|
350
379
|
params[:shipto_country] = shipping_address[:country] unless shipping_address[:country].blank?
|
|
351
380
|
end
|
|
352
381
|
end
|
|
@@ -355,7 +384,7 @@ module ActiveMerchant #:nodoc:
|
|
|
355
384
|
# TCLink wants us to send a hash with string keys, and activemerchant pushes everything around with
|
|
356
385
|
# symbol keys. Before sending our input to TCLink, we convert all our keys to strings and dump the symbol keys.
|
|
357
386
|
# We also remove any pairs with nil values, as these confuse TCLink.
|
|
358
|
-
parameters.keys.
|
|
387
|
+
parameters.keys.reverse_each do |key|
|
|
359
388
|
if parameters[key]
|
|
360
389
|
parameters[key.to_s] = parameters[key]
|
|
361
390
|
end
|
|
@@ -364,7 +393,7 @@ module ActiveMerchant #:nodoc:
|
|
|
364
393
|
end
|
|
365
394
|
|
|
366
395
|
def post_data(parameters)
|
|
367
|
-
parameters.collect { |key, value| "#{key}=#{
|
|
396
|
+
parameters.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
|
|
368
397
|
end
|
|
369
398
|
|
|
370
399
|
def commit(action, parameters)
|
|
@@ -376,19 +405,19 @@ module ActiveMerchant #:nodoc:
|
|
|
376
405
|
clean_and_stringify_params(parameters)
|
|
377
406
|
|
|
378
407
|
data = if tclink?
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
408
|
+
TCLink.send(parameters)
|
|
409
|
+
else
|
|
410
|
+
parse(ssl_post(self.live_url, post_data(parameters)))
|
|
382
411
|
end
|
|
383
412
|
|
|
384
413
|
# to be considered successful, transaction status must be either "approved" or "accepted"
|
|
385
|
-
success = SUCCESS_TYPES.include?(data[
|
|
414
|
+
success = SUCCESS_TYPES.include?(data['status'])
|
|
386
415
|
message = message_from(data)
|
|
387
416
|
Response.new(success, message, data,
|
|
388
417
|
:test => test?,
|
|
389
|
-
:authorization => data[
|
|
390
|
-
:cvv_result => data[
|
|
391
|
-
:avs_result => { :code => data[
|
|
418
|
+
:authorization => data['transid'],
|
|
419
|
+
:cvv_result => data['cvv'],
|
|
420
|
+
:avs_result => { :code => data['avs'] }
|
|
392
421
|
)
|
|
393
422
|
end
|
|
394
423
|
|
|
@@ -396,7 +425,7 @@ module ActiveMerchant #:nodoc:
|
|
|
396
425
|
results = {}
|
|
397
426
|
|
|
398
427
|
body.split(/\n/).each do |pair|
|
|
399
|
-
key,val = pair.split(/=/)
|
|
428
|
+
key, val = pair.split(/=/)
|
|
400
429
|
results[key] = val
|
|
401
430
|
end
|
|
402
431
|
|
|
@@ -404,15 +433,15 @@ module ActiveMerchant #:nodoc:
|
|
|
404
433
|
end
|
|
405
434
|
|
|
406
435
|
def message_from(data)
|
|
407
|
-
|
|
408
|
-
when
|
|
409
|
-
return DECLINE_CODES[data[
|
|
410
|
-
when
|
|
411
|
-
return BADDATA_CODES[data[
|
|
412
|
-
when
|
|
413
|
-
return ERROR_CODES[data[
|
|
436
|
+
case data['status']
|
|
437
|
+
when 'decline'
|
|
438
|
+
return DECLINE_CODES[data['declinetype']]
|
|
439
|
+
when 'baddata'
|
|
440
|
+
return BADDATA_CODES[data['error']]
|
|
441
|
+
when 'error'
|
|
442
|
+
return ERROR_CODES[data['errortype']]
|
|
414
443
|
else
|
|
415
|
-
return
|
|
444
|
+
return 'The transaction was successful'
|
|
416
445
|
end
|
|
417
446
|
end
|
|
418
447
|
|
|
@@ -9,15 +9,15 @@ module ActiveMerchant #:nodoc:
|
|
|
9
9
|
self.abstract_class = true
|
|
10
10
|
|
|
11
11
|
##
|
|
12
|
-
# Creates an instance of UsaEpayTransactionGateway by default, but if
|
|
12
|
+
# Creates an instance of UsaEpayTransactionGateway by default, but if
|
|
13
13
|
# :software id or :live_url are passed in the options hash it will
|
|
14
14
|
# create an instance of UsaEpayAdvancedGateway.
|
|
15
15
|
#
|
|
16
16
|
def self.new(options={})
|
|
17
|
-
|
|
18
|
-
UsaEpayTransactionGateway.new(options)
|
|
19
|
-
else
|
|
17
|
+
if options.has_key?(:software_id) || options.has_key?(:live_url)
|
|
20
18
|
UsaEpayAdvancedGateway.new(options)
|
|
19
|
+
else
|
|
20
|
+
UsaEpayTransactionGateway.new(options)
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
end
|