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
|
@@ -1,365 +1,25 @@
|
|
|
1
1
|
require 'rexml/document'
|
|
2
2
|
require 'digest/md5'
|
|
3
3
|
|
|
4
|
+
require 'active_merchant/billing/gateways/quickpay/quickpay_v10'
|
|
5
|
+
require 'active_merchant/billing/gateways/quickpay/quickpay_v4to7'
|
|
6
|
+
|
|
4
7
|
module ActiveMerchant #:nodoc:
|
|
5
8
|
module Billing #:nodoc:
|
|
6
9
|
class QuickpayGateway < Gateway
|
|
7
|
-
self.
|
|
8
|
-
|
|
9
|
-
self.default_currency = 'DKK'
|
|
10
|
-
self.money_format = :cents
|
|
11
|
-
self.supported_cardtypes = [:dankort, :forbrugsforeningen, :visa, :master, :american_express, :diners_club, :jcb, :maestro]
|
|
12
|
-
self.supported_countries = ['DK', 'SE']
|
|
13
|
-
self.homepage_url = 'http://quickpay.dk/'
|
|
14
|
-
self.display_name = 'Quickpay'
|
|
15
|
-
|
|
16
|
-
MD5_CHECK_FIELDS = {
|
|
17
|
-
3 => {
|
|
18
|
-
:authorize => %w(protocol msgtype merchant ordernumber amount
|
|
19
|
-
currency autocapture cardnumber expirationdate
|
|
20
|
-
cvd cardtypelock testmode),
|
|
21
|
-
|
|
22
|
-
:capture => %w(protocol msgtype merchant amount transaction),
|
|
23
|
-
|
|
24
|
-
:cancel => %w(protocol msgtype merchant transaction),
|
|
25
|
-
|
|
26
|
-
:refund => %w(protocol msgtype merchant amount transaction),
|
|
27
|
-
|
|
28
|
-
:subscribe => %w(protocol msgtype merchant ordernumber cardnumber
|
|
29
|
-
expirationdate cvd cardtypelock description testmode),
|
|
30
|
-
|
|
31
|
-
:recurring => %w(protocol msgtype merchant ordernumber amount
|
|
32
|
-
currency autocapture transaction),
|
|
33
|
-
|
|
34
|
-
:status => %w(protocol msgtype merchant transaction),
|
|
35
|
-
|
|
36
|
-
:chstatus => %w(protocol msgtype merchant)
|
|
37
|
-
},
|
|
38
|
-
|
|
39
|
-
4 => {
|
|
40
|
-
:authorize => %w(protocol msgtype merchant ordernumber amount
|
|
41
|
-
currency autocapture cardnumber expirationdate cvd
|
|
42
|
-
cardtypelock testmode fraud_remote_addr
|
|
43
|
-
fraud_http_accept fraud_http_accept_language
|
|
44
|
-
fraud_http_accept_encoding fraud_http_accept_charset
|
|
45
|
-
fraud_http_referer fraud_http_user_agent apikey),
|
|
46
|
-
|
|
47
|
-
:capture => %w(protocol msgtype merchant amount transaction apikey),
|
|
48
|
-
|
|
49
|
-
:cancel => %w(protocol msgtype merchant transaction apikey),
|
|
50
|
-
|
|
51
|
-
:refund => %w(protocol msgtype merchant amount transaction apikey),
|
|
52
|
-
|
|
53
|
-
:subscribe => %w(protocol msgtype merchant ordernumber cardnumber
|
|
54
|
-
expirationdate cvd cardtypelock description testmode
|
|
55
|
-
fraud_remote_addr fraud_http_accept fraud_http_accept_language
|
|
56
|
-
fraud_http_accept_encoding fraud_http_accept_charset
|
|
57
|
-
fraud_http_referer fraud_http_user_agent apikey),
|
|
58
|
-
|
|
59
|
-
:recurring => %w(protocol msgtype merchant ordernumber amount currency
|
|
60
|
-
autocapture transaction apikey),
|
|
61
|
-
|
|
62
|
-
:status => %w(protocol msgtype merchant transaction apikey),
|
|
63
|
-
|
|
64
|
-
:chstatus => %w(protocol msgtype merchant apikey)
|
|
65
|
-
},
|
|
66
|
-
|
|
67
|
-
5 => {
|
|
68
|
-
:authorize => %w(protocol msgtype merchant ordernumber amount
|
|
69
|
-
currency autocapture cardnumber expirationdate cvd
|
|
70
|
-
cardtypelock testmode fraud_remote_addr
|
|
71
|
-
fraud_http_accept fraud_http_accept_language
|
|
72
|
-
fraud_http_accept_encoding fraud_http_accept_charset
|
|
73
|
-
fraud_http_referer fraud_http_user_agent apikey),
|
|
74
|
-
|
|
75
|
-
:capture => %w(protocol msgtype merchant amount transaction apikey),
|
|
76
|
-
|
|
77
|
-
:cancel => %w(protocol msgtype merchant transaction apikey),
|
|
78
|
-
|
|
79
|
-
:refund => %w(protocol msgtype merchant amount transaction apikey),
|
|
80
|
-
|
|
81
|
-
:subscribe => %w(protocol msgtype merchant ordernumber cardnumber
|
|
82
|
-
expirationdate cvd cardtypelock description testmode
|
|
83
|
-
fraud_remote_addr fraud_http_accept fraud_http_accept_language
|
|
84
|
-
fraud_http_accept_encoding fraud_http_accept_charset
|
|
85
|
-
fraud_http_referer fraud_http_user_agent apikey),
|
|
86
|
-
|
|
87
|
-
:recurring => %w(protocol msgtype merchant ordernumber amount currency
|
|
88
|
-
autocapture transaction apikey),
|
|
89
|
-
|
|
90
|
-
:status => %w(protocol msgtype merchant transaction apikey),
|
|
91
|
-
|
|
92
|
-
:chstatus => %w(protocol msgtype merchant apikey)
|
|
93
|
-
},
|
|
94
|
-
|
|
95
|
-
6 => {
|
|
96
|
-
:authorize => %w(protocol msgtype merchant ordernumber amount
|
|
97
|
-
currency autocapture cardnumber expirationdate cvd
|
|
98
|
-
cardtypelock testmode fraud_remote_addr
|
|
99
|
-
fraud_http_accept fraud_http_accept_language
|
|
100
|
-
fraud_http_accept_encoding fraud_http_accept_charset
|
|
101
|
-
fraud_http_referer fraud_http_user_agent apikey),
|
|
102
|
-
|
|
103
|
-
:capture => %w(protocol msgtype merchant amount transaction
|
|
104
|
-
apikey),
|
|
105
|
-
|
|
106
|
-
:cancel => %w(protocol msgtype merchant transaction apikey),
|
|
107
|
-
|
|
108
|
-
:refund => %w(protocol msgtype merchant amount transaction apikey),
|
|
10
|
+
self.abstract_class = true
|
|
109
11
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
fraud_remote_addr fraud_http_accept fraud_http_accept_language
|
|
113
|
-
fraud_http_accept_encoding fraud_http_accept_charset
|
|
114
|
-
fraud_http_referer fraud_http_user_agent apikey),
|
|
12
|
+
def self.new(options = {})
|
|
13
|
+
options.fetch(:login) { raise ArgumentError.new('Missing required parameter: login') }
|
|
115
14
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
:status => %w(protocol msgtype merchant transaction apikey),
|
|
120
|
-
|
|
121
|
-
:chstatus => %w(protocol msgtype merchant apikey)
|
|
122
|
-
},
|
|
123
|
-
|
|
124
|
-
7 => {
|
|
125
|
-
:authorize => %w(protocol msgtype merchant ordernumber amount
|
|
126
|
-
currency autocapture cardnumber expirationdate cvd
|
|
127
|
-
acquirer cardtypelock testmode fraud_remote_addr
|
|
128
|
-
fraud_http_accept fraud_http_accept_language
|
|
129
|
-
fraud_http_accept_encoding fraud_http_accept_charset
|
|
130
|
-
fraud_http_referer fraud_http_user_agent apikey),
|
|
131
|
-
|
|
132
|
-
:capture => %w(protocol msgtype merchant amount transaction
|
|
133
|
-
apikey),
|
|
134
|
-
|
|
135
|
-
:cancel => %w(protocol msgtype merchant transaction apikey),
|
|
136
|
-
|
|
137
|
-
:refund => %w(protocol msgtype merchant amount transaction apikey),
|
|
138
|
-
|
|
139
|
-
:subscribe => %w(protocol msgtype merchant ordernumber cardnumber
|
|
140
|
-
expirationdate cvd acquirer cardtypelock description testmode
|
|
141
|
-
fraud_remote_addr fraud_http_accept fraud_http_accept_language
|
|
142
|
-
fraud_http_accept_encoding fraud_http_accept_charset
|
|
143
|
-
fraud_http_referer fraud_http_user_agent apikey),
|
|
144
|
-
|
|
145
|
-
:recurring => %w(protocol msgtype merchant ordernumber amount currency
|
|
146
|
-
autocapture transaction apikey),
|
|
147
|
-
|
|
148
|
-
:status => %w(protocol msgtype merchant transaction apikey),
|
|
149
|
-
|
|
150
|
-
:chstatus => %w(protocol msgtype merchant apikey)
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
APPROVED = '000'
|
|
155
|
-
|
|
156
|
-
# The login is the QuickpayId
|
|
157
|
-
# The password is the md5checkword from the Quickpay manager
|
|
158
|
-
# To use the API-key from the Quickpay manager, specify :api-key
|
|
159
|
-
# Using the API-key, requires that you use version 4+. Specify :version => 4/5/6/7 in options.
|
|
160
|
-
def initialize(options = {})
|
|
161
|
-
requires!(options, :login, :password)
|
|
162
|
-
@protocol = options.delete(:version) || 7 # default to protocol version 7
|
|
163
|
-
super
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
def authorize(money, credit_card_or_reference, options = {})
|
|
167
|
-
post = {}
|
|
168
|
-
|
|
169
|
-
action = recurring_or_authorize(credit_card_or_reference)
|
|
170
|
-
|
|
171
|
-
add_amount(post, money, options)
|
|
172
|
-
add_invoice(post, options)
|
|
173
|
-
add_creditcard_or_reference(post, credit_card_or_reference, options)
|
|
174
|
-
add_autocapture(post, false)
|
|
175
|
-
add_fraud_parameters(post, options) if action.eql?(:authorize)
|
|
176
|
-
add_testmode(post)
|
|
177
|
-
|
|
178
|
-
commit(action, post)
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
def purchase(money, credit_card_or_reference, options = {})
|
|
182
|
-
post = {}
|
|
183
|
-
|
|
184
|
-
action = recurring_or_authorize(credit_card_or_reference)
|
|
185
|
-
|
|
186
|
-
add_amount(post, money, options)
|
|
187
|
-
add_creditcard_or_reference(post, credit_card_or_reference, options)
|
|
188
|
-
add_invoice(post, options)
|
|
189
|
-
add_fraud_parameters(post, options) if action.eql?(:authorize)
|
|
190
|
-
add_autocapture(post, true)
|
|
191
|
-
|
|
192
|
-
commit(action, post)
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
def capture(money, authorization, options = {})
|
|
196
|
-
post = {}
|
|
197
|
-
|
|
198
|
-
add_reference(post, authorization)
|
|
199
|
-
add_amount_without_currency(post, money)
|
|
200
|
-
commit(:capture, post)
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
def void(identification, options = {})
|
|
204
|
-
post = {}
|
|
205
|
-
|
|
206
|
-
add_reference(post, identification)
|
|
207
|
-
|
|
208
|
-
commit(:cancel, post)
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
def refund(money, identification, options = {})
|
|
212
|
-
post = {}
|
|
213
|
-
|
|
214
|
-
add_amount_without_currency(post, money)
|
|
215
|
-
add_reference(post, identification)
|
|
216
|
-
|
|
217
|
-
commit(:refund, post)
|
|
218
|
-
end
|
|
219
|
-
|
|
220
|
-
def credit(money, identification, options = {})
|
|
221
|
-
deprecated CREDIT_DEPRECATION_MESSAGE
|
|
222
|
-
refund(money, identification, options)
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
def store(creditcard, options = {})
|
|
226
|
-
post = {}
|
|
227
|
-
|
|
228
|
-
add_creditcard(post, creditcard, options)
|
|
229
|
-
add_invoice(post, options)
|
|
230
|
-
add_description(post, options)
|
|
231
|
-
add_fraud_parameters(post, options)
|
|
232
|
-
add_testmode(post)
|
|
233
|
-
|
|
234
|
-
commit(:subscribe, post)
|
|
235
|
-
end
|
|
236
|
-
|
|
237
|
-
private
|
|
238
|
-
|
|
239
|
-
def add_amount(post, money, options = {})
|
|
240
|
-
post[:amount] = amount(money)
|
|
241
|
-
post[:currency] = options[:currency] || currency(money)
|
|
242
|
-
end
|
|
243
|
-
|
|
244
|
-
def add_amount_without_currency(post, money, options = {})
|
|
245
|
-
post[:amount] = amount(money)
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
def add_invoice(post, options)
|
|
249
|
-
post[:ordernumber] = format_order_number(options[:order_id])
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
def add_creditcard(post, credit_card, options)
|
|
253
|
-
post[:cardnumber] = credit_card.number
|
|
254
|
-
post[:cvd] = credit_card.verification_value
|
|
255
|
-
post[:expirationdate] = expdate(credit_card)
|
|
256
|
-
post[:cardtypelock] = options[:cardtypelock] unless options[:cardtypelock].blank?
|
|
257
|
-
post[:acquirer] = options[:acquirer] unless options[:acquirer].blank?
|
|
258
|
-
end
|
|
259
|
-
|
|
260
|
-
def add_reference(post, identification)
|
|
261
|
-
post[:transaction] = identification
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
def add_creditcard_or_reference(post, credit_card_or_reference, options)
|
|
265
|
-
if credit_card_or_reference.is_a?(String)
|
|
266
|
-
add_reference(post, credit_card_or_reference)
|
|
15
|
+
version = options[:login].to_i < 10000000 ? 10 : 7
|
|
16
|
+
if version <= 7
|
|
17
|
+
QuickpayV4to7Gateway.new(options)
|
|
267
18
|
else
|
|
268
|
-
|
|
269
|
-
end
|
|
270
|
-
end
|
|
271
|
-
|
|
272
|
-
def add_autocapture(post, autocapture)
|
|
273
|
-
post[:autocapture] = autocapture ? 1 : 0
|
|
274
|
-
end
|
|
275
|
-
|
|
276
|
-
def recurring_or_authorize(credit_card_or_reference)
|
|
277
|
-
credit_card_or_reference.is_a?(String) ? :recurring : :authorize
|
|
278
|
-
end
|
|
279
|
-
|
|
280
|
-
def add_description(post, options)
|
|
281
|
-
post[:description] = options[:description]
|
|
282
|
-
end
|
|
283
|
-
|
|
284
|
-
def add_testmode(post)
|
|
285
|
-
return if post[:transaction].present?
|
|
286
|
-
post[:testmode] = test? ? '1' : '0'
|
|
287
|
-
end
|
|
288
|
-
|
|
289
|
-
def add_fraud_parameters(post, options)
|
|
290
|
-
if @protocol >= 4
|
|
291
|
-
post[:fraud_remote_addr] = options[:fraud_remote_addr] if options[:fraud_remote_addr]
|
|
292
|
-
post[:fraud_http_accept] = options[:fraud_http_accept] if options[:fraud_http_accept]
|
|
293
|
-
post[:fraud_http_accept_language] = options[:fraud_http_accept_language] if options[:fraud_http_accept_language]
|
|
294
|
-
post[:fraud_http_accept_encoding] = options[:fraud_http_accept_encoding] if options[:fraud_http_accept_encoding]
|
|
295
|
-
post[:fraud_http_accept_charset] = options[:fraud_http_accept_charset] if options[:fraud_http_accept_charset]
|
|
296
|
-
post[:fraud_http_referer] = options[:fraud_http_referer] if options[:fraud_http_referer]
|
|
297
|
-
post[:fraud_http_user_agent] = options[:fraud_http_user_agent] if options[:fraud_http_user_agent]
|
|
19
|
+
QuickpayV10Gateway.new(options)
|
|
298
20
|
end
|
|
299
21
|
end
|
|
300
22
|
|
|
301
|
-
def commit(action, params)
|
|
302
|
-
response = parse(ssl_post(self.live_url, post_data(action, params)))
|
|
303
|
-
|
|
304
|
-
Response.new(successful?(response), message_from(response), response,
|
|
305
|
-
:test => test?,
|
|
306
|
-
:authorization => response[:transaction]
|
|
307
|
-
)
|
|
308
|
-
end
|
|
309
|
-
|
|
310
|
-
def successful?(response)
|
|
311
|
-
response[:qpstat] == APPROVED
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
def parse(data)
|
|
315
|
-
response = {}
|
|
316
|
-
|
|
317
|
-
doc = REXML::Document.new(data)
|
|
318
|
-
|
|
319
|
-
doc.root.elements.each do |element|
|
|
320
|
-
response[element.name.to_sym] = element.text
|
|
321
|
-
end
|
|
322
|
-
|
|
323
|
-
response
|
|
324
|
-
end
|
|
325
|
-
|
|
326
|
-
def message_from(response)
|
|
327
|
-
response[:qpstatmsg].to_s
|
|
328
|
-
end
|
|
329
|
-
|
|
330
|
-
def post_data(action, params = {})
|
|
331
|
-
params[:protocol] = @protocol
|
|
332
|
-
params[:msgtype] = action.to_s
|
|
333
|
-
params[:merchant] = @options[:login]
|
|
334
|
-
params[:apikey] = @options[:apikey] if @options[:apikey]
|
|
335
|
-
params[:md5check] = generate_check_hash(action, params)
|
|
336
|
-
|
|
337
|
-
params.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join("&")
|
|
338
|
-
end
|
|
339
|
-
|
|
340
|
-
def generate_check_hash(action, params)
|
|
341
|
-
string = MD5_CHECK_FIELDS[@protocol][action].collect do |key|
|
|
342
|
-
params[key.to_sym]
|
|
343
|
-
end.join('')
|
|
344
|
-
|
|
345
|
-
# Add the md5checkword
|
|
346
|
-
string << @options[:password].to_s
|
|
347
|
-
|
|
348
|
-
Digest::MD5.hexdigest(string)
|
|
349
|
-
end
|
|
350
|
-
|
|
351
|
-
def expdate(credit_card)
|
|
352
|
-
year = format(credit_card.year, :two_digits)
|
|
353
|
-
month = format(credit_card.month, :two_digits)
|
|
354
|
-
|
|
355
|
-
"#{year}#{month}"
|
|
356
|
-
end
|
|
357
|
-
|
|
358
|
-
# Limited to 20 digits max
|
|
359
|
-
def format_order_number(number)
|
|
360
|
-
number.to_s.gsub(/[^\w_]/, '').rjust(4, "0")[0...20]
|
|
361
|
-
end
|
|
362
23
|
end
|
|
363
24
|
end
|
|
364
25
|
end
|
|
365
|
-
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
class QvalentGateway < Gateway
|
|
4
|
+
self.display_name = 'Qvalent'
|
|
5
|
+
self.homepage_url = 'https://www.qvalent.com/'
|
|
6
|
+
|
|
7
|
+
self.test_url = 'https://ccapi.client.support.qvalent.com/post/CreditCardAPIReceiver'
|
|
8
|
+
self.live_url = 'https://ccapi.client.qvalent.com/post/CreditCardAPIReceiver'
|
|
9
|
+
|
|
10
|
+
self.supported_countries = ['AU']
|
|
11
|
+
self.default_currency = 'AUD'
|
|
12
|
+
self.money_format = :cents
|
|
13
|
+
self.supported_cardtypes = [:visa, :master, :american_express, :discover, :jcb, :diners]
|
|
14
|
+
|
|
15
|
+
def initialize(options={})
|
|
16
|
+
requires!(options, :username, :password, :merchant, :pem, :pem_password)
|
|
17
|
+
super
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def purchase(amount, payment_method, options={})
|
|
21
|
+
post = {}
|
|
22
|
+
add_invoice(post, amount, options)
|
|
23
|
+
add_order_number(post, options)
|
|
24
|
+
add_payment_method(post, payment_method)
|
|
25
|
+
add_verification_value(post, payment_method)
|
|
26
|
+
add_customer_data(post, options)
|
|
27
|
+
add_soft_descriptors(post, options)
|
|
28
|
+
|
|
29
|
+
commit('capture', post)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def authorize(amount, payment_method, options={})
|
|
33
|
+
post = {}
|
|
34
|
+
add_invoice(post, amount, options)
|
|
35
|
+
add_order_number(post, options)
|
|
36
|
+
add_payment_method(post, payment_method)
|
|
37
|
+
add_verification_value(post, payment_method)
|
|
38
|
+
add_customer_data(post, options)
|
|
39
|
+
add_soft_descriptors(post, options)
|
|
40
|
+
|
|
41
|
+
commit('preauth', post)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def capture(amount, authorization, options={})
|
|
45
|
+
post = {}
|
|
46
|
+
add_invoice(post, amount, options)
|
|
47
|
+
add_reference(post, authorization, options)
|
|
48
|
+
add_customer_data(post, options)
|
|
49
|
+
add_soft_descriptors(post, options)
|
|
50
|
+
|
|
51
|
+
commit('captureWithoutAuth', post)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def refund(amount, authorization, options={})
|
|
55
|
+
post = {}
|
|
56
|
+
add_invoice(post, amount, options)
|
|
57
|
+
add_reference(post, authorization, options)
|
|
58
|
+
add_customer_data(post, options)
|
|
59
|
+
add_soft_descriptors(post, options)
|
|
60
|
+
|
|
61
|
+
commit('refund', post)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Credit requires the merchant account to be enabled for "Adhoc Refunds"
|
|
65
|
+
def credit(amount, payment_method, options={})
|
|
66
|
+
post = {}
|
|
67
|
+
add_invoice(post, amount, options)
|
|
68
|
+
add_order_number(post, options)
|
|
69
|
+
add_payment_method(post, payment_method)
|
|
70
|
+
add_customer_data(post, options)
|
|
71
|
+
add_soft_descriptors(post, options)
|
|
72
|
+
|
|
73
|
+
commit('refund', post)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def void(authorization, options={})
|
|
77
|
+
post = {}
|
|
78
|
+
add_reference(post, authorization, options)
|
|
79
|
+
add_customer_data(post, options)
|
|
80
|
+
add_soft_descriptors(post, options)
|
|
81
|
+
|
|
82
|
+
commit('reversal', post)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def store(payment_method, options = {})
|
|
86
|
+
post = {}
|
|
87
|
+
add_payment_method(post, payment_method)
|
|
88
|
+
add_card_reference(post)
|
|
89
|
+
|
|
90
|
+
commit('registerAccount', post)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def supports_scrubbing?
|
|
94
|
+
true
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def scrub(transcript)
|
|
98
|
+
transcript.
|
|
99
|
+
gsub(%r((&?customer.password=)[^&]*), '\1[FILTERED]').
|
|
100
|
+
gsub(%r((&?card.PAN=)[^&]*), '\1[FILTERED]').
|
|
101
|
+
gsub(%r((&?card.CVN=)[^&]*), '\1[FILTERED]')
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
private
|
|
105
|
+
|
|
106
|
+
CURRENCY_CODES = Hash.new { |h, k| raise ArgumentError.new("Unsupported currency: #{k}") }
|
|
107
|
+
CURRENCY_CODES['AUD'] = 'AUD'
|
|
108
|
+
CURRENCY_CODES['INR'] = 'INR'
|
|
109
|
+
|
|
110
|
+
def add_soft_descriptors(post, options)
|
|
111
|
+
post['customer.merchantName'] = options[:customer_merchant_name] if options[:customer_merchant_name]
|
|
112
|
+
post['customer.merchantStreetAddress'] = options[:customer_merchant_street_address] if options[:customer_merchant_street_address]
|
|
113
|
+
post['customer.merchantLocation'] = options[:customer_merchant_location] if options[:customer_merchant_location]
|
|
114
|
+
post['customer.merchantState'] = options[:customer_merchant_state] if options[:customer_merchant_state]
|
|
115
|
+
post['customer.merchantCountry'] = options[:customer_merchant_country] if options[:customer_merchant_country]
|
|
116
|
+
post['customer.merchantPostCode'] = options[:customer_merchant_post_code] if options[:customer_merchant_post_code]
|
|
117
|
+
post['customer.subMerchantId'] = options[:customer_sub_merchant_id] if options[:customer_sub_merchant_id]
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def add_invoice(post, money, options)
|
|
121
|
+
post['order.amount'] = amount(money)
|
|
122
|
+
post['card.currency'] = CURRENCY_CODES[options[:currency] || currency(money)]
|
|
123
|
+
post['order.ECI'] = options[:eci] || 'SSL'
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def add_payment_method(post, payment_method)
|
|
127
|
+
post['card.cardHolderName'] = payment_method.name
|
|
128
|
+
post['card.PAN'] = payment_method.number
|
|
129
|
+
post['card.expiryYear'] = format(payment_method.year, :two_digits)
|
|
130
|
+
post['card.expiryMonth'] = format(payment_method.month, :two_digits)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def add_verification_value(post, payment_method)
|
|
134
|
+
post['card.CVN'] = payment_method.verification_value
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def add_card_reference(post)
|
|
138
|
+
post['customer.customerReferenceNumber'] = options[:order_id]
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def add_reference(post, authorization, options)
|
|
142
|
+
post['customer.originalOrderNumber'] = authorization
|
|
143
|
+
add_order_number(post, options)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def add_order_number(post, options)
|
|
147
|
+
post['customer.orderNumber'] = options[:order_id] || SecureRandom.uuid
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def add_customer_data(post, options)
|
|
151
|
+
post['order.ipAddress'] = options[:ip] || '127.0.0.1'
|
|
152
|
+
post['order.xid'] = options[:xid] if options[:xid]
|
|
153
|
+
post['order.cavv'] = options[:cavv] if options[:cavv]
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def commit(action, post)
|
|
157
|
+
post['customer.username'] = @options[:username]
|
|
158
|
+
post['customer.password'] = @options[:password]
|
|
159
|
+
post['customer.merchant'] = @options[:merchant]
|
|
160
|
+
post['order.type'] = action
|
|
161
|
+
|
|
162
|
+
data = build_request(post)
|
|
163
|
+
raw = parse(ssl_post(url(action), data, headers))
|
|
164
|
+
|
|
165
|
+
succeeded = success_from(raw['response.responseCode'])
|
|
166
|
+
Response.new(
|
|
167
|
+
succeeded,
|
|
168
|
+
message_from(succeeded, raw),
|
|
169
|
+
raw,
|
|
170
|
+
authorization: raw['response.orderNumber'] || raw['response.customerReferenceNumber'],
|
|
171
|
+
error_code: error_code_from(succeeded, raw),
|
|
172
|
+
test: test?
|
|
173
|
+
)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def headers
|
|
177
|
+
{
|
|
178
|
+
'Content-Type' => 'application/x-www-form-urlencoded'
|
|
179
|
+
}
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def build_request(post)
|
|
183
|
+
post.to_query + '&message.end'
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def url(action)
|
|
187
|
+
(test? ? test_url : live_url)
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def parse(body)
|
|
191
|
+
result = {}
|
|
192
|
+
body.to_s.each_line do |pair|
|
|
193
|
+
result[$1] = $2 if pair.strip =~ /\A([^=]+)=(.+)\Z/im
|
|
194
|
+
end
|
|
195
|
+
result
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def parse_element(response, node)
|
|
199
|
+
if node.has_elements?
|
|
200
|
+
node.elements.each { |element| parse_element(response, element) }
|
|
201
|
+
else
|
|
202
|
+
response[node.name.underscore.to_sym] = node.text
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
SUCCESS_CODES = %w(00 08 10 11 16 QS QZ)
|
|
207
|
+
|
|
208
|
+
def success_from(response)
|
|
209
|
+
SUCCESS_CODES.include?(response)
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def message_from(succeeded, response)
|
|
213
|
+
if succeeded
|
|
214
|
+
'Succeeded'
|
|
215
|
+
else
|
|
216
|
+
response['response.text'] || 'Unable to read error message'
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
STANDARD_ERROR_CODE_MAPPING = {
|
|
221
|
+
'14' => STANDARD_ERROR_CODE[:invalid_number],
|
|
222
|
+
'QQ' => STANDARD_ERROR_CODE[:invalid_cvc],
|
|
223
|
+
'33' => STANDARD_ERROR_CODE[:expired_card],
|
|
224
|
+
'NT' => STANDARD_ERROR_CODE[:incorrect_address],
|
|
225
|
+
'12' => STANDARD_ERROR_CODE[:card_declined],
|
|
226
|
+
'06' => STANDARD_ERROR_CODE[:processing_error],
|
|
227
|
+
'01' => STANDARD_ERROR_CODE[:call_issuer],
|
|
228
|
+
'04' => STANDARD_ERROR_CODE[:pickup_card],
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
def error_code_from(succeeded, response)
|
|
232
|
+
succeeded ? nil : STANDARD_ERROR_CODE_MAPPING[response['response.responseCode']]
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
end
|
|
236
|
+
end
|