activemerchant 1.107.2 → 1.110.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +73 -0
- data/README.md +3 -3
- data/lib/active_merchant/billing/base.rb +0 -13
- data/lib/active_merchant/billing/check.rb +1 -1
- data/lib/active_merchant/billing/credit_card.rb +2 -0
- data/lib/active_merchant/billing/credit_card_methods.rb +9 -6
- data/lib/active_merchant/billing/gateways/adyen.rb +18 -12
- data/lib/active_merchant/billing/gateways/allied_wallet.rb +2 -2
- data/lib/active_merchant/billing/gateways/authorize_net.rb +8 -8
- data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +3 -3
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +3 -3
- data/lib/active_merchant/billing/gateways/axcessms.rb +1 -1
- data/lib/active_merchant/billing/gateways/balanced.rb +1 -1
- 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 +2 -2
- data/lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb +1 -1
- data/lib/active_merchant/billing/gateways/be2bill.rb +1 -1
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +4 -4
- data/lib/active_merchant/billing/gateways/blue_pay.rb +4 -4
- data/lib/active_merchant/billing/gateways/blue_snap.rb +1 -1
- data/lib/active_merchant/billing/gateways/borgun.rb +3 -3
- data/lib/active_merchant/billing/gateways/bpoint.rb +1 -1
- data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +1 -1
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +84 -35
- 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 +1 -1
- data/lib/active_merchant/billing/gateways/card_save.rb +1 -1
- data/lib/active_merchant/billing/gateways/card_stream.rb +4 -4
- data/lib/active_merchant/billing/gateways/cardknox.rb +4 -4
- data/lib/active_merchant/billing/gateways/cardprocess.rb +1 -1
- data/lib/active_merchant/billing/gateways/cashnet.rb +1 -1
- data/lib/active_merchant/billing/gateways/cecabank.rb +1 -1
- data/lib/active_merchant/billing/gateways/cenpos.rb +12 -12
- data/lib/active_merchant/billing/gateways/checkout.rb +3 -3
- data/lib/active_merchant/billing/gateways/checkout_v2.rb +2 -2
- data/lib/active_merchant/billing/gateways/citrus_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/clearhaus.rb +4 -4
- data/lib/active_merchant/billing/gateways/commercegate.rb +1 -1
- data/lib/active_merchant/billing/gateways/conekta.rb +1 -1
- data/lib/active_merchant/billing/gateways/creditcall.rb +1 -1
- data/lib/active_merchant/billing/gateways/credorax.rb +7 -3
- data/lib/active_merchant/billing/gateways/ct_payment.rb +2 -2
- data/lib/active_merchant/billing/gateways/culqi.rb +1 -1
- data/lib/active_merchant/billing/gateways/cyber_source.rb +72 -23
- data/lib/active_merchant/billing/gateways/d_local.rb +24 -8
- data/lib/active_merchant/billing/gateways/data_cash.rb +1 -1
- data/lib/active_merchant/billing/gateways/decidir.rb +24 -0
- data/lib/active_merchant/billing/gateways/dibs.rb +2 -2
- data/lib/active_merchant/billing/gateways/digitzs.rb +2 -2
- data/lib/active_merchant/billing/gateways/ebanx.rb +6 -4
- data/lib/active_merchant/billing/gateways/efsnet.rb +2 -2
- data/lib/active_merchant/billing/gateways/elavon.rb +56 -9
- data/lib/active_merchant/billing/gateways/element.rb +16 -8
- data/lib/active_merchant/billing/gateways/epay.rb +3 -3
- data/lib/active_merchant/billing/gateways/evo_ca.rb +1 -1
- data/lib/active_merchant/billing/gateways/eway.rb +1 -1
- data/lib/active_merchant/billing/gateways/eway_managed.rb +1 -1
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +2 -2
- data/lib/active_merchant/billing/gateways/exact.rb +3 -3
- data/lib/active_merchant/billing/gateways/ezic.rb +1 -1
- data/lib/active_merchant/billing/gateways/fat_zebra.rb +4 -4
- data/lib/active_merchant/billing/gateways/federated_canada.rb +1 -1
- data/lib/active_merchant/billing/gateways/finansbank.rb +2 -2
- data/lib/active_merchant/billing/gateways/first_giving.rb +1 -1
- data/lib/active_merchant/billing/gateways/first_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +5 -5
- data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +12 -4
- data/lib/active_merchant/billing/gateways/flo2cash.rb +10 -10
- data/lib/active_merchant/billing/gateways/forte.rb +9 -8
- data/lib/active_merchant/billing/gateways/garanti.rb +2 -2
- data/lib/active_merchant/billing/gateways/global_collect.rb +5 -5
- data/lib/active_merchant/billing/gateways/global_transport.rb +1 -1
- data/lib/active_merchant/billing/gateways/hdfc.rb +9 -9
- data/lib/active_merchant/billing/gateways/hps.rb +3 -3
- data/lib/active_merchant/billing/gateways/iats_payments.rb +2 -2
- data/lib/active_merchant/billing/gateways/inspire.rb +1 -1
- data/lib/active_merchant/billing/gateways/instapay.rb +1 -1
- data/lib/active_merchant/billing/gateways/ipp.rb +1 -1
- data/lib/active_merchant/billing/gateways/iridium.rb +3 -3
- data/lib/active_merchant/billing/gateways/itransact.rb +1 -1
- data/lib/active_merchant/billing/gateways/iveri.rb +2 -2
- data/lib/active_merchant/billing/gateways/ixopay.rb +1 -1
- data/lib/active_merchant/billing/gateways/jetpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/jetpay_v2.rb +2 -2
- data/lib/active_merchant/billing/gateways/komoju.rb +1 -1
- data/lib/active_merchant/billing/gateways/kushki.rb +4 -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 +10 -5
- data/lib/active_merchant/billing/gateways/maxipago.rb +2 -2
- data/lib/active_merchant/billing/gateways/mercado_pago.rb +12 -6
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +1 -1
- data/lib/active_merchant/billing/gateways/merchant_one.rb +2 -2
- data/lib/active_merchant/billing/gateways/merchant_partners.rb +1 -1
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +1 -1
- data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +1 -1
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +2 -2
- data/lib/active_merchant/billing/gateways/mercury.rb +4 -4
- data/lib/active_merchant/billing/gateways/metrics_global.rb +1 -1
- data/lib/active_merchant/billing/gateways/micropayment.rb +2 -2
- data/lib/active_merchant/billing/gateways/migs.rb +1 -1
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +1 -1
- data/lib/active_merchant/billing/gateways/monei.rb +2 -2
- data/lib/active_merchant/billing/gateways/moneris.rb +17 -17
- data/lib/active_merchant/billing/gateways/money_movers.rb +1 -1
- data/lib/active_merchant/billing/gateways/mundipagg.rb +1 -1
- data/lib/active_merchant/billing/gateways/nab_transact.rb +2 -2
- data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/net_registry.rb +2 -2
- data/lib/active_merchant/billing/gateways/netaxept.rb +3 -3
- data/lib/active_merchant/billing/gateways/netbanx.rb +51 -23
- 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 +1 -1
- data/lib/active_merchant/billing/gateways/nmi.rb +4 -4
- data/lib/active_merchant/billing/gateways/ogone.rb +2 -2
- data/lib/active_merchant/billing/gateways/omise.rb +1 -1
- data/lib/active_merchant/billing/gateways/openpay.rb +1 -1
- data/lib/active_merchant/billing/gateways/opp.rb +2 -2
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +4 -4
- data/lib/active_merchant/billing/gateways/orbital.rb +49 -7
- data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +1 -1
- data/lib/active_merchant/billing/gateways/pac_net_raven.rb +1 -1
- data/lib/active_merchant/billing/gateways/pagarme.rb +2 -2
- data/lib/active_merchant/billing/gateways/pago_facil.rb +1 -1
- data/lib/active_merchant/billing/gateways/pay_conex.rb +1 -1
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_hub.rb +1 -1
- data/lib/active_merchant/billing/gateways/pay_junction.rb +3 -3
- data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_secure.rb +1 -1
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +3 -3
- data/lib/active_merchant/billing/gateways/payeezy.rb +2 -2
- data/lib/active_merchant/billing/gateways/payex.rb +13 -13
- data/lib/active_merchant/billing/gateways/payflow.rb +5 -5
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +2 -2
- data/lib/active_merchant/billing/gateways/payflow_uk.rb +1 -1
- data/lib/active_merchant/billing/gateways/payment_express.rb +1 -1
- data/lib/active_merchant/billing/gateways/paymentez.rb +1 -1
- data/lib/active_merchant/billing/gateways/paymill.rb +1 -1
- data/lib/active_merchant/billing/gateways/paypal.rb +2 -2
- data/lib/active_merchant/billing/gateways/paypal_ca.rb +1 -1
- data/lib/active_merchant/billing/gateways/payscout.rb +1 -1
- data/lib/active_merchant/billing/gateways/paystation.rb +1 -1
- data/lib/active_merchant/billing/gateways/payu_in.rb +1 -1
- data/lib/active_merchant/billing/gateways/payu_latam.rb +7 -8
- data/lib/active_merchant/billing/gateways/payway.rb +1 -1
- data/lib/active_merchant/billing/gateways/pin.rb +2 -2
- data/lib/active_merchant/billing/gateways/plugnpay.rb +5 -5
- data/lib/active_merchant/billing/gateways/pro_pay.rb +2 -2
- data/lib/active_merchant/billing/gateways/psigate.rb +1 -1
- data/lib/active_merchant/billing/gateways/psl_card.rb +2 -2
- data/lib/active_merchant/billing/gateways/qbms.rb +1 -1
- data/lib/active_merchant/billing/gateways/quantum.rb +4 -4
- data/lib/active_merchant/billing/gateways/quickbooks.rb +6 -6
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_common.rb +3 -3
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +4 -4
- data/lib/active_merchant/billing/gateways/qvalent.rb +1 -1
- data/lib/active_merchant/billing/gateways/realex.rb +11 -4
- data/lib/active_merchant/billing/gateways/redsys.rb +5 -5
- data/lib/active_merchant/billing/gateways/s5.rb +1 -1
- data/lib/active_merchant/billing/gateways/safe_charge.rb +2 -2
- data/lib/active_merchant/billing/gateways/sage.rb +3 -3
- data/lib/active_merchant/billing/gateways/sage_pay.rb +3 -3
- data/lib/active_merchant/billing/gateways/sallie_mae.rb +1 -1
- data/lib/active_merchant/billing/gateways/secure_net.rb +1 -1
- data/lib/active_merchant/billing/gateways/secure_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +2 -2
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +2 -2
- data/lib/active_merchant/billing/gateways/securion_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/skip_jack.rb +5 -5
- data/lib/active_merchant/billing/gateways/so_easy_pay.rb +7 -7
- data/lib/active_merchant/billing/gateways/spreedly_core.rb +1 -1
- data/lib/active_merchant/billing/gateways/stripe.rb +13 -8
- data/lib/active_merchant/billing/gateways/stripe_payment_intents.rb +46 -3
- data/lib/active_merchant/billing/gateways/swipe_checkout.rb +1 -1
- data/lib/active_merchant/billing/gateways/telr.rb +4 -4
- data/lib/active_merchant/billing/gateways/tns.rb +1 -1
- data/lib/active_merchant/billing/gateways/trans_first.rb +2 -2
- data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +1 -1
- data/lib/active_merchant/billing/gateways/transact_pro.rb +3 -3
- data/lib/active_merchant/billing/gateways/transax.rb +1 -1
- data/lib/active_merchant/billing/gateways/trexle.rb +2 -2
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +5 -5
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +6 -6
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +1 -1
- data/lib/active_merchant/billing/gateways/vanco.rb +1 -1
- data/lib/active_merchant/billing/gateways/verifi.rb +3 -3
- data/lib/active_merchant/billing/gateways/viaklix.rb +1 -1
- data/lib/active_merchant/billing/gateways/visanet_peru.rb +3 -3
- data/lib/active_merchant/billing/gateways/webpay.rb +1 -1
- data/lib/active_merchant/billing/gateways/wepay.rb +2 -2
- data/lib/active_merchant/billing/gateways/wirecard.rb +1 -1
- data/lib/active_merchant/billing/gateways/world_net.rb +35 -35
- data/lib/active_merchant/billing/gateways/worldpay.rb +8 -8
- data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +1 -1
- data/lib/active_merchant/billing/gateways/worldpay_us.rb +1 -1
- data/lib/active_merchant/connection.rb +40 -42
- data/lib/active_merchant/network_connection_retries.rb +10 -12
- data/lib/active_merchant/version.rb +1 -1
- data/lib/support/gateway_support.rb +1 -1
- metadata +36 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 947d711ce2e079aee4a485b32b4ba5349973461854026135c36192ed4b510ce2
|
4
|
+
data.tar.gz: bf6ac95e994f6f7aaa22543bdc6cd0ef36e373b3e7b06b249d931a91a11b9d31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d6745f7228a6b068db47d588b3e1d4770d6399aa45fa2ffe74671259d4945bc82fc6cfd7a943fd7b19fd2c8c9ed4e0fb1df76f1fdbf56fee1f01ca316e2ac07
|
7
|
+
data.tar.gz: 214fe490b01b7b3389137a30641e4fc49df892bb769bedecdf82ac477481670b89026287aa68a8aaad87b283dbf2a1ccc0b55533ccb03b744845352baff46a0f
|
data/CHANGELOG
CHANGED
@@ -2,6 +2,78 @@
|
|
2
2
|
|
3
3
|
== HEAD
|
4
4
|
|
5
|
+
== Version 1.110.0
|
6
|
+
* FirstData e4 v27+: Strip linebreaks from address [curiousepic] #3693
|
7
|
+
* Adyen: Change shopper_email to email and shopper_ip to ip [rikterbeek] #3675
|
8
|
+
* FirstData e4 v27+ Fix strip_line_breaks method [carrigan] #3695
|
9
|
+
* Cybersource: Set authorization on the response even when in fraud review [pi3r] #3701
|
10
|
+
* Cybersource: Add fields to override stored creds [leila-alderman] #3689
|
11
|
+
* Cybersource: Conditionally find stored credentials [therufs] #3696 #3697
|
12
|
+
* Cybersource: Update logic to send cavv as xid for 3DS2 [douglas] #3699
|
13
|
+
* Credorax: Default 3ds_browsercolordepth to 32 when passed as 30 [britth] #3700
|
14
|
+
|
15
|
+
== Version 1.109.0
|
16
|
+
* Remove reference to `Billing::Integrations` [pi3r] #3692
|
17
|
+
* DLocal: Handle nil address1 [molbrown] #3661
|
18
|
+
* Braintree: Add travel and lodging fields [leila-alderman] #3668
|
19
|
+
* Stripe: strict_encode64 api key [britth] #3672
|
20
|
+
* Stripe PI: Implement verify action [leila-alderman] #3662
|
21
|
+
* Stripe, Stripe Payment Intents: Update supported countries [britth] #3684
|
22
|
+
* Forte: Use underscore for unused arguments in test [wsmoak] #3605
|
23
|
+
* Add Alia card type [therufs] #3673
|
24
|
+
* Element: Fix unit tests [leila-alderman] #3676
|
25
|
+
* PayU Latam: Fix store method [ccarruitero] #2590
|
26
|
+
* Adyen: Allow for executeThreeD to be passed as false [naashton] #3681
|
27
|
+
* WorldPay: Fix handling of `state` field for 3DS transactions [chinhle23] #3687
|
28
|
+
* Alia: Skip Luhn validation [therufs] #3673
|
29
|
+
* Diners Club: support 16 digit card numbers [therufs] #3682
|
30
|
+
* Cybersource: Update supported countries [britth] #3683
|
31
|
+
* Cybersource: pass reconciliation_id [therufs] #3688
|
32
|
+
* RuboCop: Fix Style/SpecialGlobalVars [leila-alderman] #3669
|
33
|
+
* RuboCop: Fix Style/StringLiteralsInInterpolation [leila-alderman] #3670
|
34
|
+
* RuboCop: Fix Layout/HeredocIndentation [leila-alderman] #3685
|
35
|
+
* RuboCop: Fix Gemspec/OrderedDependencies [leila-alderman] #3679
|
36
|
+
* RuboCop: Fix Style/TrailingUnderscoreVariable [leila-alderman] #3663
|
37
|
+
* RuboCop: Fix Style/WordArray [leila-alderman] #3664
|
38
|
+
* RuboCop: Fix Style/SymbolArray [leila-alderman] #3665
|
39
|
+
* Mercado-Pago: Notification url GSF [cdmackeyfree] #3678
|
40
|
+
* Credorax: Update logic for setting 3ds_homephonecountry [britth] #3691
|
41
|
+
|
42
|
+
== Version 1.108.0 (Jun 9, 2020)
|
43
|
+
* Cybersource: Send cavv as xid is xid is missing [pi3r] #3658
|
44
|
+
* Forte: Change default sec_code value to PPD [molbrown] #3653
|
45
|
+
* Elavon: Add merchant initiated unscheduled field [leila-alderman] #3647
|
46
|
+
* Decidir: Add aggregate data fields [leila-alderman] #3648
|
47
|
+
* Vantiv: Vantiv(Element): add option to send terminal id in transactions [cdmackeyfree] #3654
|
48
|
+
* Update supported Ruby and Rails versions [leila-alderman] #3656
|
49
|
+
* CI: Drop unused sudo: false Travis directive [olleolleolle] #3616
|
50
|
+
* PayU Latam: Prevent blank country in billing_address [britth] #3657
|
51
|
+
* DLocal: Fix address field names [molbrown] #3651
|
52
|
+
|
53
|
+
== Version 1.107.4 (Jun 2, 2020)
|
54
|
+
* Elavon: Implement true verify action [leila-alderman] #3610
|
55
|
+
* Vantiv Express: Implement true verify [leila-alderman] #3617
|
56
|
+
* Litle: Pass expiration data for basis payment method [therufs] #3606
|
57
|
+
* Stripe Payment Intents: Error handling and backwards compatibility within refund [britth] #3627
|
58
|
+
* HPS: Prevent errors when account_type or account_holder_type are nil [britth] #3628
|
59
|
+
* D Local: Handle invalid country code errors [curiousepic] #3626
|
60
|
+
* Stripe Payment Intents: Utilize execute_threed flag to determine success [britth] #3625
|
61
|
+
* Elavon: Add Level 3 fields [leila-alderman] #3632
|
62
|
+
* CyberSource: Stored Credential fixes [curiousepic] #3624
|
63
|
+
* CyberSource: Fix invalid and missing field tests [curiousepic] #3634
|
64
|
+
* CyberSource: Pass stored credentials with purchase [curiousepic] #3636
|
65
|
+
* Mercado Pago: Add payment_method_option_id field [schwarzgeist] #3635
|
66
|
+
* Stripe: Provide error when attempting an authorize with ACH [britth] #3633
|
67
|
+
* EBANX: Send original order id as merchant_payment_code metadata [miguelxpn] #3637
|
68
|
+
* Element: Add card_present_code field [schwarzgeist] #3623
|
69
|
+
* Orbital: Add support for Level 3 fields [leila-alderman] #3639
|
70
|
+
* Firstdata: Strip newline characters from address [bittercoder] #3643
|
71
|
+
* Forte: add sec_code attribute for echeck [wsmoak] #3640
|
72
|
+
|
73
|
+
== Version 1.107.3 (May 8, 2020)
|
74
|
+
* Realex: Ignore IPv6 unsupported addresses [elfassy] #3622
|
75
|
+
* Cybersource: Set partnerSolutionID after the business rules, fixes 500 error [pi3r] #3621
|
76
|
+
|
5
77
|
== Version 1.107.2 (May 7, 2020)
|
6
78
|
* Cybersource: Send a specific card brand commerceIndicator for 3DS [pi3r] #3620
|
7
79
|
* Cybersource: Send application_id as partnerSolutionID [pi3r] #3620
|
@@ -25,6 +97,7 @@
|
|
25
97
|
* iATS Payments: Add support for Customer Code payment method [molbrown] #3611
|
26
98
|
* HPS: Add Google Pay support [MSmedal] #3597
|
27
99
|
* Adyen: Parse appropriate message for 3DS2 authorization calls [britth] #3619
|
100
|
+
* CyberSource: Add error details response fields [schwarzgeist] #3629
|
28
101
|
|
29
102
|
== Version 1.107.1 (Apr 1, 2020)
|
30
103
|
* Add `allowed_push_host` to gemspec [mdeloupy]
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Active Merchant
|
2
|
-
[![Build Status](https://travis-ci.org/activemerchant/active_merchant.
|
3
|
-
[![Code Climate](https://codeclimate.com/github/activemerchant/active_merchant.
|
2
|
+
[![Build Status](https://travis-ci.org/activemerchant/active_merchant.svg?branch=master)](https://travis-ci.org/activemerchant/active_merchant)
|
3
|
+
[![Code Climate](https://codeclimate.com/github/activemerchant/active_merchant.svg)](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).
|
6
6
|
Shopify's requirements for a simple and unified API to access dozens of different payment
|
@@ -244,4 +244,4 @@ Functionality or APIs that are deprecated will be marked as such. Deprecated fun
|
|
244
244
|
|
245
245
|
## Ruby and Rails compatibility policies
|
246
246
|
|
247
|
-
Because Active Merchant is a payment library, it needs to take security seriously. For this reason, Active Merchant guarantees compatibility only with actively supported versions of Ruby and Rails. At the time of this writing, that means that Ruby 2.
|
247
|
+
Because Active Merchant is a payment library, it needs to take security seriously. For this reason, Active Merchant guarantees compatibility only with actively supported versions of Ruby and Rails. At the time of this writing, that means that Ruby 2.5+ and Rails 5.0+ are supported.
|
@@ -39,19 +39,6 @@ module ActiveMerchant #:nodoc:
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
# Return the matching integration module
|
43
|
-
# You can then get the notification from the module
|
44
|
-
# * <tt>bogus</tt>: Bogus - Does nothing (for testing)
|
45
|
-
# * <tt>chronopay</tt>: Chronopay
|
46
|
-
# * <tt>paypal</tt>: Paypal
|
47
|
-
#
|
48
|
-
# chronopay = ActiveMerchant::Billing::Base.integration('chronopay')
|
49
|
-
# notification = chronopay.notification(raw_post)
|
50
|
-
#
|
51
|
-
def self.integration(name)
|
52
|
-
Billing::Integrations.const_get(name.to_s.downcase.camelize)
|
53
|
-
end
|
54
|
-
|
55
42
|
# A check to see if we're in test mode
|
56
43
|
def self.test?
|
57
44
|
mode == :test
|
@@ -23,6 +23,7 @@ module ActiveMerchant #:nodoc:
|
|
23
23
|
# * Cabal
|
24
24
|
# * Naranja
|
25
25
|
# * UnionPay
|
26
|
+
# * Alia
|
26
27
|
#
|
27
28
|
# For testing purposes, use the 'bogus' credit card brand. This skips the vast majority of
|
28
29
|
# validations, allowing you to focus on your core concerns until you're ready to be more concerned
|
@@ -98,6 +99,7 @@ module ActiveMerchant #:nodoc:
|
|
98
99
|
# * +'cabal'+
|
99
100
|
# * +'naranja'+
|
100
101
|
# * +'union_pay'+
|
102
|
+
# * +'alia'+
|
101
103
|
#
|
102
104
|
# Or, if you wish to test your implementation, +'bogus'+.
|
103
105
|
#
|
@@ -10,7 +10,7 @@ module ActiveMerchant #:nodoc:
|
|
10
10
|
'discover' => ->(num) { num =~ /^(6011|65\d{2}|64[4-9]\d)\d{12,15}|(62\d{14,17})$/ },
|
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
|
-
'diners_club' => ->(num) { num =~ /^3(0[0-5]|[68]\d)\d{11}$/ },
|
13
|
+
'diners_club' => ->(num) { num =~ /^3(0[0-5]|[68]\d)\d{11,16}$/ },
|
14
14
|
'jcb' => ->(num) { num =~ /^35(28|29|[3-8]\d)\d{12}$/ },
|
15
15
|
'dankort' => ->(num) { num =~ /^5019\d{12}$/ },
|
16
16
|
'maestro' => lambda { |num|
|
@@ -21,6 +21,7 @@ module ActiveMerchant #:nodoc:
|
|
21
21
|
},
|
22
22
|
'forbrugsforeningen' => ->(num) { num =~ /^600722\d{10}$/ },
|
23
23
|
'sodexo' => ->(num) { num =~ /^(606071|603389|606070|606069|606068|600818)\d{10}$/ },
|
24
|
+
'alia' => ->(num) { num =~ /^(504997|505878|601030|601073|505874)\d{10}$/ },
|
24
25
|
'vr' => ->(num) { num =~ /^(627416|637036)\d{10}$/ },
|
25
26
|
'cabal' => ->(num) { num&.size == 16 && in_bin_range?(num.slice(0, 8), CABAL_RANGES) },
|
26
27
|
'unionpay' => ->(num) { (16..19).cover?(num&.size) && in_bin_range?(num.slice(0, 8), UNIONPAY_RANGES) },
|
@@ -57,10 +58,10 @@ module ActiveMerchant #:nodoc:
|
|
57
58
|
]
|
58
59
|
|
59
60
|
CARNET_BINS = Set.new(
|
60
|
-
[
|
61
|
-
|
62
|
-
|
63
|
-
|
61
|
+
%w[
|
62
|
+
286900 502275 606333 627535 636318 636379 639388
|
63
|
+
639484 639559 50633601 50633606 58877274 62753500
|
64
|
+
60462203 60462204 588772
|
64
65
|
]
|
65
66
|
)
|
66
67
|
|
@@ -71,7 +72,7 @@ module ActiveMerchant #:nodoc:
|
|
71
72
|
]
|
72
73
|
|
73
74
|
MAESTRO_BINS = Set.new(
|
74
|
-
[
|
75
|
+
%w[500033 581149]
|
75
76
|
)
|
76
77
|
|
77
78
|
# https://www.mastercard.us/content/dam/mccom/global/documents/mastercard-rules.pdf, page 73
|
@@ -297,6 +298,8 @@ module ActiveMerchant #:nodoc:
|
|
297
298
|
case brand
|
298
299
|
when 'naranja'
|
299
300
|
valid_naranja_algo?(numbers)
|
301
|
+
when 'alia'
|
302
|
+
true
|
300
303
|
else
|
301
304
|
valid_luhn?(numbers)
|
302
305
|
end
|
@@ -9,7 +9,7 @@ module ActiveMerchant #:nodoc:
|
|
9
9
|
self.supported_countries = %w(AT AU BE BG BR CH CY CZ DE DK EE ES FI FR GB GI GR HK HU IE IS IT LI LT LU LV MC MT MX NL NO PL PT RO SE SG SK SI US)
|
10
10
|
self.default_currency = 'USD'
|
11
11
|
self.currencies_without_fractions = %w(CVE DJF GNF IDR JPY KMF KRW PYG RWF UGX VND VUV XAF XOF XPF)
|
12
|
-
self.supported_cardtypes = [
|
12
|
+
self.supported_cardtypes = %i[visa master american_express diners_club jcb dankort maestro discover elo naranja cabal unionpay]
|
13
13
|
|
14
14
|
self.money_format = :cents
|
15
15
|
|
@@ -196,9 +196,6 @@ module ActiveMerchant #:nodoc:
|
|
196
196
|
|
197
197
|
def add_extra_data(post, payment, options)
|
198
198
|
post[:telephoneNumber] = options[:billing_address][:phone] if options.dig(:billing_address, :phone)
|
199
|
-
post[:shopperEmail] = options[:shopper_email] if options[:shopper_email]
|
200
|
-
post[:shopperIP] = options[:shopper_ip] if options[:shopper_ip]
|
201
|
-
post[:shopperStatement] = options[:shopper_statement] if options[:shopper_statement]
|
202
199
|
post[:fraudOffset] = options[:fraud_offset] if options[:fraud_offset]
|
203
200
|
post[:selectedBrand] = options[:selected_brand] if options[:selected_brand]
|
204
201
|
post[:selectedBrand] ||= NETWORK_TOKENIZATION_CARD_SOURCE[payment.source.to_s] if payment.is_a?(NetworkTokenizationCreditCard)
|
@@ -212,13 +209,22 @@ module ActiveMerchant #:nodoc:
|
|
212
209
|
post[:additionalData][:authorisationType] = options[:authorisation_type] if options[:authorisation_type]
|
213
210
|
post[:additionalData][:adjustAuthorisationData] = options[:adjust_authorisation_data] if options[:adjust_authorisation_data]
|
214
211
|
post[:additionalData][:industryUsage] = options[:industry_usage] if options[:industry_usage]
|
215
|
-
post[:additionalData][:updateShopperStatement] = options[:update_shopper_statement] if options[:update_shopper_statement]
|
216
212
|
post[:additionalData][:RequestedTestAcquirerResponseCode] = options[:requested_test_acquirer_response_code] if options[:requested_test_acquirer_response_code] && test?
|
217
213
|
post[:deviceFingerprint] = options[:device_fingerprint] if options[:device_fingerprint]
|
214
|
+
add_shopper_data(post, options)
|
218
215
|
add_risk_data(post, options)
|
219
216
|
add_shopper_reference(post, options)
|
220
217
|
end
|
221
218
|
|
219
|
+
def add_shopper_data(post, options)
|
220
|
+
post[:shopperEmail] = options[:email] if options[:email]
|
221
|
+
post[:shopperEmail] = options[:shopper_email] if options[:shopper_email]
|
222
|
+
post[:shopperIP] = options[:ip] if options[:ip]
|
223
|
+
post[:shopperIP] = options[:shopper_ip] if options[:shopper_ip]
|
224
|
+
post[:shopperStatement] = options[:shopper_statement] if options[:shopper_statement]
|
225
|
+
post[:additionalData][:updateShopperStatement] = options[:update_shopper_statement] if options[:update_shopper_statement]
|
226
|
+
end
|
227
|
+
|
222
228
|
def add_risk_data(post, options)
|
223
229
|
if (risk_data = options[:risk_data])
|
224
230
|
risk_data = Hash[risk_data.map { |k, v| ["riskdata.#{k}", v] }]
|
@@ -366,12 +372,12 @@ module ActiveMerchant #:nodoc:
|
|
366
372
|
end
|
367
373
|
|
368
374
|
def add_reference(post, authorization, options = {})
|
369
|
-
_, psp_reference,
|
375
|
+
_, psp_reference, = authorization.split('#')
|
370
376
|
post[:originalReference] = single_reference(authorization) || psp_reference
|
371
377
|
end
|
372
378
|
|
373
379
|
def add_original_reference(post, authorization, options = {})
|
374
|
-
original_psp_reference,
|
380
|
+
original_psp_reference, = authorization.split('#')
|
375
381
|
post[:originalReference] = single_reference(authorization) || original_psp_reference
|
376
382
|
end
|
377
383
|
|
@@ -418,10 +424,10 @@ module ActiveMerchant #:nodoc:
|
|
418
424
|
post[:additionalData][:scaExemption] = options[:sca_exemption] if options[:sca_exemption]
|
419
425
|
end
|
420
426
|
else
|
421
|
-
return unless options[:execute_threed] || options[:threed_dynamic]
|
427
|
+
return unless !options[:execute_threed].nil? || !options[:threed_dynamic].nil?
|
422
428
|
|
423
|
-
post[:browserInfo] = { userAgent: options[:user_agent], acceptHeader: options[:accept_header] }
|
424
|
-
post[:additionalData] = { executeThreeD:
|
429
|
+
post[:browserInfo] = { userAgent: options[:user_agent], acceptHeader: options[:accept_header] } if options[:execute_threed] || options[:threed_dynamic]
|
430
|
+
post[:additionalData] = { executeThreeD: options[:execute_threed] } if !options[:execute_threed].nil?
|
425
431
|
end
|
426
432
|
end
|
427
433
|
|
@@ -527,14 +533,14 @@ module ActiveMerchant #:nodoc:
|
|
527
533
|
end
|
528
534
|
|
529
535
|
def success_from(action, response, options)
|
530
|
-
if [
|
536
|
+
if %w[RedirectShopper ChallengeShopper].include?(response.dig('resultCode')) && !options[:execute_threed] && !options[:threed_dynamic]
|
531
537
|
response['refusalReason'] = 'Received unexpected 3DS authentication response. Use the execute_threed and/or threed_dynamic options to initiate a proper 3DS flow.'
|
532
538
|
return false
|
533
539
|
end
|
534
540
|
|
535
541
|
case action.to_s
|
536
542
|
when 'authorise', 'authorise3d'
|
537
|
-
[
|
543
|
+
%w[Authorised Received RedirectShopper].include?(response['resultCode'])
|
538
544
|
when 'capture', 'refund', 'cancel'
|
539
545
|
response['response'] == "[#{action}-received]"
|
540
546
|
when 'adjustAuthorisation'
|
@@ -9,8 +9,8 @@ module ActiveMerchant #:nodoc:
|
|
9
9
|
self.supported_countries = ['US']
|
10
10
|
self.default_currency = 'USD'
|
11
11
|
self.money_format = :dollars
|
12
|
-
self.supported_cardtypes = [
|
13
|
-
|
12
|
+
self.supported_cardtypes = %i[visa master american_express discover
|
13
|
+
diners_club jcb maestro]
|
14
14
|
|
15
15
|
def initialize(options={})
|
16
16
|
requires!(options, :site_id, :merchant_id, :token)
|
@@ -11,7 +11,7 @@ module ActiveMerchant
|
|
11
11
|
self.supported_countries = %w(AU CA US)
|
12
12
|
self.default_currency = 'USD'
|
13
13
|
self.money_format = :dollars
|
14
|
-
self.supported_cardtypes = [
|
14
|
+
self.supported_cardtypes = %i[visa master american_express discover diners_club jcb maestro]
|
15
15
|
|
16
16
|
self.homepage_url = 'http://www.authorize.net/'
|
17
17
|
self.display_name = 'Authorize.Net'
|
@@ -192,7 +192,7 @@ module ActiveMerchant
|
|
192
192
|
end
|
193
193
|
|
194
194
|
def unstore(authorization)
|
195
|
-
customer_profile_id,
|
195
|
+
customer_profile_id, = split_authorization(authorization)
|
196
196
|
|
197
197
|
delete_customer_profile(customer_profile_id)
|
198
198
|
end
|
@@ -311,7 +311,7 @@ module ActiveMerchant
|
|
311
311
|
end
|
312
312
|
|
313
313
|
def cim_refund(amount, authorization, options)
|
314
|
-
transaction_id, card_number,
|
314
|
+
transaction_id, card_number, = split_authorization(authorization)
|
315
315
|
|
316
316
|
commit(:cim_refund, options) do |xml|
|
317
317
|
add_order_id(xml, options)
|
@@ -331,7 +331,7 @@ module ActiveMerchant
|
|
331
331
|
end
|
332
332
|
|
333
333
|
def normal_refund(amount, authorization, options)
|
334
|
-
transaction_id, card_number,
|
334
|
+
transaction_id, card_number, = split_authorization(authorization)
|
335
335
|
|
336
336
|
commit(:refund) do |xml|
|
337
337
|
xml.transactionRequest do
|
@@ -488,7 +488,7 @@ module ActiveMerchant
|
|
488
488
|
|
489
489
|
def add_swipe_data(xml, credit_card)
|
490
490
|
TRACKS.each do |key, regex|
|
491
|
-
if regex.match(credit_card.track_data)
|
491
|
+
if regex.match?(credit_card.track_data)
|
492
492
|
@valid_track_data = true
|
493
493
|
xml.payment do
|
494
494
|
xml.trackData do
|
@@ -500,7 +500,7 @@ module ActiveMerchant
|
|
500
500
|
end
|
501
501
|
|
502
502
|
def add_token_payment_method(xml, token, options)
|
503
|
-
customer_profile_id, customer_payment_profile_id,
|
503
|
+
customer_profile_id, customer_payment_profile_id, = split_authorization(token)
|
504
504
|
customer_profile_id = options[:customer_profile_id] if options[:customer_profile_id]
|
505
505
|
customer_payment_profile_id = options[:customer_payment_profile_id] if options[:customer_payment_profile_id]
|
506
506
|
xml.customerProfileId(customer_profile_id)
|
@@ -755,7 +755,7 @@ module ActiveMerchant
|
|
755
755
|
end
|
756
756
|
|
757
757
|
def state_from(address, options)
|
758
|
-
if [
|
758
|
+
if %w[US CA].include?(address[:country])
|
759
759
|
address[:state] || 'NC'
|
760
760
|
else
|
761
761
|
address[:state] || 'n/a'
|
@@ -988,7 +988,7 @@ module ActiveMerchant
|
|
988
988
|
end
|
989
989
|
|
990
990
|
def transaction_id_from(authorization)
|
991
|
-
transaction_id,
|
991
|
+
transaction_id, = split_authorization(authorization)
|
992
992
|
transaction_id
|
993
993
|
end
|
994
994
|
|
@@ -31,8 +31,8 @@ module ActiveMerchant #:nodoc:
|
|
31
31
|
|
32
32
|
self.default_currency = 'USD'
|
33
33
|
|
34
|
-
self.supported_countries = [
|
35
|
-
self.supported_cardtypes = [
|
34
|
+
self.supported_countries = %w[US CA GB]
|
35
|
+
self.supported_cardtypes = %i[visa master american_express discover diners_club jcb]
|
36
36
|
self.homepage_url = 'http://www.authorize.net/'
|
37
37
|
self.display_name = 'Authorize.Net'
|
38
38
|
|
@@ -84,7 +84,7 @@ module ActiveMerchant #:nodoc:
|
|
84
84
|
# initial billing occurs) and the total number of billing <tt>:occurrences</tt> or payments for the subscription. (REQUIRED)
|
85
85
|
def recurring(money, creditcard, options={})
|
86
86
|
requires!(options, :interval, :duration, :billing_address)
|
87
|
-
requires!(options[:interval], :length, [
|
87
|
+
requires!(options[:interval], :length, %i[unit days months])
|
88
88
|
requires!(options[:duration], :start_date, :occurrences)
|
89
89
|
requires!(options[:billing_address], :first_name, :last_name)
|
90
90
|
|
@@ -81,7 +81,7 @@ module ActiveMerchant #:nodoc:
|
|
81
81
|
self.homepage_url = 'http://www.authorize.net/'
|
82
82
|
self.display_name = 'Authorize.Net CIM'
|
83
83
|
self.supported_countries = ['US']
|
84
|
-
self.supported_cardtypes = [
|
84
|
+
self.supported_cardtypes = %i[visa master american_express discover]
|
85
85
|
|
86
86
|
# Creates a new AuthorizeNetCimGateway
|
87
87
|
#
|
@@ -691,10 +691,10 @@ module ActiveMerchant #:nodoc:
|
|
691
691
|
add_order(xml, transaction[:order]) if transaction[:order].present?
|
692
692
|
|
693
693
|
end
|
694
|
-
if [
|
694
|
+
if %i[auth_capture auth_only capture_only].include?(transaction[:type])
|
695
695
|
xml.tag!('recurringBilling', transaction[:recurring_billing]) if transaction.has_key?(:recurring_billing)
|
696
696
|
end
|
697
|
-
tag_unless_blank(xml, 'cardCode', transaction[:card_code]) unless [
|
697
|
+
tag_unless_blank(xml, 'cardCode', transaction[:card_code]) unless %i[void refund prior_auth_capture].include?(transaction[:type])
|
698
698
|
end
|
699
699
|
end
|
700
700
|
end
|
@@ -8,7 +8,7 @@ module ActiveMerchant #:nodoc:
|
|
8
8
|
GI GR HR HU IE IL IM IS IT LI LT LU LV MC MT MX NL
|
9
9
|
NO PL PT RO RU SE SI SK TR US VA)
|
10
10
|
|
11
|
-
self.supported_cardtypes = [
|
11
|
+
self.supported_cardtypes = %i[visa master american_express discover jcb maestro]
|
12
12
|
|
13
13
|
self.homepage_url = 'http://www.axcessms.com/'
|
14
14
|
self.display_name = 'Axcess MS'
|
@@ -22,7 +22,7 @@ module ActiveMerchant #:nodoc:
|
|
22
22
|
self.live_url = 'https://api.balancedpayments.com'
|
23
23
|
|
24
24
|
self.supported_countries = ['US']
|
25
|
-
self.supported_cardtypes = [
|
25
|
+
self.supported_cardtypes = %i[visa master american_express discover]
|
26
26
|
self.homepage_url = 'https://www.balancedpayments.com/'
|
27
27
|
self.display_name = 'Balanced'
|
28
28
|
self.money_format = :cents
|
@@ -6,8 +6,8 @@ module ActiveMerchant #:nodoc:
|
|
6
6
|
self.live_url = 'https://www.bambora.co.nz/interface/api'
|
7
7
|
self.test_url = 'https://demo.bambora.co.nz/interface/api'
|
8
8
|
|
9
|
-
self.supported_countries = [
|
10
|
-
self.supported_cardtypes = [
|
9
|
+
self.supported_countries = %w[AU NZ]
|
10
|
+
self.supported_cardtypes = %i[visa master american_express diners_club jcb]
|
11
11
|
|
12
12
|
self.homepage_url = 'http://www.bambora.com/'
|
13
13
|
self.display_name = 'Bambora Asia-Pacific'
|