activemerchant 1.114.0 → 1.120.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +183 -0
- data/README.md +4 -2
- data/lib/active_merchant.rb +1 -1
- data/lib/active_merchant/billing/avs_result.rb +1 -1
- data/lib/active_merchant/billing/check.rb +10 -0
- data/lib/active_merchant/billing/compatibility.rb +3 -3
- data/lib/active_merchant/billing/credit_card.rb +3 -0
- data/lib/active_merchant/billing/credit_card_methods.rb +80 -15
- data/lib/active_merchant/billing/gateways/adyen.rb +44 -20
- data/lib/active_merchant/billing/gateways/allied_wallet.rb +7 -7
- data/lib/active_merchant/billing/gateways/authorize_net.rb +50 -12
- data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +3 -4
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +5 -1
- data/lib/active_merchant/billing/gateways/axcessms.rb +8 -9
- data/lib/active_merchant/billing/gateways/balanced.rb +4 -3
- data/lib/active_merchant/billing/gateways/bambora_apac.rb +7 -7
- data/lib/active_merchant/billing/gateways/bank_frick.rb +7 -7
- data/lib/active_merchant/billing/gateways/banwire.rb +1 -1
- data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +6 -4
- data/lib/active_merchant/billing/gateways/beanstream.rb +3 -3
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +4 -5
- data/lib/active_merchant/billing/gateways/blue_pay.rb +2 -3
- data/lib/active_merchant/billing/gateways/blue_snap.rb +22 -18
- data/lib/active_merchant/billing/gateways/bogus.rb +19 -19
- data/lib/active_merchant/billing/gateways/borgun.rb +11 -11
- data/lib/active_merchant/billing/gateways/bpoint.rb +8 -8
- data/lib/active_merchant/billing/gateways/braintree.rb +1 -1
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +60 -17
- data/lib/active_merchant/billing/gateways/bridge_pay.rb +7 -7
- data/lib/active_merchant/billing/gateways/cams.rb +8 -8
- data/lib/active_merchant/billing/gateways/card_connect.rb +1 -1
- data/lib/active_merchant/billing/gateways/card_save.rb +1 -1
- data/lib/active_merchant/billing/gateways/card_stream.rb +2 -2
- data/lib/active_merchant/billing/gateways/cardknox.rb +7 -7
- data/lib/active_merchant/billing/gateways/cardprocess.rb +1 -1
- data/lib/active_merchant/billing/gateways/cashnet.rb +7 -2
- data/lib/active_merchant/billing/gateways/cecabank.rb +5 -5
- data/lib/active_merchant/billing/gateways/cenpos.rb +10 -10
- data/lib/active_merchant/billing/gateways/checkout.rb +2 -2
- data/lib/active_merchant/billing/gateways/checkout_v2.rb +38 -20
- data/lib/active_merchant/billing/gateways/clearhaus.rb +7 -7
- data/lib/active_merchant/billing/gateways/commercegate.rb +1 -1
- data/lib/active_merchant/billing/gateways/conekta.rb +2 -2
- data/lib/active_merchant/billing/gateways/creditcall.rb +10 -10
- data/lib/active_merchant/billing/gateways/credorax.rb +39 -23
- data/lib/active_merchant/billing/gateways/ct_payment.rb +10 -10
- data/lib/active_merchant/billing/gateways/culqi.rb +9 -9
- data/lib/active_merchant/billing/gateways/cyber_source.rb +81 -39
- data/lib/active_merchant/billing/gateways/d_local.rb +12 -12
- data/lib/active_merchant/billing/gateways/data_cash.rb +2 -3
- data/lib/active_merchant/billing/gateways/decidir.rb +31 -10
- data/lib/active_merchant/billing/gateways/dibs.rb +8 -8
- data/lib/active_merchant/billing/gateways/digitzs.rb +5 -5
- data/lib/active_merchant/billing/gateways/ebanx.rb +9 -9
- data/lib/active_merchant/billing/gateways/efsnet.rb +2 -3
- data/lib/active_merchant/billing/gateways/elavon.rb +296 -225
- data/lib/active_merchant/billing/gateways/element.rb +8 -8
- data/lib/active_merchant/billing/gateways/evo_ca.rb +5 -6
- data/lib/active_merchant/billing/gateways/eway.rb +3 -4
- data/lib/active_merchant/billing/gateways/eway_managed.rb +6 -7
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +19 -6
- data/lib/active_merchant/billing/gateways/exact.rb +8 -9
- data/lib/active_merchant/billing/gateways/ezic.rb +7 -7
- data/lib/active_merchant/billing/gateways/fat_zebra.rb +4 -4
- data/lib/active_merchant/billing/gateways/federated_canada.rb +2 -3
- data/lib/active_merchant/billing/gateways/first_giving.rb +1 -1
- data/lib/active_merchant/billing/gateways/first_pay.rb +6 -6
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +7 -7
- data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +21 -10
- data/lib/active_merchant/billing/gateways/flo2cash.rb +8 -8
- data/lib/active_merchant/billing/gateways/flo2cash_simple.rb +1 -1
- data/lib/active_merchant/billing/gateways/forte.rb +26 -8
- data/lib/active_merchant/billing/gateways/global_collect.rb +35 -16
- data/lib/active_merchant/billing/gateways/global_transport.rb +7 -7
- data/lib/active_merchant/billing/gateways/hdfc.rb +9 -9
- data/lib/active_merchant/billing/gateways/hps.rb +72 -9
- data/lib/active_merchant/billing/gateways/iats_payments.rb +9 -4
- data/lib/active_merchant/billing/gateways/in_context_paypal_express.rb +1 -1
- data/lib/active_merchant/billing/gateways/inspire.rb +3 -4
- data/lib/active_merchant/billing/gateways/instapay.rb +1 -2
- data/lib/active_merchant/billing/gateways/ipp.rb +5 -5
- data/lib/active_merchant/billing/gateways/iridium.rb +14 -15
- data/lib/active_merchant/billing/gateways/iveri.rb +7 -7
- data/lib/active_merchant/billing/gateways/ixopay.rb +7 -7
- data/lib/active_merchant/billing/gateways/jetpay.rb +1 -2
- data/lib/active_merchant/billing/gateways/jetpay_v2.rb +4 -5
- data/lib/active_merchant/billing/gateways/kushki.rb +6 -6
- data/lib/active_merchant/billing/gateways/latitude19.rb +14 -14
- data/lib/active_merchant/billing/gateways/linkpoint.rb +4 -5
- data/lib/active_merchant/billing/gateways/litle.rb +32 -16
- data/lib/active_merchant/billing/gateways/mastercard.rb +10 -10
- data/lib/active_merchant/billing/gateways/mercado_pago.rb +9 -9
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +1 -2
- data/lib/active_merchant/billing/gateways/merchant_one.rb +1 -1
- data/lib/active_merchant/billing/gateways/merchant_partners.rb +10 -10
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +5 -7
- data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +4 -6
- data/lib/active_merchant/billing/gateways/mercury.rb +4 -4
- data/lib/active_merchant/billing/gateways/metrics_global.rb +4 -5
- data/lib/active_merchant/billing/gateways/micropayment.rb +8 -8
- data/lib/active_merchant/billing/gateways/migs.rb +3 -4
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +2 -4
- data/lib/active_merchant/billing/gateways/monei.rb +7 -7
- data/lib/active_merchant/billing/gateways/moneris.rb +4 -3
- data/lib/active_merchant/billing/gateways/money_movers.rb +2 -3
- data/lib/active_merchant/billing/gateways/mundipagg.rb +37 -10
- data/lib/active_merchant/billing/gateways/nab_transact.rb +2 -4
- data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +7 -7
- data/lib/active_merchant/billing/gateways/net_registry.rb +1 -2
- data/lib/active_merchant/billing/gateways/netaxept.rb +6 -6
- data/lib/active_merchant/billing/gateways/netbanx.rb +45 -10
- data/lib/active_merchant/billing/gateways/netbilling.rb +4 -5
- data/lib/active_merchant/billing/gateways/network_merchants.rb +2 -3
- data/lib/active_merchant/billing/gateways/nmi.rb +21 -7
- data/lib/active_merchant/billing/gateways/ogone.rb +3 -3
- data/lib/active_merchant/billing/gateways/omise.rb +13 -13
- data/lib/active_merchant/billing/gateways/openpay.rb +3 -4
- data/lib/active_merchant/billing/gateways/opp.rb +9 -9
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +2 -3
- data/lib/active_merchant/billing/gateways/orbital.rb +225 -105
- data/lib/active_merchant/billing/gateways/pac_net_raven.rb +3 -4
- data/lib/active_merchant/billing/gateways/pagarme.rb +8 -8
- data/lib/active_merchant/billing/gateways/pago_facil.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_conex.rb +8 -8
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +6 -7
- data/lib/active_merchant/billing/gateways/pay_hub.rb +7 -8
- data/lib/active_merchant/billing/gateways/pay_junction.rb +2 -3
- data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +9 -9
- data/lib/active_merchant/billing/gateways/pay_secure.rb +2 -3
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +23 -1
- data/lib/active_merchant/billing/gateways/payeezy.rb +62 -20
- data/lib/active_merchant/billing/gateways/payex.rb +6 -7
- data/lib/active_merchant/billing/gateways/payflow.rb +1 -1
- data/lib/active_merchant/billing/gateways/payment_express.rb +11 -7
- data/lib/active_merchant/billing/gateways/paymentez.rb +26 -6
- data/lib/active_merchant/billing/gateways/paymill.rb +7 -7
- data/lib/active_merchant/billing/gateways/paypal.rb +10 -2
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +1 -0
- data/lib/active_merchant/billing/gateways/paypal_express.rb +1 -1
- data/lib/active_merchant/billing/gateways/paypal_express_common.rb +1 -1
- data/lib/active_merchant/billing/gateways/payscout.rb +1 -2
- data/lib/active_merchant/billing/gateways/paystation.rb +3 -4
- data/lib/active_merchant/billing/gateways/payu_in.rb +3 -3
- data/lib/active_merchant/billing/gateways/payu_latam.rb +17 -10
- data/lib/active_merchant/billing/gateways/payway.rb +8 -9
- data/lib/active_merchant/billing/gateways/payway_dot_com.rb +253 -0
- data/lib/active_merchant/billing/gateways/pin.rb +11 -0
- data/lib/active_merchant/billing/gateways/plugnpay.rb +1 -2
- data/lib/active_merchant/billing/gateways/pro_pay.rb +8 -8
- data/lib/active_merchant/billing/gateways/psigate.rb +2 -3
- data/lib/active_merchant/billing/gateways/psl_card.rb +1 -2
- data/lib/active_merchant/billing/gateways/qbms.rb +1 -2
- data/lib/active_merchant/billing/gateways/quantum.rb +1 -2
- data/lib/active_merchant/billing/gateways/quickbooks.rb +1 -1
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +3 -4
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +1 -2
- data/lib/active_merchant/billing/gateways/qvalent.rb +31 -17
- data/lib/active_merchant/billing/gateways/realex.rb +1 -1
- data/lib/active_merchant/billing/gateways/redsys.rb +105 -9
- data/lib/active_merchant/billing/gateways/s5.rb +7 -7
- data/lib/active_merchant/billing/gateways/safe_charge.rb +51 -18
- data/lib/active_merchant/billing/gateways/sage.rb +3 -5
- data/lib/active_merchant/billing/gateways/sage_pay.rb +2 -3
- data/lib/active_merchant/billing/gateways/sallie_mae.rb +1 -2
- data/lib/active_merchant/billing/gateways/secure_net.rb +1 -2
- data/lib/active_merchant/billing/gateways/secure_pay.rb +3 -4
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +2 -4
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +1 -2
- data/lib/active_merchant/billing/gateways/securion_pay.rb +5 -6
- data/lib/active_merchant/billing/gateways/skip_jack.rb +2 -3
- data/lib/active_merchant/billing/gateways/smart_ps.rb +5 -6
- data/lib/active_merchant/billing/gateways/so_easy_pay.rb +7 -7
- data/lib/active_merchant/billing/gateways/spreedly_core.rb +6 -6
- data/lib/active_merchant/billing/gateways/stripe.rb +18 -18
- data/lib/active_merchant/billing/gateways/stripe_payment_intents.rb +91 -25
- data/lib/active_merchant/billing/gateways/swipe_checkout.rb +3 -4
- data/lib/active_merchant/billing/gateways/telr.rb +8 -8
- data/lib/active_merchant/billing/gateways/trans_first.rb +2 -2
- data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +12 -12
- data/lib/active_merchant/billing/gateways/transact_pro.rb +9 -9
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +1 -2
- data/lib/active_merchant/billing/gateways/usa_epay.rb +1 -1
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +32 -32
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +3 -4
- data/lib/active_merchant/billing/gateways/vanco.rb +3 -3
- data/lib/active_merchant/billing/gateways/verifi.rb +1 -2
- data/lib/active_merchant/billing/gateways/viaklix.rb +1 -2
- data/lib/active_merchant/billing/gateways/visanet_peru.rb +10 -10
- data/lib/active_merchant/billing/gateways/vpos.rb +172 -0
- data/lib/active_merchant/billing/gateways/webpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/wepay.rb +3 -2
- data/lib/active_merchant/billing/gateways/wirecard.rb +1 -2
- data/lib/active_merchant/billing/gateways/worldpay.rb +43 -22
- data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +14 -16
- data/lib/active_merchant/billing/gateways/worldpay_us.rb +7 -7
- data/lib/active_merchant/billing/response.rb +3 -2
- data/lib/active_merchant/country.rb +1 -1
- data/lib/active_merchant/network_connection_retries.rb +2 -2
- data/lib/active_merchant/post_data.rb +1 -1
- data/lib/active_merchant/posts_data.rb +1 -1
- data/lib/active_merchant/version.rb +1 -1
- data/lib/certs/cacert.pem +1582 -2431
- data/lib/support/ssl_verify.rb +2 -2
- data/lib/support/ssl_version.rb +2 -2
- metadata +5 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 649ffe0485eeee7fba63fb57ee6f2ccee8ae113d8ad7ec42fb26d7895f5e8c03
|
|
4
|
+
data.tar.gz: 24dcf747601a2be45ca1938919e0626428be6ea19a22834666166772c8773035
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 72e799731ef457d0f5c9d9995591c692e268265562465ba91023e87dad7fde4b25db3754920a51e24180d052d59ce7ecc33a7b2f2fc80b1e127984c5550122f9
|
|
7
|
+
data.tar.gz: 6dcc6c4f22b351497233ebd2ef9fc6354113921c75a4279909050e73e509570d6d97b698c9aa98199b7996019a53fb4dbb2daaa8ba1f85732d0af748033022ff
|
data/CHANGELOG
CHANGED
|
@@ -2,6 +2,189 @@
|
|
|
2
2
|
|
|
3
3
|
== HEAD
|
|
4
4
|
|
|
5
|
+
|
|
6
|
+
== Version 1.120.0 (May 28th, 2021)
|
|
7
|
+
* Braintree: Bump required braintree gem version to 3.0.1
|
|
8
|
+
* Stripe PI: ensure `setup_future_sage` and `off_session` work when using SetupIntents.
|
|
9
|
+
* Orbital: Update commit to accept retry_logic in params [jessiagee] #3890
|
|
10
|
+
* Orbital: Update remote 3DS tests [jessiagee] #3892
|
|
11
|
+
* Mercado Pago: support Creditel card type [therufs] #3893
|
|
12
|
+
* Payeezy: Update error mapping [meagabeth] #3896
|
|
13
|
+
* HPS: Add support for stored_credential [cdmackeyfree] #3894
|
|
14
|
+
* Orbital: Ensure payment_detail sends for ECP [jessiagee] #3899
|
|
15
|
+
* Payeezy: Update `error_code_from` method [meagabeth] #3900
|
|
16
|
+
* Worldpay: Add support for `statementNarrative` field [meagabeth] #3901
|
|
17
|
+
* Mercado Pago: Give ability to pass capture option in authorize txn field [naashton] #3897
|
|
18
|
+
* Orbital: Ensure correct fields sent in refund [jessiagee] #3903
|
|
19
|
+
* WorldPay: remove some defaults in billing address [carrigan] #3902
|
|
20
|
+
* Adyen: Support for General Credit [naashton] #3904
|
|
21
|
+
* Worldpay: reintroduce address1 and city defaults [carrigan] #3905
|
|
22
|
+
* Stripe: ensure potentially nested data is scrubbed #3907
|
|
23
|
+
* Stripe PI: Send Validate on Payment Method Attach [tatsianaclifton] #3909
|
|
24
|
+
* Adyen: Update handling of authorization returned from gateway [meagabeth] #3910
|
|
25
|
+
* Update gateway templates for Rubocop compliance [therufs] #3912 #3895
|
|
26
|
+
* Orbital: Send AVSname for all eCheck transactions [jessiagee] #3911
|
|
27
|
+
* Litle: update support of customerId field [cdmackeyfree] #3913
|
|
28
|
+
* Payment Express: fix signature for `verify` [therufs] #3914
|
|
29
|
+
* Forte: Send xdata fields [dsmcclain] #3915
|
|
30
|
+
* PaywayDotCom: Add New Gateway [DanAtPayway] #3898
|
|
31
|
+
* Orbital: Remove unnecessary requirements [jessiagee] #3917
|
|
32
|
+
* SafeCharge (Nuvei): Add network tokenization support [DStoyanoff] #3847
|
|
33
|
+
* Stripe PI: Enhance testing of SetupIntents API #3908
|
|
34
|
+
* SafeCharge (Nuvei): Fix NT related bug [jimilpatel24] #3921
|
|
35
|
+
* Worldpay: Only override cardholdername for 3ds tests [curiousepic] #3918
|
|
36
|
+
* Orbital: Add support for general credit [meagabeth] #3922
|
|
37
|
+
* Banco Sabadell: Ensure sca_exemption field is used #3923
|
|
38
|
+
* Redsys: Refactor XML character escape logic #3925
|
|
39
|
+
* HPS: Strip zip codes of non-alphanumeric characters [dsmcclain] #3926
|
|
40
|
+
* Orbital: $0 PreNote using authorize for eCheck force_capture [jessiagee] #3927
|
|
41
|
+
* Worldpay: synchronous response changes [naashton] #3928
|
|
42
|
+
* PaywayDotCom: Add more thorough scrubbing [tatsianaclifton] #3929
|
|
43
|
+
* Remove CONTRIBUTING.md and update README.md to reflect new repository wiki [dsmcclain] #3930
|
|
44
|
+
* Qvalent: Add customer_reference_number [fredo-] #3931
|
|
45
|
+
* Orbital: Add 'ND' ECPActionCode to $0 Prenote Check [jessiagee] #3935
|
|
46
|
+
* Checkout: Add support for stored_credential [meagabeth] #3934
|
|
47
|
+
* Credorax: Add support for 3ds_reqchallengeind [dsmcclain] #3936
|
|
48
|
+
* Adyen: cancelOrRefund endpoint when passed as option [naashton] #3937
|
|
49
|
+
* Qvalent: Add customer reference number FIX [fredo-] #3939
|
|
50
|
+
* Orbital: Pass line_items in capture [jessiagee] #3941
|
|
51
|
+
* BraintreeBlue: Add support for $0 auth verification [meagabeth] #3944
|
|
52
|
+
* JCB: Add additional BIN ranges [dsmcclain] #3946
|
|
53
|
+
* vPOS: Support new gateway type [therufs] #3906
|
|
54
|
+
* Braintree: Add support for AVS and CVV results in $0 credit card verification transactions [meagabeth] #3951
|
|
55
|
+
* Braintree: Return cvv_code and avs_code in response [meagabeth] #3952
|
|
56
|
+
* vPOS: Stringify values [therufs] #3954
|
|
57
|
+
* Payeezy: Send level2 fields [dsmcclain] #3953
|
|
58
|
+
* Credorax: adjust logic for sending 3ds shipping address fields [dsmcclain] #3959
|
|
59
|
+
* Orbital: Ensure ECP always sends AVSName [jessiagee] #3963
|
|
60
|
+
* Orbital: Add middle name to EWSMiddleName for ECP [jessiagee] #3962
|
|
61
|
+
* Support Canadian Bank Accounts [naashton] #3964
|
|
62
|
+
* Windcave/Payment Express: Add support for AvsAction and EnableAVSData fields [meagabeth] #3967
|
|
63
|
+
* CyberSource: Update XML tag for merchantDefinedData [meagabeth] #3969
|
|
64
|
+
* Elavon: Send ssl_vendor_id field [dsmcclain] #3972
|
|
65
|
+
* Credorax: Add support for `echo` field [meagabeth] #3973
|
|
66
|
+
* Worldpay: support cancelOrRefund via options [therufs] #3975
|
|
67
|
+
* Payeezy: support general credit [cdmackeyfree] #3977
|
|
68
|
+
* Ripley and Hipercard: Add BIN ranges [naashton] #3978
|
|
69
|
+
* Adyen: Default card holder name for credit cards [shasum] #3980
|
|
70
|
+
* PaywayDotCom: make `source_id` a required field [dsmcclain] # 3981
|
|
71
|
+
* Qvalent: remove `pem_password` from required credentials [dsmcclain] #3982
|
|
72
|
+
* Authorize.net: Fix stored credentials [tatsianaclifton] #3971
|
|
73
|
+
* CyberSource: Add support for multiple new fields [dsmcclain] #3984
|
|
74
|
+
* CASHNet: Update gateway adapter [dsmcclain] #3986
|
|
75
|
+
* Elavon: Send `ssl_vendor_id` field via options on gateway initialization [dsmcclain] #3989
|
|
76
|
+
|
|
77
|
+
== Version 1.119.0 (February 9th, 2021)
|
|
78
|
+
* Payment Express: support verify/validate [therufs] #3874
|
|
79
|
+
* GlobalCollect: Truncate address fields [meagabeth] #3878
|
|
80
|
+
* Litle: Truncate address fields [meagabeth] #3877
|
|
81
|
+
* Netbanx: Add-customer-information(name,email,IP)-to-a-transaction [rockyhakjoong] #3754
|
|
82
|
+
* Netbanx: Adjust the avs and cvv return code in shopify [rockyhakjoong] #3833
|
|
83
|
+
* Decidir: Improve error mapping [meagabeth] #3875
|
|
84
|
+
* Worldpay: support `skip_capture` [therufs] #3879
|
|
85
|
+
* Redsys: Add new response code text [britth] #3880
|
|
86
|
+
* Orbital: Update ECP details to use payment source [jessiagee] #3881
|
|
87
|
+
* Alelo: Add additional BIN ranges [meagabeth] #3882
|
|
88
|
+
* HPS: Update Add support for general credit [naashton] #3885
|
|
89
|
+
* Elavon: Fix issue with encoding data sent in the request [naashton] #3865
|
|
90
|
+
* Orbital: Update ECP to use EWS verification [jessiagee] #3886
|
|
91
|
+
* Eway: Add 3ds field when do direct payment [GavinSun9527] #3860
|
|
92
|
+
* Support Creditel cardtype [therufs] #3883
|
|
93
|
+
* Elavon: Remove ampersand char from fields [naashton] #3891
|
|
94
|
+
|
|
95
|
+
== Version 1.118.0 (January 22nd, 2021)
|
|
96
|
+
* Worldpay: Add support for challengeWindowSize [carrigan] #3823
|
|
97
|
+
* Adyen: Update capitalization on subMerchantId field [cdmackeyfree] #3824
|
|
98
|
+
* Maestro and Elo: Update BIN ranges [meagabeth] #3822
|
|
99
|
+
* HPS: Truncate invoice numbers that are too long [curiousepic] #3825
|
|
100
|
+
* Pass network_transaction_id attribute in Response [therufs] #3815
|
|
101
|
+
* Elavon: support standardized stored credentials [therufs] #3816
|
|
102
|
+
* Decidir: update fraud_detection field [cdmackeyfree] #3829
|
|
103
|
+
* Paymentez: Add Olimpica cardtype [meagabeth] #3831
|
|
104
|
+
* SafeCharge: 3DS external MPI data refinements [curiousepic] #3821
|
|
105
|
+
* Credorax: Add support for 3DS Adviser [meagabeth] #3834
|
|
106
|
+
* Adyen: Support subMerchant data [mymir][therufs] #3835
|
|
107
|
+
* Decidir: add device_unique_identifier to card data [cdmackeyfree] #3839
|
|
108
|
+
* BraintreeBlue: add support for account_type field [jimilpatel24] #3840
|
|
109
|
+
* Redsys: Add support for stored_credential [meagabeth] #3844
|
|
110
|
+
* Redsys: add_payment method solution [meagabeth] #3845
|
|
111
|
+
* Stripe Payment Intents: Add support for error_on_requires_action option [tatsianaclifton] #3846
|
|
112
|
+
* Add 3DS 2.0 values to paypal [nebdil] #3285
|
|
113
|
+
* Redsys: Update Mpi Fields [tatsianaclifton] #3855
|
|
114
|
+
* Paypal: Update AuthStatus3ds MPI field [curiousepic] #3857
|
|
115
|
+
* Orbital: Update 3DS support for Mastercard [meagabeth] #3850
|
|
116
|
+
* Payeezy: Support standardized stored credentials [therufs] #3861
|
|
117
|
+
* CyberSource: Update `billing_address` override [meagabeth] #3862
|
|
118
|
+
* Paymentez: Add 3DS MPI field support [carrigan] #3856
|
|
119
|
+
* BlueSnap: Add support `fraud-session-id` field [meagabeth] #3863
|
|
120
|
+
* BlueSnap: Update handling of `transaction-fraud-info` fields [meagabeth] #3866
|
|
121
|
+
* Payeezy: Allow no stored credential transaction id [therufs] #3868
|
|
122
|
+
* Orbital: eCheck processing added [ajawadmirza] #3870
|
|
123
|
+
* FirsdataE4V27: Fixes some apple pay transaction issues [pi3r] #3872
|
|
124
|
+
|
|
125
|
+
== Version 1.117.0 (November 13th)
|
|
126
|
+
* Checkout V2: Pass attempt_n3d along with 3ds enabled [naashton] #3805
|
|
127
|
+
* GlobalCollect: Add support for Third-party 3DS2 data [molbrown] #3801
|
|
128
|
+
* Authorize.net: Pass stored credentials [therufs] #3804
|
|
129
|
+
* Authorize.net: Don't pass isFirstRecurringPayment [therufs] #3805
|
|
130
|
+
* Litle: Add support for general credit transactions [naashton] #3807
|
|
131
|
+
* Redsys: Add 3DS2 Integration Support [esmitperez] #3794
|
|
132
|
+
* Cybersource: Use firstname/lastname from address instead of the payment method [pi3r] #3798
|
|
133
|
+
* Add MPI functionality for SafeCharge gateway [daniel] #3809
|
|
134
|
+
* SafeCharge: Standardize MPI fields [curiousepic] #3809
|
|
135
|
+
* Credorax: Adds AMEX to supported cards and adds 1A error code [LinTrieu] #3792
|
|
136
|
+
* Stripe PI: Pass external 3DS auth data [curiousepic] #3811
|
|
137
|
+
* Credorax: Allow 3DS1 normalized pass-through, ease version matching [britth] #3812
|
|
138
|
+
* Redsys: Redsys: Harden 3DS v1/v2 check for External MPI [esmitperez] #3814
|
|
139
|
+
* Add card types for Stripe, Worldpay, Checkout.com [LinTrieu] #3810
|
|
140
|
+
* ActiveMerchant::Billing::Response: Include `network_transaction_id` attribute [therufs] #3815
|
|
141
|
+
|
|
142
|
+
== Version 1.116.0 (October 28th)
|
|
143
|
+
* Remove Braintree specific version dependency [pi3r] #3800
|
|
144
|
+
|
|
145
|
+
== Version 1.115.0 (October 27th)
|
|
146
|
+
* Checkout v2: $0 Auth on gateway [jessiagee] #3762
|
|
147
|
+
* Adyen: Safely add execute_threeds: false [curiousepic] #3756
|
|
148
|
+
* RuboCop: Fix Layout/SpaceAroundEqualsInParameterDefault [leila-alderman] #3720
|
|
149
|
+
* iATS: Allow email to be passed outside of the billing_address context [naashton] #3750
|
|
150
|
+
* Orbital: Don't pass xid for transactions using network tokens [britth] #3757
|
|
151
|
+
* Forte: Add service_fee_amount field [meagabeth] #3751
|
|
152
|
+
* WorldPay: Add support for idempotency_key[cdmackeyfree] #3759
|
|
153
|
+
* Orbital: Handle line_tot key as a string [naashton] #3760
|
|
154
|
+
* RuboCop: Fix Lint/UnusedMethodArgument [leila-alderman] #3721
|
|
155
|
+
* RuboCop: Fix Naming/MemoizedInstanceVariableName [leila-alderman] #3722
|
|
156
|
+
* RuboCop: Fix Style/BlockComments [leila-alderman] #3729
|
|
157
|
+
* Checkout V2: Move to single-transaction Purchases [curiousepic] #3761
|
|
158
|
+
* RuboCop: Fix Naming/ConstantName [leila-alderman] #3723
|
|
159
|
+
* Orbital: Fix schema errors [britth] #3766
|
|
160
|
+
* Checkout V2: Start testing via amount code [curiousepic] #3767
|
|
161
|
+
* CyberSource: Don't include empty `mdd_` fields [arbianchi] #3758
|
|
162
|
+
* RuboCop: Fix Naming/VariableNumber [leila-alderman] #3725
|
|
163
|
+
* Update BIN ranges for Elo cardtype [cdmackeyfree] #3769
|
|
164
|
+
* Orbital: Resolve CardIndicators issue [meagabeth] #3771
|
|
165
|
+
* Adyen: Add subMerchant fields [naashton] #3772
|
|
166
|
+
* PayPal Express: reduce param requirements [shasum] #3773
|
|
167
|
+
* PayU Latam: Support partial refunds [leila-alderman] #3774
|
|
168
|
+
* RuboCop: Fix Style/Alias [leila-alderman] #3727
|
|
169
|
+
* Stripe PI: Allow `on_behalf_of` to be passed alone #3776
|
|
170
|
+
* RuboCop: Fix Performance/RedundantMatch [leila-alderman] #3765
|
|
171
|
+
* RuboCop: Fix Layout/MultilineMethodCallBraceLayout [leila-alderman] #3763
|
|
172
|
+
* NMI: Add standardized 3DS fields [meagabeth] #3775
|
|
173
|
+
* Mundipagg: Add support for SubMerchant fields [meagabeth] #3779
|
|
174
|
+
* Stripe Payment Intents: Add request_three_d_secure option [molbrown] #3787
|
|
175
|
+
* Decidir: Add support for csmdds fields [naashton] #3786
|
|
176
|
+
* RuboCop: Fix Performance/StringReplacement [leila-alderman] #3782
|
|
177
|
+
* RuboCop: Fix Naming/HeredocDelimiterCase & Naming [leila-alderman] #3781
|
|
178
|
+
* BlueSnap: Add address fields to contact info [naashton] #3777
|
|
179
|
+
* RuboCop: Fix Layout/SpaceInsideHashLiteralBraces [leila-alderman] #3780
|
|
180
|
+
* RuboCop: Fix Style/AndOr [leila-alderman] #3783
|
|
181
|
+
* Checkout V2: Support ability to pass attempt_n3d 3ds field [naashton] #3788
|
|
182
|
+
* Elavon: Upgrade to `processxml.do` [therufs] #3784
|
|
183
|
+
* Checkout V2: Support for attempt_n3d 3DS field [naashton] #3790
|
|
184
|
+
* Elavon: Strip ampersands [therufs] #3795
|
|
185
|
+
* Paybox: Add support for 3DS 1.0 values [jcpaybox] #3335
|
|
186
|
+
* Decidir: Add additional fraud_detection options [cdmackeyfree] #3812
|
|
187
|
+
|
|
5
188
|
== Version 1.114.0
|
|
6
189
|
* BlueSnap: Add address1,address2,phone,shipping_* support #3749
|
|
7
190
|
* BlueSnap: Protect against `nil` metadata [carrigan] #3752
|
data/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Active Merchant
|
|
2
|
-
[](https://github.com/activemerchant/active_merchant/actions?query=workflow%3ACI)
|
|
3
3
|
[](https://codeclimate.com/github/activemerchant/active_merchant)
|
|
4
4
|
|
|
5
5
|
Active Merchant is an extraction from the ecommerce system [Shopify](http://www.shopify.com).
|
|
@@ -17,7 +17,7 @@ from an ever-growing set of contributors.
|
|
|
17
17
|
See [GettingStarted.md](GettingStarted.md) if you want to learn more about using Active Merchant in your
|
|
18
18
|
applications.
|
|
19
19
|
|
|
20
|
-
If you'd like to contribute to Active Merchant, please start with our [
|
|
20
|
+
If you'd like to contribute to Active Merchant, please start with our [Contribution Guide](https://github.com/activemerchant/active_merchant/wiki/Contributing).
|
|
21
21
|
|
|
22
22
|
## Installation
|
|
23
23
|
|
|
@@ -81,6 +81,8 @@ if credit_card.validate.empty?
|
|
|
81
81
|
end
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
## Contributing
|
|
85
|
+
|
|
84
86
|
For more in-depth documentation and tutorials, see [GettingStarted.md](GettingStarted.md) and the
|
|
85
87
|
[API documentation](http://www.rubydoc.info/github/activemerchant/active_merchant/).
|
|
86
88
|
|
data/lib/active_merchant.rb
CHANGED
|
@@ -50,7 +50,7 @@ require 'active_merchant/version'
|
|
|
50
50
|
require 'active_merchant/country'
|
|
51
51
|
|
|
52
52
|
module ActiveMerchant
|
|
53
|
-
def self.deprecated(message, caller=Kernel.caller[1])
|
|
53
|
+
def self.deprecated(message, caller = Kernel.caller[1])
|
|
54
54
|
warning = caller + ': ' + message
|
|
55
55
|
if respond_to?(:logger) && logger.present?
|
|
56
56
|
logger.warn(warning)
|
|
@@ -13,6 +13,14 @@ module ActiveMerchant #:nodoc:
|
|
|
13
13
|
# Used for Canadian bank accounts
|
|
14
14
|
attr_accessor :institution_number, :transit_number
|
|
15
15
|
|
|
16
|
+
# Canadian Institution Numbers
|
|
17
|
+
# Found here: https://en.wikipedia.org/wiki/Routing_number_(Canada)
|
|
18
|
+
INSTITUTION_NUMBERS = %w(
|
|
19
|
+
001 002 003 004 006 010 016 030 039 117 127 177 219 245 260 269 270 308
|
|
20
|
+
309 310 315 320 338 340 509 540 608 614 623 809 815 819 828 829 837 839
|
|
21
|
+
865 879 889 899
|
|
22
|
+
)
|
|
23
|
+
|
|
16
24
|
def name
|
|
17
25
|
@name ||= "#{first_name} #{last_name}".strip
|
|
18
26
|
end
|
|
@@ -67,6 +75,8 @@ module ActiveMerchant #:nodoc:
|
|
|
67
75
|
else
|
|
68
76
|
false
|
|
69
77
|
end
|
|
78
|
+
when 8
|
|
79
|
+
true if INSTITUTION_NUMBERS.include?(routing_number[0..2].to_s)
|
|
70
80
|
else
|
|
71
81
|
false
|
|
72
82
|
end
|
|
@@ -28,7 +28,7 @@ module ActiveMerchant
|
|
|
28
28
|
def self.humanize(lower_case_and_underscored_word)
|
|
29
29
|
result = lower_case_and_underscored_word.to_s.dup
|
|
30
30
|
result.gsub!(/_id$/, '')
|
|
31
|
-
result.
|
|
31
|
+
result.tr!('_', ' ')
|
|
32
32
|
result.gsub(/([a-z\d]*)/i, &:downcase).gsub(/^\w/) { $&.upcase }
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -56,7 +56,7 @@ module ActiveMerchant
|
|
|
56
56
|
private
|
|
57
57
|
|
|
58
58
|
def internal_errors
|
|
59
|
-
@
|
|
59
|
+
@internal_errors ||= Errors.new
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
class Errors < Hash
|
|
@@ -75,7 +75,7 @@ module ActiveMerchant
|
|
|
75
75
|
end
|
|
76
76
|
|
|
77
77
|
def empty?
|
|
78
|
-
all? { |
|
|
78
|
+
all? { |_k, v| v&.empty? }
|
|
79
79
|
end
|
|
80
80
|
|
|
81
81
|
def on(field)
|
|
@@ -24,6 +24,7 @@ module ActiveMerchant #:nodoc:
|
|
|
24
24
|
# * Naranja
|
|
25
25
|
# * UnionPay
|
|
26
26
|
# * Alia
|
|
27
|
+
# * Olimpica
|
|
27
28
|
#
|
|
28
29
|
# For testing purposes, use the 'bogus' credit card brand. This skips the vast majority of
|
|
29
30
|
# validations, allowing you to focus on your core concerns until you're ready to be more concerned
|
|
@@ -100,6 +101,8 @@ module ActiveMerchant #:nodoc:
|
|
|
100
101
|
# * +'naranja'+
|
|
101
102
|
# * +'union_pay'+
|
|
102
103
|
# * +'alia'+
|
|
104
|
+
# * +'olimpica'+
|
|
105
|
+
# * +'creditel'+
|
|
103
106
|
#
|
|
104
107
|
# Or, if you wish to test your implementation, +'bogus'+.
|
|
105
108
|
#
|
|
@@ -11,7 +11,7 @@ module ActiveMerchant #:nodoc:
|
|
|
11
11
|
'american_express' => ->(num) { num =~ /^3[47]\d{13}$/ },
|
|
12
12
|
'naranja' => ->(num) { num&.size == 16 && in_bin_range?(num.slice(0, 6), NARANJA_RANGES) },
|
|
13
13
|
'diners_club' => ->(num) { num =~ /^3(0[0-5]|[68]\d)\d{11,16}$/ },
|
|
14
|
-
'jcb' => ->(num) { num =~ /^35(28|29|[3-8]\d)\d{12}$/ },
|
|
14
|
+
'jcb' => ->(num) { num =~ /^(35(28|29|[3-8]\d)\d{12}|308800\d{10})$/ },
|
|
15
15
|
'dankort' => ->(num) { num =~ /^5019\d{12}$/ },
|
|
16
16
|
'maestro' => lambda { |num|
|
|
17
17
|
(12..19).cover?(num&.size) && (
|
|
@@ -30,7 +30,9 @@ module ActiveMerchant #:nodoc:
|
|
|
30
30
|
in_bin_range?(num.slice(0, 6), CARNET_RANGES) ||
|
|
31
31
|
CARNET_BINS.any? { |bin| num.slice(0, bin.size) == bin }
|
|
32
32
|
)
|
|
33
|
-
}
|
|
33
|
+
},
|
|
34
|
+
'olimpica' => ->(num) { num =~ /^636853\d{10}$/ },
|
|
35
|
+
'creditel' => ->(num) { num =~ /^601933\d{10}$/ }
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
# http://www.barclaycard.co.uk/business/files/bin_rules.pdf
|
|
@@ -69,14 +71,66 @@ module ActiveMerchant #:nodoc:
|
|
|
69
71
|
MASTERCARD_RANGES = [
|
|
70
72
|
(222100..272099),
|
|
71
73
|
(510000..559999),
|
|
74
|
+
[605272],
|
|
75
|
+
[606282],
|
|
76
|
+
[637095],
|
|
77
|
+
[637568],
|
|
78
|
+
(637599..637600),
|
|
79
|
+
[637609],
|
|
72
80
|
]
|
|
73
81
|
|
|
74
82
|
MAESTRO_BINS = Set.new(
|
|
75
|
-
%w[
|
|
83
|
+
%w[ 500057
|
|
84
|
+
501018 501043 501045 501047 501049 501051 501072 501075 501087 501089 501095
|
|
85
|
+
501500
|
|
86
|
+
501879 502113 502301 503175
|
|
87
|
+
503645 503670
|
|
88
|
+
504310 504338 504363 504533 504587 504620 504639 504656 504738 504781 504910
|
|
89
|
+
507001 507002 507004 507082 507090
|
|
90
|
+
560014 560565 561033
|
|
91
|
+
572402 572610 572626
|
|
92
|
+
576904
|
|
93
|
+
578614
|
|
94
|
+
581149
|
|
95
|
+
585274 585697
|
|
96
|
+
586509
|
|
97
|
+
588729 588792
|
|
98
|
+
589244 589407 589471 589605 589633 589647 589671
|
|
99
|
+
590043 590206 590263 590265 590278 590361 590362 590379 590393 590590
|
|
100
|
+
591235 591420 591481 591620 591770 591948 591994
|
|
101
|
+
592024 592161 592184 592186 592201 592384 592393 592528 592566 592704 592735 592879 592884
|
|
102
|
+
593074 593264 593272 593355 593496 593556 593589 593666 593709 593825 593963 593994
|
|
103
|
+
594184 594409 594468 594475 594581 594665 594691 594710 594874 594968
|
|
104
|
+
595355 595364 595532 595547 595561 595568 595743 595929
|
|
105
|
+
596245 596289 596399 596405 596590 596608 596645 596646 596791 596808 596815 596846
|
|
106
|
+
597077 597094 597143 597370 597410 597765 597855 597862
|
|
107
|
+
598053 598054 598395 598585 598793 598794 598815 598835 598838 598880 598889
|
|
108
|
+
599000 599069 599089 599148 599191 599310 599741 599742 599867
|
|
109
|
+
601070
|
|
110
|
+
604983
|
|
111
|
+
606126
|
|
112
|
+
636380 636422 636502 636639
|
|
113
|
+
637046 637756
|
|
114
|
+
639130 639229
|
|
115
|
+
690032]
|
|
76
116
|
)
|
|
77
117
|
|
|
78
118
|
# https://www.mastercard.us/content/dam/mccom/global/documents/mastercard-rules.pdf, page 73
|
|
79
119
|
MAESTRO_RANGES = [
|
|
120
|
+
(500032..500033),
|
|
121
|
+
(501015..501016),
|
|
122
|
+
(501020..501021),
|
|
123
|
+
(501023..501029),
|
|
124
|
+
(501038..501041),
|
|
125
|
+
(501053..501058),
|
|
126
|
+
(501060..501063),
|
|
127
|
+
(501066..501067),
|
|
128
|
+
(501080..501083),
|
|
129
|
+
(501091..501092),
|
|
130
|
+
(501104..501105),
|
|
131
|
+
(501107..501108),
|
|
132
|
+
(501104..501105),
|
|
133
|
+
(501107..501108),
|
|
80
134
|
(561200..561269),
|
|
81
135
|
(561271..561299),
|
|
82
136
|
(561320..561356),
|
|
@@ -101,14 +155,14 @@ module ActiveMerchant #:nodoc:
|
|
|
101
155
|
|
|
102
156
|
# https://dev.elo.com.br/apis/tabela-de-bins, download csv from left sidebar
|
|
103
157
|
ELO_RANGES = [
|
|
104
|
-
506707..506708, 506715..506715,
|
|
105
|
-
506745..506747, 506753..506753, 506774..
|
|
106
|
-
509020..
|
|
107
|
-
|
|
108
|
-
627780..627780, 636368..636368, 650031..650033, 650035..
|
|
109
|
-
|
|
110
|
-
650928..650928, 650938..650939, 650946..
|
|
111
|
-
|
|
158
|
+
506707..506708, 506715..506715, 506717..506722, 506724..506736, 506739..506743,
|
|
159
|
+
506745..506747, 506753..506753, 506774..506778, 509000..509007, 509009..509014,
|
|
160
|
+
509020..509030, 509035..509042, 509044..509089, 509091..509101, 509104..509807,
|
|
161
|
+
509831..509877, 509897..509900, 509918..509964, 509971..509986, 509995..509999,
|
|
162
|
+
627780..627780, 636368..636368, 650031..650033, 650035..650051, 650057..650081,
|
|
163
|
+
650406..650439, 650485..650504, 650506..650538, 650552..650598, 650720..650727,
|
|
164
|
+
650901..650922, 650928..650928, 650938..650939, 650946..650978, 651652..651704,
|
|
165
|
+
655000..655019, 655021..655057
|
|
112
166
|
]
|
|
113
167
|
|
|
114
168
|
# Alelo provides BIN ranges by e-mailing them out periodically.
|
|
@@ -120,8 +174,9 @@ module ActiveMerchant #:nodoc:
|
|
|
120
174
|
402588..402588, 404347..404347, 405876..405876, 405882..405882, 405884..405884,
|
|
121
175
|
405886..405886, 430471..430471, 438061..438061, 438064..438064, 470063..470066,
|
|
122
176
|
496067..496067, 506699..506704, 506706..506706, 506713..506714, 506716..506716,
|
|
123
|
-
506749..506750, 506752..506752, 506754..506756, 506758..
|
|
124
|
-
|
|
177
|
+
506749..506750, 506752..506752, 506754..506756, 506758..506767, 506770..506771,
|
|
178
|
+
506773..506773, 509015..509019, 509880..509882, 509884..509885, 509887..509887,
|
|
179
|
+
509987..509992
|
|
125
180
|
]
|
|
126
181
|
|
|
127
182
|
CABAL_RANGES = [
|
|
@@ -149,7 +204,7 @@ module ActiveMerchant #:nodoc:
|
|
|
149
204
|
def self.in_bin_range?(number, ranges)
|
|
150
205
|
bin = number.to_i
|
|
151
206
|
ranges.any? do |range|
|
|
152
|
-
range.
|
|
207
|
+
range.include?(bin)
|
|
153
208
|
end
|
|
154
209
|
end
|
|
155
210
|
|
|
@@ -298,6 +353,8 @@ module ActiveMerchant #:nodoc:
|
|
|
298
353
|
case brand
|
|
299
354
|
when 'naranja'
|
|
300
355
|
valid_naranja_algo?(numbers)
|
|
356
|
+
when 'creditel'
|
|
357
|
+
valid_creditel_algo?(numbers)
|
|
301
358
|
when 'alia'
|
|
302
359
|
true
|
|
303
360
|
else
|
|
@@ -352,7 +409,7 @@ module ActiveMerchant #:nodoc:
|
|
|
352
409
|
sum % 10 == 0
|
|
353
410
|
end
|
|
354
411
|
|
|
355
|
-
# Checks the validity of a card number by use of
|
|
412
|
+
# Checks the validity of a card number by use of specific algorithms
|
|
356
413
|
def valid_naranja_algo?(numbers) #:nodoc:
|
|
357
414
|
num_array = numbers.to_s.chars.map(&:to_i)
|
|
358
415
|
multipliers = [4, 3, 2, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
|
|
@@ -361,6 +418,14 @@ module ActiveMerchant #:nodoc:
|
|
|
361
418
|
final_num = intermediate > 9 ? 0 : intermediate
|
|
362
419
|
final_num == num_array[15]
|
|
363
420
|
end
|
|
421
|
+
|
|
422
|
+
def valid_creditel_algo?(numbers) #:nodoc:
|
|
423
|
+
num_array = numbers.to_s.chars.map(&:to_i)
|
|
424
|
+
multipliers = [5, 4, 3, 2, 1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9]
|
|
425
|
+
num_sum = num_array[0..14].zip(multipliers).map { |a, b| a * b }.reduce(:+)
|
|
426
|
+
final_num = num_sum % 10
|
|
427
|
+
final_num == num_array[15]
|
|
428
|
+
end
|
|
364
429
|
end
|
|
365
430
|
end
|
|
366
431
|
end
|