activemerchant 1.105.0 → 1.107.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +99 -1
- data/README.md +2 -2
- data/lib/active_merchant/billing/credit_card_methods.rb +12 -3
- data/lib/active_merchant/billing/gateway.rb +22 -22
- data/lib/active_merchant/billing/gateways/adyen.rb +18 -7
- data/lib/active_merchant/billing/gateways/allied_wallet.rb +2 -2
- data/lib/active_merchant/billing/gateways/authorize_net.rb +19 -19
- data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +11 -11
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +35 -35
- data/lib/active_merchant/billing/gateways/axcessms.rb +3 -3
- data/lib/active_merchant/billing/gateways/bambora_apac.rb +1 -1
- data/lib/active_merchant/billing/gateways/bank_frick.rb +1 -1
- data/lib/active_merchant/billing/gateways/banwire.rb +2 -2
- data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +5 -5
- data/lib/active_merchant/billing/gateways/be2bill.rb +4 -4
- data/lib/active_merchant/billing/gateways/beanstream.rb +1 -1
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +27 -27
- data/lib/active_merchant/billing/gateways/beanstream_interac.rb +1 -1
- data/lib/active_merchant/billing/gateways/blue_pay.rb +8 -8
- data/lib/active_merchant/billing/gateways/blue_snap.rb +5 -2
- data/lib/active_merchant/billing/gateways/bogus.rb +20 -20
- data/lib/active_merchant/billing/gateways/borgun.rb +17 -6
- data/lib/active_merchant/billing/gateways/bpoint.rb +1 -1
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +81 -77
- data/lib/active_merchant/billing/gateways/bridge_pay.rb +3 -3
- data/lib/active_merchant/billing/gateways/card_connect.rb +1 -1
- data/lib/active_merchant/billing/gateways/card_stream.rb +19 -19
- data/lib/active_merchant/billing/gateways/cc5.rb +7 -7
- data/lib/active_merchant/billing/gateways/cecabank.rb +3 -3
- data/lib/active_merchant/billing/gateways/cenpos.rb +3 -3
- data/lib/active_merchant/billing/gateways/checkout_v2.rb +20 -9
- data/lib/active_merchant/billing/gateways/clearhaus.rb +1 -1
- data/lib/active_merchant/billing/gateways/commercegate.rb +2 -2
- data/lib/active_merchant/billing/gateways/conekta.rb +1 -1
- data/lib/active_merchant/billing/gateways/creditcall.rb +4 -4
- data/lib/active_merchant/billing/gateways/ct_payment.rb +1 -1
- data/lib/active_merchant/billing/gateways/culqi.rb +2 -2
- data/lib/active_merchant/billing/gateways/cyber_source.rb +154 -91
- data/lib/active_merchant/billing/gateways/d_local.rb +4 -2
- data/lib/active_merchant/billing/gateways/data_cash.rb +33 -33
- data/lib/active_merchant/billing/gateways/decidir.rb +7 -2
- data/lib/active_merchant/billing/gateways/ebanx.rb +14 -2
- data/lib/active_merchant/billing/gateways/efsnet.rb +23 -23
- data/lib/active_merchant/billing/gateways/elavon.rb +70 -18
- data/lib/active_merchant/billing/gateways/element.rb +12 -4
- data/lib/active_merchant/billing/gateways/epay.rb +40 -40
- data/lib/active_merchant/billing/gateways/evo_ca.rb +11 -11
- data/lib/active_merchant/billing/gateways/eway.rb +3 -3
- data/lib/active_merchant/billing/gateways/eway_managed.rb +40 -40
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +7 -7
- data/lib/active_merchant/billing/gateways/exact.rb +11 -11
- data/lib/active_merchant/billing/gateways/fat_zebra.rb +3 -2
- data/lib/active_merchant/billing/gateways/federated_canada.rb +5 -5
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +21 -21
- data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +20 -20
- data/lib/active_merchant/billing/gateways/flo2cash.rb +4 -4
- data/lib/active_merchant/billing/gateways/forte.rb +8 -7
- data/lib/active_merchant/billing/gateways/garanti.rb +8 -8
- data/lib/active_merchant/billing/gateways/global_collect.rb +30 -24
- data/lib/active_merchant/billing/gateways/hdfc.rb +3 -3
- data/lib/active_merchant/billing/gateways/hps.rb +5 -3
- data/lib/active_merchant/billing/gateways/iats_payments.rb +32 -15
- data/lib/active_merchant/billing/gateways/inspire.rb +7 -7
- data/lib/active_merchant/billing/gateways/instapay.rb +3 -3
- data/lib/active_merchant/billing/gateways/ipp.rb +1 -1
- data/lib/active_merchant/billing/gateways/iridium.rb +12 -10
- data/lib/active_merchant/billing/gateways/itransact.rb +7 -7
- data/lib/active_merchant/billing/gateways/iveri.rb +6 -3
- data/lib/active_merchant/billing/gateways/ixopay.rb +22 -0
- data/lib/active_merchant/billing/gateways/jetpay.rb +4 -4
- data/lib/active_merchant/billing/gateways/jetpay_v2.rb +5 -5
- data/lib/active_merchant/billing/gateways/kushki.rb +34 -5
- data/lib/active_merchant/billing/gateways/latitude19.rb +2 -2
- data/lib/active_merchant/billing/gateways/linkpoint.rb +62 -62
- data/lib/active_merchant/billing/gateways/litle.rb +8 -3
- data/lib/active_merchant/billing/gateways/mastercard.rb +2 -2
- data/lib/active_merchant/billing/gateways/mercado_pago.rb +1 -0
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +5 -5
- data/lib/active_merchant/billing/gateways/merchant_one.rb +2 -2
- data/lib/active_merchant/billing/gateways/merchant_partners.rb +4 -4
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +12 -12
- data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +11 -11
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +12 -2
- data/lib/active_merchant/billing/gateways/mercury.rb +9 -9
- data/lib/active_merchant/billing/gateways/metrics_global.rb +15 -15
- data/lib/active_merchant/billing/gateways/migs.rb +13 -13
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +7 -7
- data/lib/active_merchant/billing/gateways/monei.rb +19 -19
- data/lib/active_merchant/billing/gateways/moneris.rb +10 -10
- data/lib/active_merchant/billing/gateways/money_movers.rb +5 -5
- data/lib/active_merchant/billing/gateways/mundipagg.rb +1 -1
- data/lib/active_merchant/billing/gateways/nab_transact.rb +15 -15
- data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/net_registry.rb +6 -6
- data/lib/active_merchant/billing/gateways/netaxept.rb +4 -4
- data/lib/active_merchant/billing/gateways/netbanx.rb +14 -14
- data/lib/active_merchant/billing/gateways/netbilling.rb +12 -12
- data/lib/active_merchant/billing/gateways/netpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/network_merchants.rb +5 -5
- data/lib/active_merchant/billing/gateways/ogone.rb +7 -7
- data/lib/active_merchant/billing/gateways/openpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/opp.rb +13 -7
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +13 -9
- data/lib/active_merchant/billing/gateways/orbital.rb +54 -12
- data/lib/active_merchant/billing/gateways/pac_net_raven.rb +7 -7
- data/lib/active_merchant/billing/gateways/pay_conex.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +16 -16
- data/lib/active_merchant/billing/gateways/pay_junction.rb +16 -16
- data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +18 -2
- data/lib/active_merchant/billing/gateways/pay_secure.rb +6 -6
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +36 -36
- data/lib/active_merchant/billing/gateways/payflow.rb +7 -7
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +12 -12
- data/lib/active_merchant/billing/gateways/payflow_express.rb +4 -4
- data/lib/active_merchant/billing/gateways/payment_express.rb +9 -9
- data/lib/active_merchant/billing/gateways/paymill.rb +3 -3
- data/lib/active_merchant/billing/gateways/paypal.rb +1 -1
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +5 -5
- data/lib/active_merchant/billing/gateways/paypal_express_common.rb +1 -1
- data/lib/active_merchant/billing/gateways/payscout.rb +5 -5
- data/lib/active_merchant/billing/gateways/paystation.rb +2 -2
- data/lib/active_merchant/billing/gateways/payu_latam.rb +3 -3
- data/lib/active_merchant/billing/gateways/payway.rb +12 -12
- data/lib/active_merchant/billing/gateways/pin.rb +16 -16
- data/lib/active_merchant/billing/gateways/plugnpay.rb +10 -10
- data/lib/active_merchant/billing/gateways/psigate.rb +26 -26
- data/lib/active_merchant/billing/gateways/psl_card.rb +4 -4
- data/lib/active_merchant/billing/gateways/qbms.rb +23 -23
- data/lib/active_merchant/billing/gateways/quantum.rb +4 -4
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_common.rb +95 -95
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +9 -9
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +2 -2
- data/lib/active_merchant/billing/gateways/qvalent.rb +1 -1
- data/lib/active_merchant/billing/gateways/realex.rb +17 -10
- data/lib/active_merchant/billing/gateways/redsys.rb +24 -16
- data/lib/active_merchant/billing/gateways/safe_charge.rb +1 -1
- data/lib/active_merchant/billing/gateways/sage.rb +10 -10
- data/lib/active_merchant/billing/gateways/sage_pay.rb +35 -35
- data/lib/active_merchant/billing/gateways/sallie_mae.rb +2 -2
- data/lib/active_merchant/billing/gateways/secure_net.rb +9 -9
- data/lib/active_merchant/billing/gateways/secure_pay.rb +13 -13
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +16 -16
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +2 -2
- data/lib/active_merchant/billing/gateways/skip_jack.rb +8 -8
- data/lib/active_merchant/billing/gateways/smart_ps.rb +16 -16
- data/lib/active_merchant/billing/gateways/so_easy_pay.rb +6 -6
- data/lib/active_merchant/billing/gateways/spreedly_core.rb +4 -4
- data/lib/active_merchant/billing/gateways/stripe.rb +15 -10
- data/lib/active_merchant/billing/gateways/stripe_payment_intents.rb +50 -9
- data/lib/active_merchant/billing/gateways/swipe_checkout.rb +2 -2
- data/lib/active_merchant/billing/gateways/trans_first.rb +4 -4
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +19 -19
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +110 -110
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +29 -29
- data/lib/active_merchant/billing/gateways/verifi.rb +10 -10
- data/lib/active_merchant/billing/gateways/viaklix.rb +6 -6
- data/lib/active_merchant/billing/gateways/visanet_peru.rb +6 -6
- data/lib/active_merchant/billing/gateways/webpay.rb +2 -2
- data/lib/active_merchant/billing/gateways/wirecard.rb +6 -6
- data/lib/active_merchant/billing/gateways/worldpay.rb +22 -20
- data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +32 -32
- data/lib/active_merchant/billing/gateways/worldpay_us.rb +2 -2
- data/lib/active_merchant/billing/network_tokenization_credit_card.rb +1 -1
- data/lib/active_merchant/connection.rb +1 -1
- data/lib/active_merchant/network_connection_retries.rb +3 -3
- data/lib/active_merchant/post_data.rb +1 -1
- data/lib/active_merchant/version.rb +1 -1
- data/lib/certs/cacert.pem +75 -0
- data/lib/support/ssl_verify.rb +2 -2
- data/lib/support/ssl_version.rb +2 -2
- metadata +4 -4
- data/lib/active_merchant/billing/gateways/moneris_us.rb +0 -352
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df13edc6e4df78bc1172d0d699d41e21c6b9941ade9b2594602009cc4b78de66
|
4
|
+
data.tar.gz: 18c2f0264c1ae1edc34a6da0bf4c1244aa5135dfa72cef2c67f53cc4ea6c43a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e0359cf05cd83b90ef3621b5c9656011e9361f610b7b0b381ee6af749358f2d597c74aace2a63a18d660a7d1842ca8b509b2a18918a637cc2b2ff2206b378e5
|
7
|
+
data.tar.gz: eeb3bc4faa2b4f4c25115715c16d520f39b5f8eade99c8dc3091b2347839b9fa9fb785d90bcb0b0851c05282d3bebd2ad4f19b070a1a13f38c43d363d7ea089f
|
data/CHANGELOG
CHANGED
@@ -1,5 +1,103 @@
|
|
1
1
|
= ActiveMerchant CHANGELOG
|
2
2
|
|
3
|
+
== HEAD
|
4
|
+
|
5
|
+
== Version 1.107.4 (Jun 2, 2020)
|
6
|
+
* Elavon: Implement true verify action [leila-alderman] #3610
|
7
|
+
* Vantiv Express: Implement true verify [leila-alderman] #3617
|
8
|
+
* Litle: Pass expiration data for basis payment method [therufs] #3606
|
9
|
+
* Stripe Payment Intents: Error handling and backwards compatibility within refund [britth] #3627
|
10
|
+
* HPS: Prevent errors when account_type or account_holder_type are nil [britth] #3628
|
11
|
+
* D Local: Handle invalid country code errors [curiousepic] #3626
|
12
|
+
* Stripe Payment Intents: Utilize execute_threed flag to determine success [britth] #3625
|
13
|
+
* Elavon: Add Level 3 fields [leila-alderman] #3632
|
14
|
+
* CyberSource: Stored Credential fixes [curiousepic] #3624
|
15
|
+
* CyberSource: Fix invalid and missing field tests [curiousepic] #3634
|
16
|
+
* CyberSource: Pass stored credentials with purchase [curiousepic] #3636
|
17
|
+
* Mercado Pago: Add payment_method_option_id field [schwarzgeist] #3635
|
18
|
+
* Stripe: Provide error when attempting an authorize with ACH [britth] #3633
|
19
|
+
* EBANX: Send original order id as merchant_payment_code metadata [miguelxpn] #3637
|
20
|
+
* Element: Add card_present_code field [schwarzgeist] #3623
|
21
|
+
* Orbital: Add support for Level 3 fields [leila-alderman] #3639
|
22
|
+
* Firstdata: Strip newline characters from address [bittercoder] #3643
|
23
|
+
* Forte: add sec_code attribute for echeck [wsmoak] #3640
|
24
|
+
|
25
|
+
== Version 1.107.3 (May 8, 2020)
|
26
|
+
* Realex: Ignore IPv6 unsupported addresses [elfassy] #3622
|
27
|
+
* Cybersource: Set partnerSolutionID after the business rules, fixes 500 error [pi3r] #3621
|
28
|
+
|
29
|
+
== Version 1.107.2 (May 7, 2020)
|
30
|
+
* Cybersource: Send a specific card brand commerceIndicator for 3DS [pi3r] #3620
|
31
|
+
* Cybersource: Send application_id as partnerSolutionID [pi3r] #3620
|
32
|
+
* Iridium: Localize zero-decimal currencies [chinhle23] #3587
|
33
|
+
* iVeri: Fix `verify` action [chinhle23] #3588
|
34
|
+
* Ixopay: Properly support three-decimal currencies [chinhle23] #3589
|
35
|
+
* Kushki: support `auth` and `capture` [therufs] #3591
|
36
|
+
* PaymentExpress: Update references to Windcave to reflect rebranding [britth] #3595
|
37
|
+
* Decidir: Improve handling of error responses from the gateway [naashton] #3594
|
38
|
+
* CyberSource: Added support for MerchantInformation CyberSource-specific fields [apfranzen] #3592
|
39
|
+
* ePay: Send unique order ids for remote tests [curiousepic] #3593
|
40
|
+
* Checkout V2: Send more informative error messages for 4xx errors [britth] #3601
|
41
|
+
* Elavon: Add ssl_dynamic_dba field [apfranzen] #3600
|
42
|
+
* iATS Payments: Update gateway to v3 and add support for additional GSFs [naashton] #3599
|
43
|
+
* Remove deprecated `rubyforge_project` attribute and tidy up unit test output [fatcatt316] #3598
|
44
|
+
* Elavon: Cleanup inadvertant field removal (avs_address) in #3600 [apfranzen] #3602
|
45
|
+
* EBANX: Fix transaction amount for verify transaction [miguelxpn] #3603
|
46
|
+
* iATS Payments: Update gateway to accept `email`, `phone`, and `country` fields [naashton] #3607
|
47
|
+
* Braintree: Fix response for failed refunds when falling back to voids [jasonwebster] #3608
|
48
|
+
* Worldpay: Fix response for failed refunds when falling back to voids [jasonwebster] #3609
|
49
|
+
* iATS Payments: Add support for Customer Code payment method [molbrown] #3611
|
50
|
+
* HPS: Add Google Pay support [MSmedal] #3597
|
51
|
+
* Adyen: Parse appropriate message for 3DS2 authorization calls [britth] #3619
|
52
|
+
* CyberSource: Add error details response fields [schwarzgeist] #3629
|
53
|
+
|
54
|
+
== Version 1.107.1 (Apr 1, 2020)
|
55
|
+
* Add `allowed_push_host` to gemspec [mdeloupy]
|
56
|
+
|
57
|
+
== Version 1.107.0 (Apr 1, 2020)
|
58
|
+
* Stripe Payment Intents: Early return failed `payment_methods` response [chinhle23] #3570
|
59
|
+
* Borgun: Support `passengerItineraryData` [therufs] #3572
|
60
|
+
* Ingenico GlobalCollect: support optional `requires_approval` field [fatcatt316] #3571
|
61
|
+
* CenPOS: Update failing remote tests [britth] #3575
|
62
|
+
* Realex: Update remote tests [britth] #3576
|
63
|
+
* FirstData e4 v27: Properly tag stored credential initiation field in request [britth] #3578
|
64
|
+
* Orbital: Fix stored credentials [chinhle23] #3579
|
65
|
+
* Acapture(Opp): Update gateway credentials [molbrown] #3574
|
66
|
+
* Ingenico GlobalCollect: support `requires_approval` field [fatcatt316] #3577
|
67
|
+
* CyberSource: Fix `void` for `purchase` transactions [chinhle23] #3581
|
68
|
+
* Checkout V2: Begin to add support for using network tokens for transactions. [arbianchi] #3580
|
69
|
+
* Opp: Update remote test fixtures [ccarruitero] #3582
|
70
|
+
* Optimal Payment: Add support for store [britth] #3585
|
71
|
+
* SecurePay Australia : Update test URL (#3586)
|
72
|
+
|
73
|
+
== Version 1.106.0 (Mar 10, 2020)
|
74
|
+
* PayJunctionV2: Send billing address in `auth` and `purchase` transactions [naashton] #3538
|
75
|
+
* Adyen: Fix some remote tests [curiousepic] #3541
|
76
|
+
* Redsys: Properly escape cardholder name and description fields in 3DS requests [britth] #3537
|
77
|
+
* RuboCop: Fix Style/HashSyntax [leila-alderman] #3540
|
78
|
+
* Paypal: Fix OrderTotal elements in `add_payment_details` [chinhle23] #3544
|
79
|
+
* Stripe Payment Intents: Add tests for "Idempotency-Key" header [fatcatt316] #3542
|
80
|
+
* Paypal: Fix RuboCop Style/HashSyntax violations [chinhle23] #3547
|
81
|
+
* Rubocop corrections for space around operators [cdmackeyfree] #3543
|
82
|
+
* Fat Zebra: Add `is_billing` in post for `store` call [chinhle23] #3551
|
83
|
+
* SafeCharge: Adds four supported countries [carrigan] #3550
|
84
|
+
* Ixopay: Support stored credentials [leila-alderman] #3549
|
85
|
+
* BlueSnap: Adds localized currency support [carrigan] #3552
|
86
|
+
* CheckoutV2: Use status as message for 3DS txns in progress [britth] #3545
|
87
|
+
* Stripe Payment Intents: Prevent idempotency key errors for compound actions [britth] #3554
|
88
|
+
* Adyen: Add tests for voiding with idempotency keys [jknipp] #3553
|
89
|
+
* Fat Zebra: Fix `store` call [chinhle23] #3556
|
90
|
+
* Update README to include Adyen [haolime] #3452
|
91
|
+
* PayJunctionv2: Fix billing address fields [leila-alderman] #3557
|
92
|
+
* Adyen: Fail unexpected 3DS responses [curiousepic] #3546
|
93
|
+
* Merchant Warrior: Add support for setting soft descriptors [daBayrus] #3558
|
94
|
+
* Adyen: Fix stored credentials [chinhle23] #3560
|
95
|
+
* Update BIN ranges for Alelo and Maestro cards [leila-alderman] #3559
|
96
|
+
* EBANX: Fix declines if order id is bigger than 40 chars [miguelxpn] #3563
|
97
|
+
* Moneris US: Remove gateway [chinhle23] #3561
|
98
|
+
* Decidir: Decidir: Improving the response message when encountering errors [naashton] #3564
|
99
|
+
* PayBox: Added USERTrust RSA Certification Authority and Sectigo RSA Organization Validation Secure Server CA [baldowl] #3567
|
100
|
+
|
3
101
|
== Version 1.105.0 (Feb 20, 2020)
|
4
102
|
* Credorax: Fix `3ds_transtype` setting in post [chinhle23] #3531
|
5
103
|
* Bambora Apac: Send void amount in options [leila-alderman] #3532
|
@@ -12,7 +110,6 @@
|
|
12
110
|
* Decidir: Add support for fraud_detection, site_id, and establishment_name [fatcatt316] #3527
|
13
111
|
* HPS: support eCheck [therufs] #3500
|
14
112
|
* EBANX: Add metadata information in post [miguelxpn] #3522
|
15
|
-
* Paypal: Fix OrderTotal elements in `add_payment_details` [chinhle23] #3517
|
16
113
|
* Worldpay: Add `riskData` GSF [fatcatt316] #3514
|
17
114
|
* EBANX: Fix `scrub` [chinhle23] #3521
|
18
115
|
* Worldpay: Remove unnecessary .tag! methods [leila-alderman] #3519
|
@@ -20,6 +117,7 @@
|
|
20
117
|
* Authorize.net: Trim supported countries to AU, CA, US [fatcatt316] #3516
|
21
118
|
* Credorax: Allow optional 3DS 2 fields [jeremywrowe] #3515
|
22
119
|
* Stripe: Remove outdated 'customer options' deprecation [alexdunae] #3401
|
120
|
+
* Added support for fraud review in CyberSource gateway [greg-burgoon] #3536
|
23
121
|
|
24
122
|
== Version 1.104.0 (Jan 29, 2020)
|
25
123
|
* Adyen: add `recurring_contract_type` GSF [therufs] #3460
|
data/README.md
CHANGED
@@ -91,6 +91,7 @@ guide and [Standardized 3DS Fields](https://github.com/activemerchant/active_mer
|
|
91
91
|
|
92
92
|
The [ActiveMerchant Wiki](https://github.com/activemerchant/active_merchant/wikis) contains a [table of features supported by each gateway](https://github.com/activemerchant/active_merchant/wiki/Gateway-Feature-Matrix).
|
93
93
|
|
94
|
+
* [Adyen](https://www.adyen.com/) - US, 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
|
94
95
|
* [Authorize.Net CIM](http://www.authorize.net/) - US
|
95
96
|
* [Authorize.Net](http://www.authorize.net/) - AU, CA, US
|
96
97
|
* [Axcess MS](http://www.axcessms.com/) - AD, AT, BE, BG, BR, CA, CH, CY, CZ, DE, DK, EE, ES, FI, FO, FR, GB, GI, GR, HR, HU, IE, IL, IM, IS, IT, LI, LT, LU, LV, MC, MT, MX, NL, NO, PL, PT, RO, RU, SE, SI, SK, TR, US, VA
|
@@ -159,7 +160,6 @@ The [ActiveMerchant Wiki](https://github.com/activemerchant/active_merchant/wiki
|
|
159
160
|
* [Modern Payments](http://www.modpay.com) - US
|
160
161
|
* [MONEI](http://www.monei.net/) - AD, AT, BE, BG, CA, CH, CY, CZ, DE, DK, EE, ES, FI, FO, FR, GB, GI, GR, HU, IE, IL, IS, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK, TR, US, VA
|
161
162
|
* [Moneris](http://www.moneris.com/) - CA
|
162
|
-
* [Moneris (US)](http://www.monerisusa.com/) - US
|
163
163
|
* [MoneyMovers](http://mmoa.us/) - US
|
164
164
|
* [NAB Transact](http://transact.nab.com.au) - AU
|
165
165
|
* [NELiX TransaX](https://www.nelixtransax.com/) - US
|
@@ -183,7 +183,7 @@ The [ActiveMerchant Wiki](https://github.com/activemerchant/active_merchant/wiki
|
|
183
183
|
* [Paybox Direct](http://www.paybox.com/) - FR
|
184
184
|
* [Payeezy](https://developer.payeezy.com/) - CA, US
|
185
185
|
* [Payex](http://payex.com/) - DK, FI, NO, SE
|
186
|
-
* [PaymentExpress](
|
186
|
+
* [Windcave (formerly PaymentExpress)](https://www.windcave.com/) - AU, CA, DE, ES, FR, GB, HK, IE, MY, NL, NZ, SG, US, ZA
|
187
187
|
* [PAYMILL](https://paymill.com) - AD, AT, BE, BG, CH, CY, CZ, DE, DK, EE, ES, FI, FO, FR, GB, GI, GR, HU, IE, IL, IS, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK, TR, VA
|
188
188
|
* [PayPal Express Checkout](https://www.paypal.com/webapps/mpp/express-checkout) - US, CA, SG, AU
|
189
189
|
* [PayPal Express Checkout (UK)](https://www.paypal.com/uk/webapps/mpp/express-checkout) - GB
|
@@ -13,7 +13,12 @@ module ActiveMerchant #:nodoc:
|
|
13
13
|
'diners_club' => ->(num) { num =~ /^3(0[0-5]|[68]\d)\d{11}$/ },
|
14
14
|
'jcb' => ->(num) { num =~ /^35(28|29|[3-8]\d)\d{12}$/ },
|
15
15
|
'dankort' => ->(num) { num =~ /^5019\d{12}$/ },
|
16
|
-
'maestro' =>
|
16
|
+
'maestro' => lambda { |num|
|
17
|
+
(12..19).cover?(num&.size) && (
|
18
|
+
in_bin_range?(num.slice(0, 6), MAESTRO_RANGES) ||
|
19
|
+
MAESTRO_BINS.any? { |bin| num.slice(0, bin.size) == bin }
|
20
|
+
)
|
21
|
+
},
|
17
22
|
'forbrugsforeningen' => ->(num) { num =~ /^600722\d{10}$/ },
|
18
23
|
'sodexo' => ->(num) { num =~ /^(606071|603389|606070|606069|606068|600818)\d{10}$/ },
|
19
24
|
'vr' => ->(num) { num =~ /^(627416|637036)\d{10}$/ },
|
@@ -65,6 +70,10 @@ module ActiveMerchant #:nodoc:
|
|
65
70
|
(510000..559999),
|
66
71
|
]
|
67
72
|
|
73
|
+
MAESTRO_BINS = Set.new(
|
74
|
+
['500033', '581149']
|
75
|
+
)
|
76
|
+
|
68
77
|
# https://www.mastercard.us/content/dam/mccom/global/documents/mastercard-rules.pdf, page 73
|
69
78
|
MAESTRO_RANGES = [
|
70
79
|
(561200..561269),
|
@@ -111,7 +120,7 @@ module ActiveMerchant #:nodoc:
|
|
111
120
|
405886..405886, 430471..430471, 438061..438061, 438064..438064, 470063..470066,
|
112
121
|
496067..496067, 506699..506704, 506706..506706, 506713..506714, 506716..506716,
|
113
122
|
506749..506750, 506752..506752, 506754..506756, 506758..506762, 506764..506767,
|
114
|
-
506770..506771, 509015..509019, 509880..509882, 509884..509885, 509987..
|
123
|
+
506770..506771, 509015..509019, 509880..509882, 509884..509885, 509987..509992
|
115
124
|
]
|
116
125
|
|
117
126
|
CABAL_RANGES = [
|
@@ -344,7 +353,7 @@ module ActiveMerchant #:nodoc:
|
|
344
353
|
def valid_naranja_algo?(numbers) #:nodoc:
|
345
354
|
num_array = numbers.to_s.chars.map(&:to_i)
|
346
355
|
multipliers = [4, 3, 2, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
|
347
|
-
num_sum = num_array[0..14].zip(multipliers).map { |a, b| a*b }.reduce(:+)
|
356
|
+
num_sum = num_array[0..14].zip(multipliers).map { |a, b| a * b }.reduce(:+)
|
348
357
|
intermediate = 11 - (num_sum % 11)
|
349
358
|
final_num = intermediate > 9 ? 0 : intermediate
|
350
359
|
final_num == num_array[15]
|
@@ -80,22 +80,22 @@ module ActiveMerchant #:nodoc:
|
|
80
80
|
# as network tokenization.
|
81
81
|
|
82
82
|
STANDARD_ERROR_CODE = {
|
83
|
-
:
|
84
|
-
:
|
85
|
-
:
|
86
|
-
:
|
87
|
-
:
|
88
|
-
:
|
89
|
-
:
|
90
|
-
:
|
91
|
-
:
|
92
|
-
:
|
93
|
-
:
|
94
|
-
:
|
95
|
-
:
|
96
|
-
:
|
97
|
-
:
|
98
|
-
:
|
83
|
+
incorrect_number: 'incorrect_number',
|
84
|
+
invalid_number: 'invalid_number',
|
85
|
+
invalid_expiry_date: 'invalid_expiry_date',
|
86
|
+
invalid_cvc: 'invalid_cvc',
|
87
|
+
expired_card: 'expired_card',
|
88
|
+
incorrect_cvc: 'incorrect_cvc',
|
89
|
+
incorrect_zip: 'incorrect_zip',
|
90
|
+
incorrect_address: 'incorrect_address',
|
91
|
+
incorrect_pin: 'incorrect_pin',
|
92
|
+
card_declined: 'card_declined',
|
93
|
+
processing_error: 'processing_error',
|
94
|
+
call_issuer: 'call_issuer',
|
95
|
+
pickup_card: 'pick_up_card',
|
96
|
+
config_error: 'config_error',
|
97
|
+
test_mode_live_card: 'test_mode_live_card',
|
98
|
+
unsupported_feature: 'unsupported_feature',
|
99
99
|
}
|
100
100
|
|
101
101
|
cattr_reader :implementations
|
@@ -223,11 +223,11 @@ module ActiveMerchant #:nodoc:
|
|
223
223
|
|
224
224
|
def user_agent
|
225
225
|
@@ua ||= JSON.dump({
|
226
|
-
:
|
227
|
-
:
|
228
|
-
:
|
229
|
-
:
|
230
|
-
:
|
226
|
+
bindings_version: ActiveMerchant::VERSION,
|
227
|
+
lang: 'ruby',
|
228
|
+
lang_version: "#{RUBY_VERSION} p#{RUBY_PATCHLEVEL} (#{RUBY_RELEASE_DATE})",
|
229
|
+
platform: RUBY_PLATFORM,
|
230
|
+
publisher: 'active_merchant'
|
231
231
|
})
|
232
232
|
end
|
233
233
|
|
@@ -320,7 +320,7 @@ module ActiveMerchant #:nodoc:
|
|
320
320
|
raise ArgumentError.new("Missing required parameter: #{param.first}") unless hash.has_key?(param.first)
|
321
321
|
|
322
322
|
valid_options = param[1..-1]
|
323
|
-
raise ArgumentError.new("Parameter: #{param.first} must be one of #{valid_options.to_sentence(:
|
323
|
+
raise ArgumentError.new("Parameter: #{param.first} must be one of #{valid_options.to_sentence(words_connector: 'or')}") unless valid_options.include?(hash[param.first])
|
324
324
|
else
|
325
325
|
raise ArgumentError.new("Missing required parameter: #{param}") unless hash.has_key?(param)
|
326
326
|
end
|
@@ -261,7 +261,9 @@ module ActiveMerchant #:nodoc:
|
|
261
261
|
end
|
262
262
|
|
263
263
|
def add_shopper_interaction(post, payment, options={})
|
264
|
-
if
|
264
|
+
if (options.dig(:stored_credential, :initial_transaction) && options.dig(:stored_credential, :initiator) == 'cardholder') ||
|
265
|
+
(payment.respond_to?(:verification_value) && payment.verification_value && options.dig(:stored_credential, :initial_transaction).nil?) ||
|
266
|
+
payment.is_a?(NetworkTokenizationCreditCard)
|
265
267
|
shopper_interaction = 'Ecommerce'
|
266
268
|
else
|
267
269
|
shopper_interaction = 'ContAuth'
|
@@ -273,8 +275,12 @@ module ActiveMerchant #:nodoc:
|
|
273
275
|
def add_recurring_processing_model(post, options)
|
274
276
|
return unless options.dig(:stored_credential, :reason_type) || options[:recurring_processing_model]
|
275
277
|
|
276
|
-
if options.dig(:stored_credential, :reason_type)
|
277
|
-
|
278
|
+
if options.dig(:stored_credential, :reason_type) == 'unscheduled'
|
279
|
+
if options.dig(:stored_credential, :initiator) == 'merchant'
|
280
|
+
recurring_processing_model = 'UnscheduledCardOnFile'
|
281
|
+
else
|
282
|
+
recurring_processing_model = 'CardOnFile'
|
283
|
+
end
|
278
284
|
else
|
279
285
|
recurring_processing_model = 'Subscription'
|
280
286
|
end
|
@@ -471,7 +477,7 @@ module ActiveMerchant #:nodoc:
|
|
471
477
|
raw_response = e.response.body
|
472
478
|
response = parse(raw_response)
|
473
479
|
end
|
474
|
-
success = success_from(action, response)
|
480
|
+
success = success_from(action, response, options)
|
475
481
|
Response.new(
|
476
482
|
success,
|
477
483
|
message_from(action, response),
|
@@ -479,7 +485,7 @@ module ActiveMerchant #:nodoc:
|
|
479
485
|
authorization: authorization_from(action, parameters, response),
|
480
486
|
test: test?,
|
481
487
|
error_code: success ? nil : error_code_from(response),
|
482
|
-
avs_result: AVSResult.new(:
|
488
|
+
avs_result: AVSResult.new(code: avs_code_from(response)),
|
483
489
|
cvv_result: CVVResult.new(cvv_result_from(response))
|
484
490
|
)
|
485
491
|
end
|
@@ -520,7 +526,12 @@ module ActiveMerchant #:nodoc:
|
|
520
526
|
headers
|
521
527
|
end
|
522
528
|
|
523
|
-
def success_from(action, response)
|
529
|
+
def success_from(action, response, options)
|
530
|
+
if ['RedirectShopper', 'ChallengeShopper'].include?(response.dig('resultCode')) && !options[:execute_threed] && !options[:threed_dynamic]
|
531
|
+
response['refusalReason'] = 'Received unexpected 3DS authentication response. Use the execute_threed and/or threed_dynamic options to initiate a proper 3DS flow.'
|
532
|
+
return false
|
533
|
+
end
|
534
|
+
|
524
535
|
case action.to_s
|
525
536
|
when 'authorise', 'authorise3d'
|
526
537
|
['Authorised', 'Received', 'RedirectShopper'].include?(response['resultCode'])
|
@@ -538,7 +549,7 @@ module ActiveMerchant #:nodoc:
|
|
538
549
|
end
|
539
550
|
|
540
551
|
def message_from(action, response)
|
541
|
-
return authorize_message_from(response) if
|
552
|
+
return authorize_message_from(response) if %w(authorise authorise3d authorise3ds2).include?(action.to_s)
|
542
553
|
|
543
554
|
response['response'] || response['message'] || response['result']
|
544
555
|
end
|
@@ -152,8 +152,8 @@ module ActiveMerchant #:nodoc:
|
|
152
152
|
message_from(succeeded, response),
|
153
153
|
response,
|
154
154
|
authorization: response['id'],
|
155
|
-
:
|
156
|
-
:
|
155
|
+
avs_result: AVSResult.new(code: response['avs_response']),
|
156
|
+
cvv_result: CVVResult.new(response['cvv2_response']),
|
157
157
|
test: test?
|
158
158
|
)
|
159
159
|
rescue JSON::ParserError
|
@@ -58,21 +58,21 @@ module ActiveMerchant
|
|
58
58
|
}
|
59
59
|
|
60
60
|
MARKET_TYPE = {
|
61
|
-
:
|
62
|
-
:
|
61
|
+
moto: '1',
|
62
|
+
retail: '2'
|
63
63
|
}
|
64
64
|
|
65
65
|
DEVICE_TYPE = {
|
66
|
-
:
|
67
|
-
:
|
68
|
-
:
|
69
|
-
:
|
70
|
-
:
|
71
|
-
:
|
72
|
-
:
|
73
|
-
:
|
74
|
-
:
|
75
|
-
:
|
66
|
+
unknown: '1',
|
67
|
+
unattended_terminal: '2',
|
68
|
+
self_service_terminal: '3',
|
69
|
+
electronic_cash_register: '4',
|
70
|
+
personal_computer_terminal: '5',
|
71
|
+
airpay: '6',
|
72
|
+
wireless_pos: '7',
|
73
|
+
website: '8',
|
74
|
+
dial_terminal: '9',
|
75
|
+
virtual_terminal: '10'
|
76
76
|
}
|
77
77
|
|
78
78
|
class_attribute :duplicate_window
|
@@ -221,13 +221,13 @@ module ActiveMerchant
|
|
221
221
|
|
222
222
|
def supports_network_tokenization?
|
223
223
|
card = Billing::NetworkTokenizationCreditCard.new({
|
224
|
-
:
|
225
|
-
:
|
226
|
-
:
|
227
|
-
:
|
228
|
-
:
|
229
|
-
:
|
230
|
-
:
|
224
|
+
number: '4111111111111111',
|
225
|
+
month: 12,
|
226
|
+
year: 20,
|
227
|
+
first_name: 'John',
|
228
|
+
last_name: 'Smith',
|
229
|
+
brand: 'visa',
|
230
|
+
payment_cryptogram: 'EHuWW9PiBkWvqE5juRwDzAUFBAk='
|
231
231
|
})
|
232
232
|
|
233
233
|
request = post_data(:authorize) do |xml|
|
@@ -39,10 +39,10 @@ module ActiveMerchant #:nodoc:
|
|
39
39
|
AUTHORIZE_NET_ARB_NAMESPACE = 'AnetApi/xml/v1/schema/AnetApiSchema.xsd'
|
40
40
|
|
41
41
|
RECURRING_ACTIONS = {
|
42
|
-
:
|
43
|
-
:
|
44
|
-
:
|
45
|
-
:
|
42
|
+
create: 'ARBCreateSubscription',
|
43
|
+
update: 'ARBUpdateSubscription',
|
44
|
+
cancel: 'ARBCancelSubscription',
|
45
|
+
status: 'ARBGetSubscriptionStatus'
|
46
46
|
}
|
47
47
|
|
48
48
|
# Creates a new AuthorizeNetArbGateway
|
@@ -126,7 +126,7 @@ module ActiveMerchant #:nodoc:
|
|
126
126
|
# * <tt>subscription_id</tt> -- A string containing the +subscription_id+ of the recurring payment already in place
|
127
127
|
# for a given credit card. (REQUIRED)
|
128
128
|
def cancel_recurring(subscription_id)
|
129
|
-
request = build_recurring_request(:cancel, :
|
129
|
+
request = build_recurring_request(:cancel, subscription_id: subscription_id)
|
130
130
|
recurring_commit(:cancel, request)
|
131
131
|
end
|
132
132
|
|
@@ -139,7 +139,7 @@ module ActiveMerchant #:nodoc:
|
|
139
139
|
# * <tt>subscription_id</tt> -- A string containing the +subscription_id+ of the recurring payment already in place
|
140
140
|
# for a given credit card. (REQUIRED)
|
141
141
|
def status_recurring(subscription_id)
|
142
|
-
request = build_recurring_request(:status, :
|
142
|
+
request = build_recurring_request(:status, subscription_id: subscription_id)
|
143
143
|
recurring_commit(:status, request)
|
144
144
|
end
|
145
145
|
|
@@ -149,9 +149,9 @@ module ActiveMerchant #:nodoc:
|
|
149
149
|
def build_recurring_request(action, options = {})
|
150
150
|
raise StandardError, "Invalid Automated Recurring Billing Action: #{action}" unless RECURRING_ACTIONS.include?(action)
|
151
151
|
|
152
|
-
xml = Builder::XmlMarkup.new(:
|
153
|
-
xml.instruct!(:xml, :
|
154
|
-
xml.tag!("#{RECURRING_ACTIONS[action]}Request", :
|
152
|
+
xml = Builder::XmlMarkup.new(indent: 2)
|
153
|
+
xml.instruct!(:xml, version: '1.0', encoding: 'utf-8')
|
154
|
+
xml.tag!("#{RECURRING_ACTIONS[action]}Request", xmlns: AUTHORIZE_NET_ARB_NAMESPACE) do
|
155
155
|
add_merchant_authentication(xml)
|
156
156
|
# Merchant-assigned reference ID for the request
|
157
157
|
xml.tag!('refId', options[:ref_id]) if options[:ref_id]
|
@@ -394,8 +394,8 @@ module ActiveMerchant #:nodoc:
|
|
394
394
|
success = response[:result_code] == 'Ok'
|
395
395
|
|
396
396
|
Response.new(success, message, response,
|
397
|
-
:
|
398
|
-
:
|
397
|
+
test: test_mode,
|
398
|
+
authorization: response[:subscription_id]
|
399
399
|
)
|
400
400
|
end
|
401
401
|
|