activemerchant 1.105.0 → 1.107.4
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 +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
|
|