activemerchant 1.107.3 → 1.111.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (206) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +75 -0
  3. data/README.md +3 -3
  4. data/lib/active_merchant/billing/base.rb +0 -13
  5. data/lib/active_merchant/billing/check.rb +1 -1
  6. data/lib/active_merchant/billing/credit_card.rb +2 -0
  7. data/lib/active_merchant/billing/credit_card_methods.rb +9 -6
  8. data/lib/active_merchant/billing/gateways/adyen.rb +18 -12
  9. data/lib/active_merchant/billing/gateways/allied_wallet.rb +2 -2
  10. data/lib/active_merchant/billing/gateways/authorize_net.rb +8 -8
  11. data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +3 -3
  12. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +3 -3
  13. data/lib/active_merchant/billing/gateways/axcessms.rb +1 -1
  14. data/lib/active_merchant/billing/gateways/balanced.rb +1 -1
  15. data/lib/active_merchant/billing/gateways/bambora_apac.rb +2 -2
  16. data/lib/active_merchant/billing/gateways/bank_frick.rb +2 -2
  17. data/lib/active_merchant/billing/gateways/banwire.rb +2 -2
  18. data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +2 -2
  19. data/lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb +1 -1
  20. data/lib/active_merchant/billing/gateways/be2bill.rb +1 -1
  21. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +4 -4
  22. data/lib/active_merchant/billing/gateways/blue_pay.rb +4 -4
  23. data/lib/active_merchant/billing/gateways/blue_snap.rb +1 -1
  24. data/lib/active_merchant/billing/gateways/borgun.rb +3 -3
  25. data/lib/active_merchant/billing/gateways/bpoint.rb +1 -1
  26. data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +1 -1
  27. data/lib/active_merchant/billing/gateways/braintree_blue.rb +84 -35
  28. data/lib/active_merchant/billing/gateways/bridge_pay.rb +2 -2
  29. data/lib/active_merchant/billing/gateways/cams.rb +2 -2
  30. data/lib/active_merchant/billing/gateways/card_connect.rb +1 -1
  31. data/lib/active_merchant/billing/gateways/card_save.rb +1 -1
  32. data/lib/active_merchant/billing/gateways/card_stream.rb +4 -4
  33. data/lib/active_merchant/billing/gateways/cardknox.rb +4 -4
  34. data/lib/active_merchant/billing/gateways/cardprocess.rb +1 -1
  35. data/lib/active_merchant/billing/gateways/cashnet.rb +1 -1
  36. data/lib/active_merchant/billing/gateways/cecabank.rb +1 -1
  37. data/lib/active_merchant/billing/gateways/cenpos.rb +12 -12
  38. data/lib/active_merchant/billing/gateways/checkout.rb +3 -3
  39. data/lib/active_merchant/billing/gateways/checkout_v2.rb +2 -2
  40. data/lib/active_merchant/billing/gateways/citrus_pay.rb +1 -1
  41. data/lib/active_merchant/billing/gateways/clearhaus.rb +4 -4
  42. data/lib/active_merchant/billing/gateways/commercegate.rb +1 -1
  43. data/lib/active_merchant/billing/gateways/conekta.rb +1 -1
  44. data/lib/active_merchant/billing/gateways/creditcall.rb +1 -1
  45. data/lib/active_merchant/billing/gateways/credorax.rb +7 -3
  46. data/lib/active_merchant/billing/gateways/ct_payment.rb +2 -2
  47. data/lib/active_merchant/billing/gateways/culqi.rb +1 -1
  48. data/lib/active_merchant/billing/gateways/cyber_source.rb +67 -22
  49. data/lib/active_merchant/billing/gateways/d_local.rb +24 -8
  50. data/lib/active_merchant/billing/gateways/data_cash.rb +1 -1
  51. data/lib/active_merchant/billing/gateways/decidir.rb +24 -0
  52. data/lib/active_merchant/billing/gateways/dibs.rb +2 -2
  53. data/lib/active_merchant/billing/gateways/digitzs.rb +2 -2
  54. data/lib/active_merchant/billing/gateways/ebanx.rb +6 -4
  55. data/lib/active_merchant/billing/gateways/efsnet.rb +2 -2
  56. data/lib/active_merchant/billing/gateways/elavon.rb +56 -9
  57. data/lib/active_merchant/billing/gateways/element.rb +16 -8
  58. data/lib/active_merchant/billing/gateways/epay.rb +3 -3
  59. data/lib/active_merchant/billing/gateways/evo_ca.rb +1 -1
  60. data/lib/active_merchant/billing/gateways/eway.rb +1 -1
  61. data/lib/active_merchant/billing/gateways/eway_managed.rb +1 -1
  62. data/lib/active_merchant/billing/gateways/eway_rapid.rb +2 -2
  63. data/lib/active_merchant/billing/gateways/exact.rb +3 -3
  64. data/lib/active_merchant/billing/gateways/ezic.rb +1 -1
  65. data/lib/active_merchant/billing/gateways/fat_zebra.rb +9 -7
  66. data/lib/active_merchant/billing/gateways/federated_canada.rb +1 -1
  67. data/lib/active_merchant/billing/gateways/finansbank.rb +2 -2
  68. data/lib/active_merchant/billing/gateways/first_giving.rb +1 -1
  69. data/lib/active_merchant/billing/gateways/first_pay.rb +1 -1
  70. data/lib/active_merchant/billing/gateways/firstdata_e4.rb +5 -5
  71. data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +12 -4
  72. data/lib/active_merchant/billing/gateways/flo2cash.rb +10 -10
  73. data/lib/active_merchant/billing/gateways/forte.rb +9 -8
  74. data/lib/active_merchant/billing/gateways/garanti.rb +2 -2
  75. data/lib/active_merchant/billing/gateways/global_collect.rb +10 -5
  76. data/lib/active_merchant/billing/gateways/global_transport.rb +1 -1
  77. data/lib/active_merchant/billing/gateways/hdfc.rb +9 -9
  78. data/lib/active_merchant/billing/gateways/hps.rb +3 -3
  79. data/lib/active_merchant/billing/gateways/iats_payments.rb +2 -2
  80. data/lib/active_merchant/billing/gateways/inspire.rb +1 -1
  81. data/lib/active_merchant/billing/gateways/instapay.rb +1 -1
  82. data/lib/active_merchant/billing/gateways/ipp.rb +1 -1
  83. data/lib/active_merchant/billing/gateways/iridium.rb +3 -3
  84. data/lib/active_merchant/billing/gateways/itransact.rb +1 -1
  85. data/lib/active_merchant/billing/gateways/iveri.rb +2 -2
  86. data/lib/active_merchant/billing/gateways/ixopay.rb +1 -1
  87. data/lib/active_merchant/billing/gateways/jetpay.rb +2 -2
  88. data/lib/active_merchant/billing/gateways/jetpay_v2.rb +2 -2
  89. data/lib/active_merchant/billing/gateways/komoju.rb +1 -1
  90. data/lib/active_merchant/billing/gateways/kushki.rb +4 -4
  91. data/lib/active_merchant/billing/gateways/latitude19.rb +2 -2
  92. data/lib/active_merchant/billing/gateways/linkpoint.rb +2 -2
  93. data/lib/active_merchant/billing/gateways/litle.rb +10 -5
  94. data/lib/active_merchant/billing/gateways/maxipago.rb +2 -2
  95. data/lib/active_merchant/billing/gateways/mercado_pago.rb +12 -6
  96. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +1 -1
  97. data/lib/active_merchant/billing/gateways/merchant_one.rb +2 -2
  98. data/lib/active_merchant/billing/gateways/merchant_partners.rb +1 -1
  99. data/lib/active_merchant/billing/gateways/merchant_ware.rb +1 -1
  100. data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +1 -1
  101. data/lib/active_merchant/billing/gateways/merchant_warrior.rb +2 -2
  102. data/lib/active_merchant/billing/gateways/mercury.rb +4 -4
  103. data/lib/active_merchant/billing/gateways/metrics_global.rb +1 -1
  104. data/lib/active_merchant/billing/gateways/micropayment.rb +2 -2
  105. data/lib/active_merchant/billing/gateways/migs.rb +1 -1
  106. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +1 -1
  107. data/lib/active_merchant/billing/gateways/monei.rb +2 -2
  108. data/lib/active_merchant/billing/gateways/moneris.rb +17 -17
  109. data/lib/active_merchant/billing/gateways/money_movers.rb +1 -1
  110. data/lib/active_merchant/billing/gateways/mundipagg.rb +1 -1
  111. data/lib/active_merchant/billing/gateways/nab_transact.rb +2 -2
  112. data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +1 -1
  113. data/lib/active_merchant/billing/gateways/net_registry.rb +2 -2
  114. data/lib/active_merchant/billing/gateways/netaxept.rb +3 -3
  115. data/lib/active_merchant/billing/gateways/netbanx.rb +51 -23
  116. data/lib/active_merchant/billing/gateways/netbilling.rb +2 -2
  117. data/lib/active_merchant/billing/gateways/netpay.rb +2 -2
  118. data/lib/active_merchant/billing/gateways/network_merchants.rb +1 -1
  119. data/lib/active_merchant/billing/gateways/nmi.rb +4 -4
  120. data/lib/active_merchant/billing/gateways/ogone.rb +2 -2
  121. data/lib/active_merchant/billing/gateways/omise.rb +1 -1
  122. data/lib/active_merchant/billing/gateways/openpay.rb +1 -1
  123. data/lib/active_merchant/billing/gateways/opp.rb +2 -2
  124. data/lib/active_merchant/billing/gateways/optimal_payment.rb +4 -4
  125. data/lib/active_merchant/billing/gateways/orbital.rb +49 -7
  126. data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +1 -1
  127. data/lib/active_merchant/billing/gateways/pac_net_raven.rb +1 -1
  128. data/lib/active_merchant/billing/gateways/pagarme.rb +2 -2
  129. data/lib/active_merchant/billing/gateways/pago_facil.rb +1 -1
  130. data/lib/active_merchant/billing/gateways/pay_conex.rb +1 -1
  131. data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +2 -2
  132. data/lib/active_merchant/billing/gateways/pay_hub.rb +1 -1
  133. data/lib/active_merchant/billing/gateways/pay_junction.rb +3 -3
  134. data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +2 -2
  135. data/lib/active_merchant/billing/gateways/pay_secure.rb +1 -1
  136. data/lib/active_merchant/billing/gateways/paybox_direct.rb +3 -3
  137. data/lib/active_merchant/billing/gateways/payeezy.rb +2 -2
  138. data/lib/active_merchant/billing/gateways/payex.rb +13 -13
  139. data/lib/active_merchant/billing/gateways/payflow.rb +5 -5
  140. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +2 -2
  141. data/lib/active_merchant/billing/gateways/payflow_uk.rb +1 -1
  142. data/lib/active_merchant/billing/gateways/payment_express.rb +1 -1
  143. data/lib/active_merchant/billing/gateways/paymentez.rb +1 -1
  144. data/lib/active_merchant/billing/gateways/paymill.rb +1 -1
  145. data/lib/active_merchant/billing/gateways/paypal.rb +2 -2
  146. data/lib/active_merchant/billing/gateways/paypal_ca.rb +1 -1
  147. data/lib/active_merchant/billing/gateways/payscout.rb +1 -1
  148. data/lib/active_merchant/billing/gateways/paystation.rb +1 -1
  149. data/lib/active_merchant/billing/gateways/payu_in.rb +1 -1
  150. data/lib/active_merchant/billing/gateways/payu_latam.rb +7 -8
  151. data/lib/active_merchant/billing/gateways/payway.rb +1 -1
  152. data/lib/active_merchant/billing/gateways/pin.rb +2 -2
  153. data/lib/active_merchant/billing/gateways/plugnpay.rb +5 -5
  154. data/lib/active_merchant/billing/gateways/pro_pay.rb +2 -2
  155. data/lib/active_merchant/billing/gateways/psigate.rb +1 -1
  156. data/lib/active_merchant/billing/gateways/psl_card.rb +2 -2
  157. data/lib/active_merchant/billing/gateways/qbms.rb +1 -1
  158. data/lib/active_merchant/billing/gateways/quantum.rb +4 -4
  159. data/lib/active_merchant/billing/gateways/quickbooks.rb +6 -6
  160. data/lib/active_merchant/billing/gateways/quickpay/quickpay_common.rb +3 -3
  161. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +4 -4
  162. data/lib/active_merchant/billing/gateways/qvalent.rb +1 -1
  163. data/lib/active_merchant/billing/gateways/realex.rb +5 -3
  164. data/lib/active_merchant/billing/gateways/redsys.rb +5 -5
  165. data/lib/active_merchant/billing/gateways/s5.rb +1 -1
  166. data/lib/active_merchant/billing/gateways/safe_charge.rb +2 -2
  167. data/lib/active_merchant/billing/gateways/sage.rb +3 -3
  168. data/lib/active_merchant/billing/gateways/sage_pay.rb +3 -3
  169. data/lib/active_merchant/billing/gateways/sallie_mae.rb +1 -1
  170. data/lib/active_merchant/billing/gateways/secure_net.rb +1 -1
  171. data/lib/active_merchant/billing/gateways/secure_pay.rb +1 -1
  172. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +2 -2
  173. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +2 -2
  174. data/lib/active_merchant/billing/gateways/securion_pay.rb +1 -1
  175. data/lib/active_merchant/billing/gateways/skip_jack.rb +5 -5
  176. data/lib/active_merchant/billing/gateways/so_easy_pay.rb +7 -7
  177. data/lib/active_merchant/billing/gateways/spreedly_core.rb +1 -1
  178. data/lib/active_merchant/billing/gateways/stripe.rb +13 -8
  179. data/lib/active_merchant/billing/gateways/stripe_payment_intents.rb +46 -3
  180. data/lib/active_merchant/billing/gateways/swipe_checkout.rb +1 -1
  181. data/lib/active_merchant/billing/gateways/telr.rb +4 -4
  182. data/lib/active_merchant/billing/gateways/tns.rb +1 -1
  183. data/lib/active_merchant/billing/gateways/trans_first.rb +2 -2
  184. data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +1 -1
  185. data/lib/active_merchant/billing/gateways/transact_pro.rb +3 -3
  186. data/lib/active_merchant/billing/gateways/transax.rb +1 -1
  187. data/lib/active_merchant/billing/gateways/trexle.rb +2 -2
  188. data/lib/active_merchant/billing/gateways/trust_commerce.rb +5 -5
  189. data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +6 -6
  190. data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +1 -1
  191. data/lib/active_merchant/billing/gateways/vanco.rb +1 -1
  192. data/lib/active_merchant/billing/gateways/verifi.rb +3 -3
  193. data/lib/active_merchant/billing/gateways/viaklix.rb +1 -1
  194. data/lib/active_merchant/billing/gateways/visanet_peru.rb +3 -3
  195. data/lib/active_merchant/billing/gateways/webpay.rb +1 -1
  196. data/lib/active_merchant/billing/gateways/wepay.rb +2 -2
  197. data/lib/active_merchant/billing/gateways/wirecard.rb +1 -1
  198. data/lib/active_merchant/billing/gateways/world_net.rb +35 -35
  199. data/lib/active_merchant/billing/gateways/worldpay.rb +8 -8
  200. data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +1 -1
  201. data/lib/active_merchant/billing/gateways/worldpay_us.rb +1 -1
  202. data/lib/active_merchant/connection.rb +40 -42
  203. data/lib/active_merchant/network_connection_retries.rb +10 -12
  204. data/lib/active_merchant/version.rb +1 -1
  205. data/lib/support/gateway_support.rb +1 -1
  206. metadata +46 -32
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07ae67a126faf1c4123540018228b4fa2cde8e60cba7f3ff274b939f8a9cd5f3
4
- data.tar.gz: 8b280d1f7d3ffa183adfe3851afd46362bbd42d8bf8673af9f32ceba92b91084
3
+ metadata.gz: 680a672c616e4c329cc7fb7cafdd72c417615f6d523c3079f271147f94af6d55
4
+ data.tar.gz: 2b16a9718878e8c7334ac0d7afbc80b605a525d4c267dc952bb25dbf15eb758f
5
5
  SHA512:
6
- metadata.gz: 4735b7fe06d0991807532a7a29d54fb6a189fdb7dc308cc975693877b6ff7cebeafcf61fecd10ca9a733406a5027063bc1396e1f878b6d5d49bd5d2087fc338b
7
- data.tar.gz: 5c793be60a27bf1bdbae18a6a973261ed93a3e1e883ee9af6c7c52f644fdbe46edff6cbe142d0136fcb163a015aecfa3195471e0c184a633cff056b569caa1e2
6
+ metadata.gz: c59f0a8f9b0aa19abba63ca244be4ddc9537d9802858f8453eaef59a4015e2ab6ba9cfbd9fcdc6e1601854804de838d615f2621cb267d571ffa57adadcf6c063
7
+ data.tar.gz: 3d2feb5a78bc21d2f844ff8c16c233cee05a29f1e260dc5b8c47a829ac4c3ee11c7ec5d8f29208b9408ab0c78334840623b557a87410e1a48bc204a01cd23163
data/CHANGELOG CHANGED
@@ -2,6 +2,80 @@
2
2
 
3
3
  == HEAD
4
4
 
5
+ == Version 1.111.0
6
+ * Fat Zebra: standardized 3DS fields and card on file extra data for Visa scheme rules [montdidier] #3409
7
+ * Realex: Change 3DSecure v1 message_version to a valid format [shuhala] #3702
8
+ * Ingenico/ GlobalCollect: Add field for installments [cdmackeyfree] #3707
9
+ * Cybersource: do not send 3DS fields if 'cavv` is missing and `commerceIndicator` is inferred [bbraschi] #3712
10
+
11
+ == Version 1.110.0
12
+ * FirstData e4 v27+: Strip linebreaks from address [curiousepic] #3693
13
+ * Adyen: Change shopper_email to email and shopper_ip to ip [rikterbeek] #3675
14
+ * FirstData e4 v27+ Fix strip_line_breaks method [carrigan] #3695
15
+ * Cybersource: Set authorization on the response even when in fraud review [pi3r] #3701
16
+ * Cybersource: Add fields to override stored creds [leila-alderman] #3689
17
+ * Cybersource: Conditionally find stored credentials [therufs] #3696 #3697
18
+ * Cybersource: Update logic to send cavv as xid for 3DS2 [douglas] #3699
19
+ * Credorax: Default 3ds_browsercolordepth to 32 when passed as 30 [britth] #3700
20
+
21
+ == Version 1.109.0
22
+ * Remove reference to `Billing::Integrations` [pi3r] #3692
23
+ * DLocal: Handle nil address1 [molbrown] #3661
24
+ * Braintree: Add travel and lodging fields [leila-alderman] #3668
25
+ * Stripe: strict_encode64 api key [britth] #3672
26
+ * Stripe PI: Implement verify action [leila-alderman] #3662
27
+ * Stripe, Stripe Payment Intents: Update supported countries [britth] #3684
28
+ * Forte: Use underscore for unused arguments in test [wsmoak] #3605
29
+ * Add Alia card type [therufs] #3673
30
+ * Element: Fix unit tests [leila-alderman] #3676
31
+ * PayU Latam: Fix store method [ccarruitero] #2590
32
+ * Adyen: Allow for executeThreeD to be passed as false [naashton] #3681
33
+ * WorldPay: Fix handling of `state` field for 3DS transactions [chinhle23] #3687
34
+ * Alia: Skip Luhn validation [therufs] #3673
35
+ * Diners Club: support 16 digit card numbers [therufs] #3682
36
+ * Cybersource: Update supported countries [britth] #3683
37
+ * Cybersource: pass reconciliation_id [therufs] #3688
38
+ * RuboCop: Fix Style/SpecialGlobalVars [leila-alderman] #3669
39
+ * RuboCop: Fix Style/StringLiteralsInInterpolation [leila-alderman] #3670
40
+ * RuboCop: Fix Layout/HeredocIndentation [leila-alderman] #3685
41
+ * RuboCop: Fix Gemspec/OrderedDependencies [leila-alderman] #3679
42
+ * RuboCop: Fix Style/TrailingUnderscoreVariable [leila-alderman] #3663
43
+ * RuboCop: Fix Style/WordArray [leila-alderman] #3664
44
+ * RuboCop: Fix Style/SymbolArray [leila-alderman] #3665
45
+ * Mercado-Pago: Notification url GSF [cdmackeyfree] #3678
46
+ * Credorax: Update logic for setting 3ds_homephonecountry [britth] #3691
47
+
48
+ == Version 1.108.0 (Jun 9, 2020)
49
+ * Cybersource: Send cavv as xid is xid is missing [pi3r] #3658
50
+ * Forte: Change default sec_code value to PPD [molbrown] #3653
51
+ * Elavon: Add merchant initiated unscheduled field [leila-alderman] #3647
52
+ * Decidir: Add aggregate data fields [leila-alderman] #3648
53
+ * Vantiv: Vantiv(Element): add option to send terminal id in transactions [cdmackeyfree] #3654
54
+ * Update supported Ruby and Rails versions [leila-alderman] #3656
55
+ * CI: Drop unused sudo: false Travis directive [olleolleolle] #3616
56
+ * PayU Latam: Prevent blank country in billing_address [britth] #3657
57
+ * DLocal: Fix address field names [molbrown] #3651
58
+
59
+ == Version 1.107.4 (Jun 2, 2020)
60
+ * Elavon: Implement true verify action [leila-alderman] #3610
61
+ * Vantiv Express: Implement true verify [leila-alderman] #3617
62
+ * Litle: Pass expiration data for basis payment method [therufs] #3606
63
+ * Stripe Payment Intents: Error handling and backwards compatibility within refund [britth] #3627
64
+ * HPS: Prevent errors when account_type or account_holder_type are nil [britth] #3628
65
+ * D Local: Handle invalid country code errors [curiousepic] #3626
66
+ * Stripe Payment Intents: Utilize execute_threed flag to determine success [britth] #3625
67
+ * Elavon: Add Level 3 fields [leila-alderman] #3632
68
+ * CyberSource: Stored Credential fixes [curiousepic] #3624
69
+ * CyberSource: Fix invalid and missing field tests [curiousepic] #3634
70
+ * CyberSource: Pass stored credentials with purchase [curiousepic] #3636
71
+ * Mercado Pago: Add payment_method_option_id field [schwarzgeist] #3635
72
+ * Stripe: Provide error when attempting an authorize with ACH [britth] #3633
73
+ * EBANX: Send original order id as merchant_payment_code metadata [miguelxpn] #3637
74
+ * Element: Add card_present_code field [schwarzgeist] #3623
75
+ * Orbital: Add support for Level 3 fields [leila-alderman] #3639
76
+ * Firstdata: Strip newline characters from address [bittercoder] #3643
77
+ * Forte: add sec_code attribute for echeck [wsmoak] #3640
78
+
5
79
  == Version 1.107.3 (May 8, 2020)
6
80
  * Realex: Ignore IPv6 unsupported addresses [elfassy] #3622
7
81
  * Cybersource: Set partnerSolutionID after the business rules, fixes 500 error [pi3r] #3621
@@ -29,6 +103,7 @@
29
103
  * iATS Payments: Add support for Customer Code payment method [molbrown] #3611
30
104
  * HPS: Add Google Pay support [MSmedal] #3597
31
105
  * Adyen: Parse appropriate message for 3DS2 authorization calls [britth] #3619
106
+ * CyberSource: Add error details response fields [schwarzgeist] #3629
32
107
 
33
108
  == Version 1.107.1 (Apr 1, 2020)
34
109
  * 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.png?branch=master)](https://travis-ci.org/activemerchant/active_merchant)
3
- [![Code Climate](https://codeclimate.com/github/activemerchant/active_merchant.png)](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.3+ and Rails 4.2+ are supported.
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
@@ -29,7 +29,7 @@ module ActiveMerchant #:nodoc:
29
29
  def validate
30
30
  errors = []
31
31
 
32
- [:name, :routing_number, :account_number].each do |attr|
32
+ %i[name routing_number account_number].each do |attr|
33
33
  errors << [attr, 'cannot be empty'] if empty?(self.send(attr))
34
34
  end
35
35
 
@@ -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
- '286900', '502275', '606333', '627535', '636318', '636379', '639388',
62
- '639484', '639559', '50633601', '50633606', '58877274', '62753500',
63
- '60462203', '60462204', '588772'
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
- ['500033', '581149']
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 = [:visa, :master, :american_express, :diners_club, :jcb, :dankort, :maestro, :discover, :elo, :naranja, :cabal, :unionpay]
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, _ = authorization.split('#')
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, _, _ = authorization.split('#')
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: 'true' } if options[:execute_threed]
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 ['RedirectShopper', 'ChallengeShopper'].include?(response.dig('resultCode')) && !options[:execute_threed] && !options[:threed_dynamic]
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
- ['Authorised', 'Received', 'RedirectShopper'].include?(response['resultCode'])
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 = [:visa, :master, :american_express, :discover,
13
- :diners_club, :jcb, :maestro]
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 = [:visa, :master, :american_express, :discover, :diners_club, :jcb, :maestro]
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, _, _ = split_authorization(authorization)
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, _ = split_authorization(authorization)
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, _ = split_authorization(authorization)
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, _ = split_authorization(token)
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 ['US', 'CA'].include?(address[:country])
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, _, _ = split_authorization(authorization)
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 = ['US', 'CA', 'GB']
35
- self.supported_cardtypes = [:visa, :master, :american_express, :discover, :diners_club, :jcb]
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, [:unit, :days, :months])
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 = [:visa, :master, :american_express, :discover]
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 [:auth_capture, :auth_only, :capture_only].include?(transaction[:type])
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 [:void, :refund, :prior_auth_capture].include?(transaction[:type])
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 = [:visa, :master, :american_express, :discover, :jcb, :maestro]
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 = [:visa, :master, :american_express, :discover]
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 = ['AU', 'NZ']
10
- self.supported_cardtypes = [:visa, :master, :american_express, :diners_club, :jcb]
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'