activemerchant 1.137.0 → 1.138.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 +212 -2
- data/CONTRIBUTORS +1 -0
- data/lib/active_merchant/billing/apple_pay_payment_token.rb +2 -2
- data/lib/active_merchant/billing/base.rb +2 -2
- data/lib/active_merchant/billing/check.rb +14 -2
- data/lib/active_merchant/billing/credit_card.rb +24 -8
- data/lib/active_merchant/billing/credit_card_formatting.rb +9 -2
- data/lib/active_merchant/billing/credit_card_methods.rb +17 -15
- data/lib/active_merchant/billing/gateway.rb +13 -2
- data/lib/active_merchant/billing/gateways/adyen.rb +139 -63
- data/lib/active_merchant/billing/gateways/airwallex.rb +22 -15
- data/lib/active_merchant/billing/gateways/alelo.rb +6 -6
- data/lib/active_merchant/billing/gateways/allied_wallet.rb +2 -2
- data/lib/active_merchant/billing/gateways/authorize_net.rb +6 -6
- data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +4 -4
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +2 -2
- data/lib/active_merchant/billing/gateways/axcessms.rb +3 -3
- data/lib/active_merchant/billing/gateways/balanced.rb +2 -2
- data/lib/active_merchant/billing/gateways/bambora_apac.rb +2 -2
- data/lib/active_merchant/billing/gateways/bank_frick.rb +2 -2
- data/lib/active_merchant/billing/gateways/banwire.rb +2 -2
- data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +8 -8
- data/lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb +2 -2
- data/lib/active_merchant/billing/gateways/be2bill.rb +2 -2
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +5 -5
- data/lib/active_merchant/billing/gateways/beanstream.rb +2 -2
- data/lib/active_merchant/billing/gateways/beanstream_interac.rb +2 -2
- data/lib/active_merchant/billing/gateways/blue_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/bogus.rb +2 -2
- data/lib/active_merchant/billing/gateways/borgun.rb +2 -2
- data/lib/active_merchant/billing/gateways/bpoint.rb +2 -2
- data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +3 -1
- data/lib/active_merchant/billing/gateways/braintree/token_nonce.rb +4 -4
- data/lib/active_merchant/billing/gateways/braintree.rb +2 -2
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +56 -32
- data/lib/active_merchant/billing/gateways/braintree_orange.rb +2 -2
- data/lib/active_merchant/billing/gateways/bridge_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/cams.rb +2 -2
- data/lib/active_merchant/billing/gateways/card_connect.rb +2 -2
- data/lib/active_merchant/billing/gateways/card_save.rb +2 -2
- data/lib/active_merchant/billing/gateways/card_stream.rb +8 -7
- data/lib/active_merchant/billing/gateways/cardknox.rb +2 -2
- data/lib/active_merchant/billing/gateways/cardprocess.rb +2 -2
- data/lib/active_merchant/billing/gateways/cashnet.rb +3 -3
- data/lib/active_merchant/billing/gateways/cc5.rb +2 -2
- data/lib/active_merchant/billing/gateways/cecabank/cecabank_json.rb +27 -12
- data/lib/active_merchant/billing/gateways/cecabank.rb +2 -2
- data/lib/active_merchant/billing/gateways/cenpos.rb +9 -3
- data/lib/active_merchant/billing/gateways/checkout.rb +5 -5
- data/lib/active_merchant/billing/gateways/checkout_v2.rb +128 -20
- data/lib/active_merchant/billing/gateways/clearhaus.rb +2 -2
- data/lib/active_merchant/billing/gateways/commerce_hub.rb +57 -32
- data/lib/active_merchant/billing/gateways/commercegate.rb +4 -4
- data/lib/active_merchant/billing/gateways/conekta.rb +2 -2
- data/lib/active_merchant/billing/gateways/creditcall.rb +2 -2
- data/lib/active_merchant/billing/gateways/credorax.rb +106 -15
- data/lib/active_merchant/billing/gateways/ct_payment.rb +6 -6
- data/lib/active_merchant/billing/gateways/culqi.rb +2 -2
- data/lib/active_merchant/billing/gateways/cyber_source/cyber_source_common.rb +2 -2
- data/lib/active_merchant/billing/gateways/cyber_source.rb +237 -96
- data/lib/active_merchant/billing/gateways/cyber_source_rest.rb +64 -37
- data/lib/active_merchant/billing/gateways/d_local.rb +19 -7
- data/lib/active_merchant/billing/gateways/data_cash.rb +1 -1
- data/lib/active_merchant/billing/gateways/datatrans.rb +16 -11
- data/lib/active_merchant/billing/gateways/decidir.rb +30 -29
- data/lib/active_merchant/billing/gateways/decidir_plus.rb +27 -34
- data/lib/active_merchant/billing/gateways/deepstack.rb +2 -2
- data/lib/active_merchant/billing/gateways/dibs.rb +3 -3
- data/lib/active_merchant/billing/gateways/digitzs.rb +2 -2
- data/lib/active_merchant/billing/gateways/ebanx.rb +82 -38
- data/lib/active_merchant/billing/gateways/efsnet.rb +7 -6
- data/lib/active_merchant/billing/gateways/elavon.rb +8 -41
- data/lib/active_merchant/billing/gateways/element.rb +3 -3
- data/lib/active_merchant/billing/gateways/epay.rb +2 -2
- data/lib/active_merchant/billing/gateways/evo_ca.rb +2 -2
- data/lib/active_merchant/billing/gateways/eway.rb +2 -2
- data/lib/active_merchant/billing/gateways/eway_managed.rb +2 -2
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +3 -3
- data/lib/active_merchant/billing/gateways/exact.rb +2 -2
- data/lib/active_merchant/billing/gateways/fat_zebra.rb +6 -4
- data/lib/active_merchant/billing/gateways/federated_canada.rb +2 -2
- data/lib/active_merchant/billing/gateways/finansbank.rb +2 -2
- data/lib/active_merchant/billing/gateways/first_giving.rb +2 -2
- data/lib/active_merchant/billing/gateways/first_pay/first_pay_json.rb +2 -2
- data/lib/active_merchant/billing/gateways/first_pay/first_pay_xml.rb +2 -2
- data/lib/active_merchant/billing/gateways/first_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +2 -2
- data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +2 -2
- data/lib/active_merchant/billing/gateways/flex_charge.rb +40 -28
- data/lib/active_merchant/billing/gateways/flo2cash.rb +4 -2
- data/lib/active_merchant/billing/gateways/flo2cash_simple.rb +2 -2
- data/lib/active_merchant/billing/gateways/forte.rb +6 -4
- data/lib/active_merchant/billing/gateways/fortis.rb +347 -0
- data/lib/active_merchant/billing/gateways/garanti.rb +2 -2
- data/lib/active_merchant/billing/gateways/global_collect.rb +29 -18
- data/lib/active_merchant/billing/gateways/global_transport.rb +2 -2
- data/lib/active_merchant/billing/gateways/hdfc.rb +2 -2
- data/lib/active_merchant/billing/gateways/hi_pay.rb +7 -6
- data/lib/active_merchant/billing/gateways/hps.rb +40 -47
- data/lib/active_merchant/billing/gateways/iats_payments.rb +2 -2
- data/lib/active_merchant/billing/gateways/in_context_paypal_express.rb +2 -2
- data/lib/active_merchant/billing/gateways/inspire.rb +2 -2
- data/lib/active_merchant/billing/gateways/instapay.rb +2 -2
- data/lib/active_merchant/billing/gateways/ipg.rb +5 -5
- data/lib/active_merchant/billing/gateways/ipp.rb +2 -2
- data/lib/active_merchant/billing/gateways/iridium.rb +3 -3
- data/lib/active_merchant/billing/gateways/itransact.rb +2 -2
- data/lib/active_merchant/billing/gateways/iveri.rb +9 -6
- data/lib/active_merchant/billing/gateways/ixopay.rb +2 -2
- data/lib/active_merchant/billing/gateways/jetpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/jetpay_v2.rb +5 -4
- data/lib/active_merchant/billing/gateways/komoju.rb +2 -2
- data/lib/active_merchant/billing/gateways/kushki.rb +7 -4
- data/lib/active_merchant/billing/gateways/latitude19.rb +2 -2
- data/lib/active_merchant/billing/gateways/linkpoint.rb +2 -2
- data/lib/active_merchant/billing/gateways/litle.rb +5 -5
- data/lib/active_merchant/billing/gateways/loan_payment_pro.rb +267 -0
- data/lib/active_merchant/billing/gateways/loan_payment_pro_ach.rb +93 -0
- data/lib/active_merchant/billing/gateways/maxipago.rb +2 -2
- data/lib/active_merchant/billing/gateways/mercado_pago.rb +32 -11
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +2 -2
- data/lib/active_merchant/billing/gateways/merchant_one.rb +2 -2
- data/lib/active_merchant/billing/gateways/merchant_partners.rb +2 -2
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +2 -2
- data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +2 -2
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +2 -2
- data/lib/active_merchant/billing/gateways/mercury.rb +5 -3
- data/lib/active_merchant/billing/gateways/metrics_global.rb +2 -2
- data/lib/active_merchant/billing/gateways/micropayment.rb +2 -2
- data/lib/active_merchant/billing/gateways/migs/migs_codes.rb +6 -6
- data/lib/active_merchant/billing/gateways/migs.rb +2 -2
- data/lib/active_merchant/billing/gateways/mit.rb +3 -3
- data/lib/active_merchant/billing/gateways/modern_payments.rb +2 -2
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +3 -3
- data/lib/active_merchant/billing/gateways/moka.rb +2 -2
- data/lib/active_merchant/billing/gateways/monei.rb +2 -2
- data/lib/active_merchant/billing/gateways/moneris.rb +2 -2
- data/lib/active_merchant/billing/gateways/money_movers.rb +2 -2
- data/lib/active_merchant/billing/gateways/multi_pay.rb +267 -0
- data/lib/active_merchant/billing/gateways/mundipagg.rb +5 -3
- data/lib/active_merchant/billing/gateways/nab_transact.rb +6 -6
- data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/netaxept.rb +4 -4
- data/lib/active_merchant/billing/gateways/netbanx.rb +3 -3
- data/lib/active_merchant/billing/gateways/netbilling.rb +2 -2
- data/lib/active_merchant/billing/gateways/netpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/network_merchants.rb +3 -3
- data/lib/active_merchant/billing/gateways/nmi.rb +13 -4
- data/lib/active_merchant/billing/gateways/nuvei.rb +573 -0
- data/lib/active_merchant/billing/gateways/ogone.rb +2 -2
- data/lib/active_merchant/billing/gateways/omise.rb +2 -2
- data/lib/active_merchant/billing/gateways/openpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/opp.rb +2 -2
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +6 -4
- data/lib/active_merchant/billing/gateways/orbital/orbital_codes.rb +273 -0
- data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +2 -2
- data/lib/active_merchant/billing/gateways/orbital.rb +47 -86
- data/lib/active_merchant/billing/gateways/pac_net_raven.rb +2 -2
- data/lib/active_merchant/billing/gateways/pagarme.rb +2 -2
- data/lib/active_merchant/billing/gateways/pago_facil.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_arc.rb +9 -7
- data/lib/active_merchant/billing/gateways/pay_conex.rb +6 -4
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_hub.rb +3 -3
- data/lib/active_merchant/billing/gateways/pay_junction.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_secure.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_trace.rb +5 -4
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +14 -14
- data/lib/active_merchant/billing/gateways/payeezy.rb +7 -5
- data/lib/active_merchant/billing/gateways/payex.rb +4 -4
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +2 -2
- data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +2 -2
- data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +2 -2
- data/lib/active_merchant/billing/gateways/payflow.rb +11 -8
- data/lib/active_merchant/billing/gateways/payflow_express.rb +2 -2
- data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +2 -2
- data/lib/active_merchant/billing/gateways/payflow_uk.rb +2 -2
- data/lib/active_merchant/billing/gateways/payment_express.rb +2 -2
- data/lib/active_merchant/billing/gateways/paymentez.rb +7 -5
- data/lib/active_merchant/billing/gateways/paymill.rb +6 -4
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +17 -12
- data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +2 -2
- data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +2 -2
- data/lib/active_merchant/billing/gateways/paypal.rb +4 -2
- data/lib/active_merchant/billing/gateways/paypal_ca.rb +2 -2
- data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +2 -2
- data/lib/active_merchant/billing/gateways/paypal_express.rb +4 -2
- data/lib/active_merchant/billing/gateways/paysafe.rb +36 -13
- data/lib/active_merchant/billing/gateways/payscout.rb +2 -2
- data/lib/active_merchant/billing/gateways/paystation.rb +2 -2
- data/lib/active_merchant/billing/gateways/payu_in.rb +2 -2
- data/lib/active_merchant/billing/gateways/payu_latam.rb +7 -5
- data/lib/active_merchant/billing/gateways/payway_dot_com.rb +4 -4
- data/lib/active_merchant/billing/gateways/pin.rb +104 -37
- data/lib/active_merchant/billing/gateways/plexo.rb +32 -20
- data/lib/active_merchant/billing/gateways/priority.rb +23 -19
- data/lib/active_merchant/billing/gateways/pro_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/psigate.rb +2 -2
- data/lib/active_merchant/billing/gateways/qbms.rb +3 -3
- data/lib/active_merchant/billing/gateways/quantum.rb +3 -3
- data/lib/active_merchant/billing/gateways/quickbooks.rb +21 -12
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +2 -2
- data/lib/active_merchant/billing/gateways/quickpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/qvalent.rb +2 -2
- data/lib/active_merchant/billing/gateways/rapyd.rb +28 -11
- data/lib/active_merchant/billing/gateways/reach.rb +5 -5
- data/lib/active_merchant/billing/gateways/redsys.rb +5 -5
- data/lib/active_merchant/billing/gateways/redsys_rest.rb +57 -19
- data/lib/active_merchant/billing/gateways/s5.rb +2 -2
- data/lib/active_merchant/billing/gateways/safe_charge.rb +12 -9
- data/lib/active_merchant/billing/gateways/sage.rb +2 -2
- data/lib/active_merchant/billing/gateways/sage_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/sallie_mae.rb +2 -2
- data/lib/active_merchant/billing/gateways/secure_net.rb +3 -3
- data/lib/active_merchant/billing/gateways/secure_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +13 -11
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +2 -2
- data/lib/active_merchant/billing/gateways/securion_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/shift4.rb +19 -8
- data/lib/active_merchant/billing/gateways/shift4_v2.rb +2 -2
- data/lib/active_merchant/billing/gateways/simetrik.rb +9 -6
- data/lib/active_merchant/billing/gateways/skip_jack.rb +2 -2
- data/lib/active_merchant/billing/gateways/smart_ps.rb +3 -3
- data/lib/active_merchant/billing/gateways/so_easy_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/spreedly_core.rb +2 -2
- data/lib/active_merchant/billing/gateways/stripe.rb +41 -69
- data/lib/active_merchant/billing/gateways/stripe_payment_intents.rb +218 -56
- data/lib/active_merchant/billing/gateways/sum_up.rb +5 -4
- data/lib/active_merchant/billing/gateways/swipe_checkout.rb +2 -2
- data/lib/active_merchant/billing/gateways/telr.rb +3 -3
- data/lib/active_merchant/billing/gateways/trans_first.rb +5 -2
- data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +2 -2
- data/lib/active_merchant/billing/gateways/transact_pro.rb +2 -2
- data/lib/active_merchant/billing/gateways/transax.rb +2 -2
- data/lib/active_merchant/billing/gateways/transnational.rb +2 -2
- data/lib/active_merchant/billing/gateways/trexle.rb +2 -2
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +3 -3
- data/lib/active_merchant/billing/gateways/usa_epay.rb +2 -2
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +23 -23
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +3 -3
- data/lib/active_merchant/billing/gateways/vantiv_express.rb +84 -3
- data/lib/active_merchant/billing/gateways/verifi.rb +6 -6
- data/lib/active_merchant/billing/gateways/versa_pay.rb +307 -0
- data/lib/active_merchant/billing/gateways/viaklix.rb +2 -2
- data/lib/active_merchant/billing/gateways/visanet_peru.rb +3 -3
- data/lib/active_merchant/billing/gateways/vpos.rb +23 -11
- data/lib/active_merchant/billing/gateways/webpay.rb +3 -3
- data/lib/active_merchant/billing/gateways/wepay.rb +6 -4
- data/lib/active_merchant/billing/gateways/wirecard.rb +3 -3
- data/lib/active_merchant/billing/gateways/wompi.rb +9 -7
- data/lib/active_merchant/billing/gateways/world_net.rb +2 -2
- data/lib/active_merchant/billing/gateways/worldpay.rb +180 -63
- data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +3 -3
- data/lib/active_merchant/billing/gateways/worldpay_us.rb +2 -2
- data/lib/active_merchant/billing/gateways/xpay.rb +8 -6
- data/lib/active_merchant/billing/network_tokenization_credit_card.rb +14 -2
- data/lib/active_merchant/billing/payment_token.rb +2 -2
- data/lib/active_merchant/billing/response.rb +5 -4
- data/lib/active_merchant/billing.rb +1 -0
- data/lib/active_merchant/connection.rb +6 -4
- data/lib/active_merchant/country.rb +2 -1
- data/lib/active_merchant/errors.rb +2 -2
- data/lib/active_merchant/net_http_ssl_connection.rb +35 -0
- data/lib/active_merchant/posts_data.rb +19 -4
- data/lib/active_merchant/version.rb +1 -1
- data/lib/active_merchant/versionable.rb +29 -0
- data/lib/certs/cacert.pem +1326 -1491
- data/lib/support/gateway_support.rb +1 -1
- data/lib/support/ssl_verify.rb +2 -2
- data/lib/support/ssl_version.rb +2 -2
- metadata +13 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6df6c6a58c5b6cf99e4cd2b624e0750cfc0ba34d09b62371f6db05ce70b6b536
|
|
4
|
+
data.tar.gz: 39b9985e43651a7ad21eaa4222f2538ca3c72a730f92798d6ae2975b7f2f01ff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3781d3d30264e02c01d174ef1c5250f001128a452c294f251a0906299c9badf0d4466ac5406228444997740a78756e0e72ad0d1030f2beb370f7069a80ed0fc7
|
|
7
|
+
data.tar.gz: 4fd6f30fb43c3418c66fb4b07684fcf1c1b889ef112ddb54a54d4c749d037c5d17c77c57c522c9928731b6dbc6a91645cb71c4ddc9a737fbc94d7cfd171e98a1
|
data/CHANGELOG
CHANGED
|
@@ -3,8 +3,213 @@
|
|
|
3
3
|
|
|
4
4
|
== HEAD
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
== Version 1.138.0 (October 21, 2026)
|
|
7
|
+
* Connection: Update the bundled CA file to the Mozilla root store as of 2026-10-20, removing emSign ECC Root CA - G3 and Comodo AAA Services root [Ginja] #5600
|
|
8
|
+
* Efsnet, Flo2cash: Fix parsing with rexml 3.4.2 and later, and repair unit tests broken by rexml 3.4.2 and NMI test stubs [Ginja] #5601
|
|
9
|
+
* Mercury, TransFirst: Repair gateways following updates to `rexml` [aenand] #5206
|
|
10
|
+
* NMI: Fix Decrypted indicator for Google/Apple pay [javierpedrozaing] #5196
|
|
11
|
+
* FlexCharge: add more descriptives error messages [gasb150] #5199
|
|
12
|
+
* Braintree: Updates to Paypal Integration [almalee24] #5190
|
|
13
|
+
* Stripe and Stripe PI: Add metadata and order_id for refund and void [yunnydang] #5204
|
|
14
|
+
* CommerceHub: Update test url [DustinHaefele] #5211
|
|
15
|
+
* Adyen: Fix billing address empty string error [yunnydang] #5208
|
|
16
|
+
* Elavon: Update sending CVV for MIT transactions [almalee24] #5210
|
|
17
|
+
* Adyen: Fix NT integration [jherreraa] #5155
|
|
18
|
+
* HPS: Update NetworkTokenizationCreditCard flow [almalee24] #5178
|
|
19
|
+
* Braintree: Support override_application_id [aenand] #5194
|
|
20
|
+
* Decidir: Pass CVV for NT [almalee24] #5205
|
|
21
|
+
* NMI: Add customer vault fields [yunnydang] #5215
|
|
22
|
+
* CheckoutV2: Add inquire method [almalee24] #5209
|
|
23
|
+
* Decidir & Braintree: Scrub cryptogram and card number [almalee24] #5220
|
|
24
|
+
* Naranja: Update valid number check to include luhn10 [DustinHaefele] #5217
|
|
25
|
+
* Cybersource: Add apple_pay with discover. [DustinHaefele] #5213
|
|
26
|
+
* MercadoPago: Add idempotency key field [yunnydang] #5229
|
|
27
|
+
* Adyen: Update split refund method [yunnydang] #5218
|
|
28
|
+
* Adyen: Remove raw_error_message [almalee24] #5202
|
|
29
|
+
* Elavon: Remove old Stored Credential method [almalee24] #5219
|
|
30
|
+
* PayTrace: Update MultiResponse for Capture [almalee24] #5203
|
|
31
|
+
* Adyen: Add support for Pan Only GooglePay [almalee24] #5221
|
|
32
|
+
* Decidir: Send extra fields for tokenized NT transactions [sinourain] #5224
|
|
33
|
+
* StripePI: Skip add_network_token_cryptogram_and_eci method to accept ApplePay recurring payments [sinourain] #5212
|
|
34
|
+
* Decidir: Fix scrub method after update NT fields [sinourain] #5241
|
|
35
|
+
* Cybersource and Cybersource Rest: Update card type code for Carnet cards [rachelkirk] #5235
|
|
36
|
+
* Stripe PI: Add challenge as valid value for request_three_d_secure [jcreiff] #5238
|
|
37
|
+
* StripePI: Add metadata for GooglePay FPAN [almalee24] #5242
|
|
38
|
+
* Paypal: Add inquire method [almalee24] #5231
|
|
39
|
+
* Adyen: Enable multiple legs within airline data [jcreiff] #5249
|
|
40
|
+
* SafeCharge: Add card holder verification fields [yunnydang] #5252
|
|
41
|
+
* Iveri: Add AuthorisationReversal for Auth Void [almalee24] #5233
|
|
42
|
+
* Stripe PI: Update Stored Credentials [almalee24] #5236
|
|
43
|
+
* Checkout V2: Update stored credential options function [jherreraa] #5239
|
|
44
|
+
* Ebanx: Add support for Stored Credentials [almalee24] #5243
|
|
45
|
+
* Shift4: Update response parsing to account for hostresponse [jcreiff] #5261
|
|
46
|
+
* NMI: Add `industry_indicator` field [naashton] #5264
|
|
47
|
+
* Nuvei: Add 3DS GS [gasb150] #5247
|
|
48
|
+
* Rapyd: Add idempotency for all endpoints [almalee24] #5255
|
|
49
|
+
* Decidir: Map error code -1 to processing_error [Buitragox] #5257
|
|
50
|
+
* SumUp: Append partner_id to checkout_reference [naashton] #5272
|
|
51
|
+
* Adyen: Update shopperInteraction [almalee24] #5273
|
|
52
|
+
* CenPOS: Add test_url [jcreiff] #5274
|
|
53
|
+
* Worldpay: Fix stored credentials issue [jherreraa] #5267
|
|
54
|
+
* StripePI: Update authorization for failed Payment Intents [almalee24] #5260
|
|
55
|
+
* Worldpay: Add support for recurring Apple Pay [kenderbolivart] #5628
|
|
56
|
+
* Cybersource Rest: Add support for recurring Apple Pay [bdcano] #5270
|
|
57
|
+
* Cybersource Rest: Update message and error_code [almalee24] #5276
|
|
58
|
+
* Paysafe: Add support for `external_initial_transaction_id` [rachelkirk] #5291
|
|
59
|
+
* Worldpay: Add customStringFields [jcreiff] #5284
|
|
60
|
+
* Airwallex: truncate descriptor field to 32 characters [jcreiff] #5292
|
|
61
|
+
* DLocal: Add the description field for refund [yunnydang] #5296
|
|
62
|
+
* Worldpay: Add support for Worldpay decrypted apple pay and google pay [dustinhaefele] #5271
|
|
63
|
+
* Orbital: Update alternate_ucaf_flow [almalee24] #5282
|
|
64
|
+
* Adyen: Remove cryptogram flag [almalee24] #5300
|
|
65
|
+
* Cecabank: Include Apple Pay and Google Pay for recurring payments [gasb150] #5295
|
|
66
|
+
* DLocal: Add X-Dlocal-Payment-Source to header [almalee24] #5281
|
|
67
|
+
* StripePI: Update to retrieve_setup_intent and headers [almalee24] #5283
|
|
68
|
+
* Upgrade rexml to 3.3.8 [raymzag] #5245
|
|
69
|
+
* Nuvei: Add partial approval feature [javierpedrozaing] #5250
|
|
70
|
+
* Nuvei: Add ACH support [javierpedrozaing] #5269
|
|
71
|
+
* Nuvei: Add GSF for verify method [javierpedrozaing] #5278
|
|
72
|
+
* Nuvei: Add Google and Apple pay [javierpedrozaing] #5289
|
|
73
|
+
* Cybersource and Cybersource Rest: Add the MCC field [yunnydang] #5301
|
|
74
|
+
* Adyen: Add the manual_capture field [yunnydang] #5310
|
|
75
|
+
* Versapay: First Implementation [gasb150] #5288
|
|
76
|
+
* Adyen: Enable GSF recurring_detail_reference on other transactions [rubenmarindev] #5285
|
|
77
|
+
* Adyen: Update skip_mpi_data [almalee24] #5306
|
|
78
|
+
* Paysafe: Update fields in standalonecredits [almalee24] #5293
|
|
79
|
+
* GlobalCollect: Add support for $0 Auth [almalee24] #5303
|
|
80
|
+
* Versapay: Store and Unstore transactions [gasb150] #5315
|
|
81
|
+
* Nuvei: Add 3DS Global [javierpedrozaing] #5308
|
|
82
|
+
* StripePI: Store the three_d_secure_usage field [yunnydang] #5321
|
|
83
|
+
* StripePI: Last4 From Payment Method [naashton] #5322
|
|
84
|
+
* New Card Type: Patagonia365 [gasb150] #5265
|
|
85
|
+
* Decidir: Patagonia365 Card Type Mapping [naashton] #5324
|
|
86
|
+
* Ebanx: Add network token support [Buitragox] #5263
|
|
87
|
+
* DLocal: Add the optional country field override [yunnydang] #5326
|
|
88
|
+
* Nuvei: Adding account founding transaction [javierpedrozaing] #5307
|
|
89
|
+
* Nuvei: Add card holder name verification params [javierpedrozaing] #5312
|
|
90
|
+
* Stripe: Remove StripePaymenToken & ApplePayPaymentToken [almalee24] #5304
|
|
91
|
+
* HPS: Update API urls [jherreraa] #5313
|
|
92
|
+
* MIT: Change test URL [Buitragox] #5335
|
|
93
|
+
* Nuvei: Fix NTID stored credentials [javierpedrozaing] #5334
|
|
94
|
+
* StripePI: Fix the store three_d_secure_usage field [yunnydang] #5338
|
|
95
|
+
* Litle: Success codes added to valid responses [jherreraa] #5339
|
|
96
|
+
* CommerceHub: Update Production URL [almalee24] #5340
|
|
97
|
+
* CommerceHub: Add Network Token support [almalee24] #5331
|
|
98
|
+
* Worldpay: Update Stored Credentials [almalee24] #5330
|
|
99
|
+
* Update Rubocop 1.26.0 [almalee24] #5325
|
|
100
|
+
* RedsysREST: Add Network Tokens [gasb150] #5333
|
|
101
|
+
* DLocal: Update the success_from for Void [almalee24] #5337
|
|
102
|
+
* Braintree: Add support for stored credentials with Apple Pay [bdcano] #5336
|
|
103
|
+
* FlexCharge: Update homePage url [javierpedrozaing] #5351
|
|
104
|
+
* Nuvei: Fix send savePM in false by default [javierpedrozaing] #5353
|
|
105
|
+
* Decidir and DecicirPlus: Add the wallet_id field [yunnydang] #5354
|
|
106
|
+
* Worldpay: Update where to pass shopperIPAddress [almalee24] #5348
|
|
107
|
+
* Braintree: Account for BraintreeError [almalee24] #5346
|
|
108
|
+
* Worldpay: Fix stored credentials unscheduled reason type [Buitragox] #5352
|
|
109
|
+
* Worldpay: Worldpay: Idempotency key fix [jherreraa] #5359
|
|
110
|
+
* Hi Pay: Don't add 3ds when :three_ds_2 is missing [Buitragox] #5355
|
|
111
|
+
* SecurePayAU: Send order ID for payments with stored card [dacook] #3979
|
|
112
|
+
* Orbital: Add XSD version testing to unit test [almalee24] #5375
|
|
113
|
+
* Priority: fix for bin lookup [Buitragox] #5366
|
|
114
|
+
* CommerceHub: Update merchantInvoiceNumber & merchantTransactionId [almalee24] #5374
|
|
115
|
+
* VersaPay: refactor authorization from structure [gasb150] #5363
|
|
116
|
+
* VersaPay: Improve Message Error and Error Mapping [gasb150] #5357
|
|
117
|
+
* CheckoutV2: Add metadata to Credit [almalee24] #5328
|
|
118
|
+
* Normalize API versions for Adyen, Braintree & GlobalCollect [Buitragox] #5371
|
|
119
|
+
* SafeCharge: Add Australia & Canada as supported countries [almalee24] #5377
|
|
120
|
+
* RedsysRest: Improve authorization from in Redsys [gasb150] #5372
|
|
121
|
+
* Ebanx: Add the notification_url field [yunnydang] #5388
|
|
122
|
+
* Ebanx: Add optional payment_type_code override [jcreiff] #5370
|
|
123
|
+
* Ebanx: Update list of supported countries [jcreiff] #5387
|
|
124
|
+
* Add alternate spelling for Vietnam [jcreiff] #5386
|
|
125
|
+
* Checkout v2: add l2/l3 [gasb150] #5385
|
|
126
|
+
* Worldpay: Update passing 3DS data for NT [almalee24] #5389
|
|
127
|
+
* Ebanx: Add the merchant_payment_code override [yunnydang] #5394
|
|
128
|
+
* Credorax: Add AFT fields [yunnydang] #5390
|
|
129
|
+
* Cashnet: Update max_retries to 1 [almalee24] #5393
|
|
130
|
+
* Cybersource: Update 3DS fields [almalee24] #5396
|
|
131
|
+
* Airwallex: Update authorization_from method to include payment intent ID on refunds [yunnydang] #5400
|
|
132
|
+
* New Credit Card Sol: Add new bin set for Sol credit card [javierpedrozaing] #5380
|
|
133
|
+
* Credit Card Sol: Update card name to `tarjeta_sol` instead of `sol` [javierpedrozaing] #5404
|
|
134
|
+
* Credit Card Sol: Update tarjeta sol support for Decidir and Decidir plus gateways [javierpedrozaing] #5405
|
|
135
|
+
* Routex Bin: Update routex bin range to include 18 digits [yunnydang] #5410
|
|
136
|
+
* Nuvei: Fix isRebilling flag for Stored credentials [javierpedrozaing] #5408
|
|
137
|
+
* Shift4: Add interface_name field [almalee24] #5395
|
|
138
|
+
* Stripe: Update tokenization method for google pay [yunnydang] #5414
|
|
139
|
+
* StripePI: Add AFT fields [yunnydang] #5418
|
|
140
|
+
* CheckoutV2: Improve payout handling with blank sender data [jcreiff] #5423
|
|
141
|
+
* StripePI: Add the request_extended_authorization field [yunnydang] #5417
|
|
142
|
+
* Plexo: Add Transaction sync support for Plexo Gateway [javierpedrozaing] #5416
|
|
143
|
+
* CheckoutV2: Add account name inquiry [jcreiff] #5427
|
|
144
|
+
* Adyen: Update shopperInteraction [almalee24] #5430
|
|
145
|
+
* Nuvei: Add addtional oct and aft user detail fields [yunnydang] #5433
|
|
146
|
+
* CheckoutV2: Add support for partial authorization [yunnydang] #5441
|
|
147
|
+
* Datatrans: Update the authorization for Capture responses [almalee24] #5437
|
|
148
|
+
* CyberSource: Void Acepts nil values [gasb150] #5442
|
|
149
|
+
* Ebanx: Handle special characters in email [ankurspreedly] #5444
|
|
150
|
+
* Orbital: Add support for more currencies [ankurspreedly] #5438
|
|
151
|
+
* Datatrans: Include additional scrub on store call [naashton] #5447
|
|
152
|
+
* Decidir and DecicirPlus: Add the discover payment method ID [yunnydang] #5448
|
|
153
|
+
* CyberSource: Add the optional merchant reference code on capture [yunnydang] #5453
|
|
154
|
+
* Orbital: Update authorization string [almalee24] #5458
|
|
155
|
+
* Braintree: Update gem to 4.26.0 [almalee24] #5440
|
|
156
|
+
* CheckoutV2: Update Authorization from Basic to Bearer [sinourain] #5381
|
|
157
|
+
* Payeezy: Update authorization when extra space [almalee24] #5446
|
|
158
|
+
* Worldpay: Update inquire success_criteria [almalee24] #5445
|
|
159
|
+
* Credorax: Support zero dollar verify [yunnydang] #5457
|
|
160
|
+
* Credorax: Add optional crypto currency type field [yunnydang] #5460
|
|
161
|
+
* CommerceHub: Map ecommerce_indicator value based on three_d_secure.eci [mjdonga] #5461
|
|
162
|
+
* StripePI: Add the optional kana and kanji descriptor suffix fields [yunnydang] #5466
|
|
163
|
+
* Credorax: Add sender birth date for AFT [adarsh-spreedly] #5469
|
|
164
|
+
* StripePaymentIntents: Add inquire capability [adarsh-spreedly] #5456
|
|
165
|
+
* Payflow: Send ds_trans_id as xid if xid is not present [adarsh-spreedly] #5465
|
|
166
|
+
* Normalize the use of API_VERSION for some gateways (iVeri, JetypayV2 and Kushki) [ritesh-kapoor-spreedly] #5454
|
|
167
|
+
* Normalize API versions for Payeezy, Paymentez, and Paymill [mjdonga] #5451
|
|
168
|
+
* Pin Payments: Add support for Apple and Google payment method types [naashton] #5462
|
|
169
|
+
* Pin Payments: Scrub sensitive data from transcript [naashton] #5473
|
|
170
|
+
* CheckoutV2: Send payment type as Regular instead of unscheduled if initiator is cardholder [adarsh-spreedly] #5471
|
|
171
|
+
* CommerceHub: Pass order_id for Verify [almalee24] #5475
|
|
172
|
+
* Orbital: Pass override_exp_date if provided [almalee24] #5476
|
|
173
|
+
* Normalize API Version for StripePaymentIntents, Simetrik, SecurePayAu [adarsh-spreedly] #5450
|
|
174
|
+
* StripePI: validate capture reference [jherrera] #5479
|
|
175
|
+
* Cenpos: Add purchase_order_number field [yunnydang] #5481
|
|
176
|
+
* Rapyd: Fix error on billing address [jherrera] #5472
|
|
177
|
+
* Nuvei: Map order_id to clientUniqueId field on refund/credit [jherrera] #5477
|
|
178
|
+
* Update clean_emoji_emoticons_and_accent method [almalee24] #5485
|
|
179
|
+
* Payflow: Send CAVV as xid if xid is not present [adarsh-spreedly] #5496
|
|
180
|
+
* Credorax: Fixed request signature [mjdonga] #5486
|
|
181
|
+
* Nuvei/Reach/Shift4: Normalize API_VERSION usage [sumit-sharmas] #5493
|
|
182
|
+
* Xpay/Sumup/Quickbooks: Normalize API_VERSION usage [aaqibrashidmir] #5495
|
|
183
|
+
* Ebanx: Fix NoMethodError for address [almalee24] #5500
|
|
184
|
+
* Vpos: Check for response under refund.response_code [almalee24] #5501
|
|
185
|
+
* Ebanx: Fix field nesting cof_info, device_id, and notification_url [yunnydang] #5494
|
|
186
|
+
* MultiPay: Add Base Gateway adapter [Heavblade] #5497
|
|
187
|
+
* Cecabank: Fix finRec field formatting for Cecabank Gateway [aaqibrashidmir] #5506
|
|
188
|
+
* Nuvei: Map order_id to clientUniqueId field on capture transactions [aaqibrashidmir] #5498
|
|
189
|
+
* Ebanx: Added new GSF payment.taxes.iva_co [ritesh-spreedly] #5509
|
|
190
|
+
* Litle: Remove 141 & 142 [almalee24] #5505
|
|
191
|
+
* Normalize API Version for CyberSourceRest, Datatrans, and FlexCharge [aaqibrashidmir] #5489
|
|
192
|
+
* Wepay/Wompi/CommerceHub: Normalize API_VERSION usage [sumit-sharmas] #5490
|
|
193
|
+
* CheckoutV2: Pass udf5 field in metadata [mjdonga] #5507
|
|
194
|
+
* DLocal: Add issuer_identification_number as bin in Card object [adarsh-spreedly] #5499
|
|
195
|
+
* Normalize API Versions for litle, mercado_pago and mundipagg [mjdonga] #5518
|
|
196
|
+
* Normalize API Versions for Barclay card Smart pay, Fat Zebra and Forte gateways [mjdonga] #5519
|
|
197
|
+
* Worldpay: Add refund reference field [yunnydang] #5531
|
|
198
|
+
* Paysafe: Save cards to exisiting profiles [almalee24] #5504
|
|
199
|
+
* Credorax: Spec fix for updated processor name [adarsh-spreedly] #5492
|
|
200
|
+
* Normalize API for Rapyd, SafeCharge and SecureNet [ritesh-kapoor-spreedly] #5514
|
|
201
|
+
* Normalize API Version for Orbital, OptimalPayment, NabTransact [adarsh-spreedly] #5523
|
|
202
|
+
* PayArc/PayConex/HPS: Normalize API_VERSION usage [sumit-sharmas] #5521
|
|
203
|
+
* VantivExpress: Add support of level 2 and 3 data [adarsh-spreedly] #5487
|
|
204
|
+
* Normalize API versions for paypal, paysafe, and payu_latam [mjdonga] #5515
|
|
205
|
+
* StripePI: Add support for multicapture [mjdonga] #5491
|
|
206
|
+
* Normalize API Version for Plexo, Pin, Priority [adarsh-spreedly] #5517
|
|
207
|
+
* Stripe PI: Update API version [almalee24] #5360
|
|
208
|
+
* Airwallex: Add optional products array field [yunnydang] #5530
|
|
209
|
+
* Pin Payments: Add inquire method to get details of payment [hudakh] #5537
|
|
210
|
+
* Pin Payments: Add transaction_search method and support paginated API responses [hudakh] #5541
|
|
211
|
+
|
|
212
|
+
== Version 1.137.0 (August 2, 2024)
|
|
8
213
|
* Unlock dependency on `rexml` to allow fixing a CVE (#5181).
|
|
9
214
|
* Bump Ruby version to 3.1 [dustinhaefele] #5104
|
|
10
215
|
* FlexCharge: Update inquire method to use the new orders end-point
|
|
@@ -34,6 +239,9 @@
|
|
|
34
239
|
* Elavon: Add updated stored credential version [almalee24] #5170
|
|
35
240
|
* Adyen: Add header fields to response body [yunnydang] #5184
|
|
36
241
|
* Stripe and Stripe PI: Add header fields to response body [yunnydang] #5185
|
|
242
|
+
* Nuvei: Add support for Stored Credentials [javierpedrozaing] #5186
|
|
243
|
+
* Addition of shopper ip address when a network token transaction occurs [rubenmarindev] #5262
|
|
244
|
+
* LoanPaymentPro: Add new gateway adapter for the Loanpaymentpro gateway [heavyblade] #5470
|
|
37
245
|
|
|
38
246
|
== Version 1.136.0 (June 3, 2024)
|
|
39
247
|
* Shift4V2: Add new gateway based on SecurionPay adapter [heavyblade] #4860
|
|
@@ -691,6 +899,8 @@
|
|
|
691
899
|
* CyberSource: Add `line_items` for purchase [ajawadmirza] #4282
|
|
692
900
|
* Payflow Pro: Add `stored_credential` fields [ajawadmirza] #4277
|
|
693
901
|
* Decidir Plus: Add `fraud_detection` fields [naashton] #4289
|
|
902
|
+
* Elavon: Pass through ssl_email for verify transactions [ankurspreedly] #5502
|
|
903
|
+
* Nuvei: Add address compoenents for all transactions [ankurspreedly] #5511
|
|
694
904
|
|
|
695
905
|
== Version 1.124.0 (October 28th, 2021)
|
|
696
906
|
* Worldpay: Add Support for Submerchant Data on Worldpay [almalee24] #4147
|
data/CONTRIBUTORS
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module ActiveMerchant
|
|
2
|
-
module Billing
|
|
1
|
+
module ActiveMerchant # :nodoc:
|
|
2
|
+
module Billing # :nodoc:
|
|
3
3
|
class ApplePayPaymentToken < PaymentToken
|
|
4
4
|
# This is a representation of the token object specified here:
|
|
5
5
|
# https://developer.apple.com/library/ios/documentation/PassKit/Reference/PKPaymentToken_Ref/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module ActiveMerchant
|
|
2
|
-
module Billing
|
|
1
|
+
module ActiveMerchant # :nodoc:
|
|
2
|
+
module Billing # :nodoc:
|
|
3
3
|
# The Check object is a plain old Ruby object, similar to CreditCard. It supports validation
|
|
4
4
|
# of necessary attributes such as checkholder's name, routing and account numbers, but it is
|
|
5
5
|
# not backed by any database.
|
|
@@ -60,6 +60,18 @@ module ActiveMerchant #:nodoc:
|
|
|
60
60
|
false
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
+
def network_token?
|
|
64
|
+
false
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def mobile_wallet?
|
|
68
|
+
false
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def encrypted_wallet?
|
|
72
|
+
false
|
|
73
|
+
end
|
|
74
|
+
|
|
63
75
|
def valid_routing_number?
|
|
64
76
|
digits = routing_number.to_s.split('').map(&:to_i).select { |d| (0..9).cover?(d) }
|
|
65
77
|
case digits.size
|
|
@@ -2,8 +2,8 @@ require 'time'
|
|
|
2
2
|
require 'date'
|
|
3
3
|
require 'active_merchant/billing/model'
|
|
4
4
|
|
|
5
|
-
module ActiveMerchant
|
|
6
|
-
module Billing
|
|
5
|
+
module ActiveMerchant # :nodoc:
|
|
6
|
+
module Billing # :nodoc:
|
|
7
7
|
# A +CreditCard+ object represents a physical credit card, and is capable of validating the various
|
|
8
8
|
# data associated with these.
|
|
9
9
|
#
|
|
@@ -42,6 +42,8 @@ module ActiveMerchant #:nodoc:
|
|
|
42
42
|
# * Verve
|
|
43
43
|
# * Tuya
|
|
44
44
|
# * UATP
|
|
45
|
+
# * Patagonia365
|
|
46
|
+
# * Tarjeta Sol
|
|
45
47
|
#
|
|
46
48
|
# For testing purposes, use the 'bogus' credit card brand. This skips the vast majority of
|
|
47
49
|
# validations, allowing you to focus on your core concerns until you're ready to be more concerned
|
|
@@ -138,6 +140,8 @@ module ActiveMerchant #:nodoc:
|
|
|
138
140
|
# * +'verve'+
|
|
139
141
|
# * +'tuya'+
|
|
140
142
|
# * +'uatp'+
|
|
143
|
+
# * +'patagonia_365'+
|
|
144
|
+
# * +'tarjeta_sol'+
|
|
141
145
|
#
|
|
142
146
|
# Or, if you wish to test your implementation, +'bogus'+.
|
|
143
147
|
#
|
|
@@ -363,6 +367,18 @@ module ActiveMerchant #:nodoc:
|
|
|
363
367
|
BRANDS_WITH_SPACES_IN_NUMBER.include?(self.class.brand?(self.number || number))
|
|
364
368
|
end
|
|
365
369
|
|
|
370
|
+
def network_token?
|
|
371
|
+
false
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
def mobile_wallet?
|
|
375
|
+
false
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
def encrypted_wallet?
|
|
379
|
+
false
|
|
380
|
+
end
|
|
381
|
+
|
|
366
382
|
private
|
|
367
383
|
|
|
368
384
|
def filter_number(value)
|
|
@@ -374,7 +390,7 @@ module ActiveMerchant #:nodoc:
|
|
|
374
390
|
value.to_s.gsub(regex, '')
|
|
375
391
|
end
|
|
376
392
|
|
|
377
|
-
def validate_essential_attributes
|
|
393
|
+
def validate_essential_attributes # :nodoc:
|
|
378
394
|
errors = []
|
|
379
395
|
|
|
380
396
|
if self.class.requires_name?
|
|
@@ -398,7 +414,7 @@ module ActiveMerchant #:nodoc:
|
|
|
398
414
|
errors
|
|
399
415
|
end
|
|
400
416
|
|
|
401
|
-
def validate_card_brand_and_number
|
|
417
|
+
def validate_card_brand_and_number # :nodoc:
|
|
402
418
|
errors = []
|
|
403
419
|
|
|
404
420
|
errors << [:brand, 'is invalid'] if !empty?(brand) && !CreditCard.card_companies.include?(brand)
|
|
@@ -414,7 +430,7 @@ module ActiveMerchant #:nodoc:
|
|
|
414
430
|
errors
|
|
415
431
|
end
|
|
416
432
|
|
|
417
|
-
def validate_verification_value
|
|
433
|
+
def validate_verification_value # :nodoc:
|
|
418
434
|
errors = []
|
|
419
435
|
|
|
420
436
|
if verification_value?
|
|
@@ -425,7 +441,7 @@ module ActiveMerchant #:nodoc:
|
|
|
425
441
|
errors
|
|
426
442
|
end
|
|
427
443
|
|
|
428
|
-
class ExpiryDate
|
|
444
|
+
class ExpiryDate # :nodoc:
|
|
429
445
|
attr_reader :month, :year
|
|
430
446
|
|
|
431
447
|
def initialize(month, year)
|
|
@@ -433,11 +449,11 @@ module ActiveMerchant #:nodoc:
|
|
|
433
449
|
@year = year.to_i
|
|
434
450
|
end
|
|
435
451
|
|
|
436
|
-
def expired?
|
|
452
|
+
def expired? # :nodoc:
|
|
437
453
|
Time.now.utc > expiration
|
|
438
454
|
end
|
|
439
455
|
|
|
440
|
-
def expiration
|
|
456
|
+
def expiration # :nodoc:
|
|
441
457
|
Time.utc(year, month, month_days, 23, 59, 59)
|
|
442
458
|
rescue ArgumentError
|
|
443
459
|
Time.at(0).utc
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module ActiveMerchant
|
|
2
|
-
module Billing
|
|
1
|
+
module ActiveMerchant # :nodoc:
|
|
2
|
+
module Billing # :nodoc:
|
|
3
3
|
module CreditCardFormatting
|
|
4
4
|
def expdate(credit_card)
|
|
5
5
|
"#{format(credit_card.month, :two_digits)}#{format(credit_card.year, :two_digits)}"
|
|
@@ -9,6 +9,13 @@ module ActiveMerchant #:nodoc:
|
|
|
9
9
|
format(credit_card.year, :four_digits) + format(credit_card.month, :two_digits)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
+
def strftime_yyyymmdd_last_day(credit_card)
|
|
13
|
+
year = credit_card.year.to_i
|
|
14
|
+
month = credit_card.month.to_i
|
|
15
|
+
last_day = Date.civil(year, month, -1).day
|
|
16
|
+
format(year, :four_digits) + format(month, :two_digits) + format(last_day, :two_digits)
|
|
17
|
+
end
|
|
18
|
+
|
|
12
19
|
# This method is used to format numerical information pertaining to credit cards.
|
|
13
20
|
#
|
|
14
21
|
# format(2005, :two_digits) # => "05"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'set'
|
|
2
2
|
|
|
3
|
-
module ActiveMerchant
|
|
4
|
-
module Billing
|
|
3
|
+
module ActiveMerchant # :nodoc:
|
|
4
|
+
module Billing # :nodoc:
|
|
5
5
|
# Convenience methods that can be included into a custom Credit Card object, such as an ActiveRecord based Credit Card object.
|
|
6
6
|
module CreditCardMethods
|
|
7
7
|
CARD_COMPANY_DETECTORS = {
|
|
@@ -43,7 +43,7 @@ module ActiveMerchant #:nodoc:
|
|
|
43
43
|
'creditel' => ->(num) { num =~ /^601933\d{10}$/ },
|
|
44
44
|
'confiable' => ->(num) { num =~ /^560718\d{10}$/ },
|
|
45
45
|
'synchrony' => ->(num) { num =~ /^700600\d{10}$/ },
|
|
46
|
-
'routex' => ->(num) { num =~ /^(700674|700676|700678)\d{13}$/ },
|
|
46
|
+
'routex' => ->(num) { num =~ /^(700674|700676|700678)\d{12,13}$/ },
|
|
47
47
|
'mada' => ->(num) { num&.size == 16 && in_bin_range?(num.slice(0, 6), MADA_RANGES) },
|
|
48
48
|
'bp_plus' => ->(num) { num =~ /^(7050\d\s\d{9}\s\d{3}$|705\d\s\d{8}\s\d{5}$)/ },
|
|
49
49
|
'passcard' => ->(num) { num =~ /^628026\d{10}$/ },
|
|
@@ -54,7 +54,9 @@ module ActiveMerchant #:nodoc:
|
|
|
54
54
|
'panal' => ->(num) { num&.size == 16 && in_bin_range?(num.slice(0, 6), PANAL_RANGES) },
|
|
55
55
|
'verve' => ->(num) { (16..19).cover?(num&.size) && in_bin_range?(num.slice(0, 6), VERVE_RANGES) },
|
|
56
56
|
'tuya' => ->(num) { num =~ /^588800\d{10}$/ },
|
|
57
|
-
'uatp' => ->(num) { num =~ /^(1175|1290)\d{11}$/ }
|
|
57
|
+
'uatp' => ->(num) { num =~ /^(1175|1290)\d{11}$/ },
|
|
58
|
+
'patagonia_365' => ->(num) { num =~ /^504656\d{10}$/ },
|
|
59
|
+
'tarjeta_sol' => ->(num) { num =~ /^504639\d{10}$/ }
|
|
58
60
|
}
|
|
59
61
|
|
|
60
62
|
SODEXO_NO_LUHN = ->(num) { num =~ /^(505864|505865)\d{10}$/ }
|
|
@@ -127,7 +129,7 @@ module ActiveMerchant #:nodoc:
|
|
|
127
129
|
501500 501623
|
|
128
130
|
501879 502113 502120 502121 502301
|
|
129
131
|
503175 503337 503645 503670
|
|
130
|
-
504310 504338 504363 504533 504587 504620
|
|
132
|
+
504310 504338 504363 504533 504587 504620 504738 504781 504910
|
|
131
133
|
505616
|
|
132
134
|
507001 507002 507004 507082 507090
|
|
133
135
|
560014 560565 561033
|
|
@@ -377,9 +379,9 @@ module ActiveMerchant #:nodoc:
|
|
|
377
379
|
# - http://www.beachnet.com/~hstiles/cardtype.html
|
|
378
380
|
def valid_number?(number)
|
|
379
381
|
valid_test_mode_card_number?(number) ||
|
|
380
|
-
valid_card_number_length?(number) &&
|
|
382
|
+
(valid_card_number_length?(number) &&
|
|
381
383
|
valid_card_number_characters?(brand?(number), number) &&
|
|
382
|
-
valid_by_algorithm?(brand?(number), number)
|
|
384
|
+
valid_by_algorithm?(brand?(number), number))
|
|
383
385
|
end
|
|
384
386
|
|
|
385
387
|
def card_companies
|
|
@@ -439,20 +441,20 @@ module ActiveMerchant #:nodoc:
|
|
|
439
441
|
|
|
440
442
|
private
|
|
441
443
|
|
|
442
|
-
def valid_card_number_length?(number)
|
|
444
|
+
def valid_card_number_length?(number) # :nodoc:
|
|
443
445
|
return false if number.nil?
|
|
444
446
|
|
|
445
447
|
number.length >= 12
|
|
446
448
|
end
|
|
447
449
|
|
|
448
|
-
def valid_card_number_characters?(brand, number)
|
|
450
|
+
def valid_card_number_characters?(brand, number) # :nodoc:
|
|
449
451
|
return false if number.nil?
|
|
450
452
|
return number =~ /\A[0-9 ]+\Z/ if brand == 'bp_plus'
|
|
451
453
|
|
|
452
454
|
!number.match(/\D/)
|
|
453
455
|
end
|
|
454
456
|
|
|
455
|
-
def valid_test_mode_card_number?(number)
|
|
457
|
+
def valid_test_mode_card_number?(number) # :nodoc:
|
|
456
458
|
ActiveMerchant::Billing::Base.test? &&
|
|
457
459
|
%w[1 2 3 success failure error].include?(number)
|
|
458
460
|
end
|
|
@@ -461,10 +463,10 @@ module ActiveMerchant #:nodoc:
|
|
|
461
463
|
SODEXO_NO_LUHN.call(numbers)
|
|
462
464
|
end
|
|
463
465
|
|
|
464
|
-
def valid_by_algorithm?(brand, numbers)
|
|
466
|
+
def valid_by_algorithm?(brand, numbers) # :nodoc:
|
|
465
467
|
case brand
|
|
466
468
|
when 'naranja'
|
|
467
|
-
valid_naranja_algo?(numbers)
|
|
469
|
+
valid_naranja_algo?(numbers) || valid_luhn?(numbers)
|
|
468
470
|
when 'creditel'
|
|
469
471
|
valid_creditel_algo?(numbers)
|
|
470
472
|
when 'alia', 'confiable', 'maestro_no_luhn', 'anda', 'tarjeta-d', 'hipercard'
|
|
@@ -508,7 +510,7 @@ module ActiveMerchant #:nodoc:
|
|
|
508
510
|
# Checks the validity of a card number by use of the Luhn Algorithm.
|
|
509
511
|
# Please see http://en.wikipedia.org/wiki/Luhn_algorithm for details.
|
|
510
512
|
# This implementation is from the luhn_checksum gem, https://github.com/zendesk/luhn_checksum.
|
|
511
|
-
def valid_luhn?(numbers)
|
|
513
|
+
def valid_luhn?(numbers) # :nodoc:
|
|
512
514
|
sum = 0
|
|
513
515
|
|
|
514
516
|
odd = true
|
|
@@ -547,7 +549,7 @@ module ActiveMerchant #:nodoc:
|
|
|
547
549
|
end
|
|
548
550
|
|
|
549
551
|
# Checks the validity of a card number by use of specific algorithms
|
|
550
|
-
def valid_naranja_algo?(numbers)
|
|
552
|
+
def valid_naranja_algo?(numbers) # :nodoc:
|
|
551
553
|
num_array = numbers.to_s.chars.map(&:to_i)
|
|
552
554
|
multipliers = [4, 3, 2, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
|
|
553
555
|
num_sum = num_array[0..14].zip(multipliers).map { |a, b| a * b }.reduce(:+)
|
|
@@ -556,7 +558,7 @@ module ActiveMerchant #:nodoc:
|
|
|
556
558
|
final_num == num_array[15]
|
|
557
559
|
end
|
|
558
560
|
|
|
559
|
-
def valid_creditel_algo?(numbers)
|
|
561
|
+
def valid_creditel_algo?(numbers) # :nodoc:
|
|
560
562
|
num_array = numbers.to_s.chars.map(&:to_i)
|
|
561
563
|
multipliers = [5, 4, 3, 2, 1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9]
|
|
562
564
|
num_sum = num_array[0..14].zip(multipliers).map { |a, b| a * b }.reduce(:+)
|
|
@@ -2,8 +2,8 @@ require 'net/http'
|
|
|
2
2
|
require 'net/https'
|
|
3
3
|
require 'active_merchant/billing/response'
|
|
4
4
|
|
|
5
|
-
module ActiveMerchant
|
|
6
|
-
module Billing
|
|
5
|
+
module ActiveMerchant # :nodoc:
|
|
6
|
+
module Billing # :nodoc:
|
|
7
7
|
#
|
|
8
8
|
# == Description
|
|
9
9
|
# The Gateway class is the base class for all ActiveMerchant gateway implementations.
|
|
@@ -55,6 +55,7 @@ module ActiveMerchant #:nodoc:
|
|
|
55
55
|
class Gateway
|
|
56
56
|
include PostsData
|
|
57
57
|
include CreditCardFormatting
|
|
58
|
+
include Versionable
|
|
58
59
|
|
|
59
60
|
CREDIT_DEPRECATION_MESSAGE = 'Support for using credit to refund existing transactions is deprecated and will be removed from a future release of ActiveMerchant. Please use the refund method instead.'
|
|
60
61
|
RECURRING_DEPRECATION_MESSAGE = 'Recurring functionality in ActiveMerchant is deprecated and will be removed in a future version. Please contact the ActiveMerchant maintainers if you have an interest in taking ownership of a separate gem that continues support for it.'
|
|
@@ -315,6 +316,16 @@ module ActiveMerchant #:nodoc:
|
|
|
315
316
|
[first_name, last_name]
|
|
316
317
|
end
|
|
317
318
|
|
|
319
|
+
def format_name(str = '')
|
|
320
|
+
return nil unless str.respond_to?(:force_encoding)
|
|
321
|
+
|
|
322
|
+
str = str.force_encoding('utf-8').encode
|
|
323
|
+
emoji_regex = /[\u{1f600}-\u{1f64f}\u{2702}-\u{27b0}\u{1f680}-\u{1f6ff}\u{24C2}-\u{1F251}\u{1f300}-\u{1f5ff}]/
|
|
324
|
+
emoticon_regex = /[:;=8xX]-?[)(DPpO3]/
|
|
325
|
+
str = str.gsub(emoji_regex, '').gsub(emoticon_regex, '').strip
|
|
326
|
+
I18n.transliterate(str).gsub(/[^\w\s]/, '')
|
|
327
|
+
end
|
|
328
|
+
|
|
318
329
|
def split_address(full_address)
|
|
319
330
|
address_parts = (full_address || '').split
|
|
320
331
|
return [nil, nil] if address_parts.size == 0
|