activemerchant 1.110.0 → 1.116.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +82 -0
  3. data/lib/active_merchant.rb +1 -1
  4. data/lib/active_merchant/billing/avs_result.rb +1 -1
  5. data/lib/active_merchant/billing/compatibility.rb +3 -3
  6. data/lib/active_merchant/billing/credit_card.rb +1 -1
  7. data/lib/active_merchant/billing/credit_card_methods.rb +6 -6
  8. data/lib/active_merchant/billing/gateway.rb +1 -1
  9. data/lib/active_merchant/billing/gateways/adyen.rb +30 -15
  10. data/lib/active_merchant/billing/gateways/allied_wallet.rb +7 -7
  11. data/lib/active_merchant/billing/gateways/authorize_net.rb +19 -17
  12. data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +3 -4
  13. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +2 -2
  14. data/lib/active_merchant/billing/gateways/axcessms.rb +8 -9
  15. data/lib/active_merchant/billing/gateways/balanced.rb +5 -4
  16. data/lib/active_merchant/billing/gateways/bambora_apac.rb +8 -8
  17. data/lib/active_merchant/billing/gateways/bank_frick.rb +8 -8
  18. data/lib/active_merchant/billing/gateways/banwire.rb +1 -1
  19. data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +6 -4
  20. data/lib/active_merchant/billing/gateways/beanstream.rb +3 -3
  21. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +4 -5
  22. data/lib/active_merchant/billing/gateways/blue_pay.rb +2 -3
  23. data/lib/active_merchant/billing/gateways/blue_snap.rb +83 -23
  24. data/lib/active_merchant/billing/gateways/bogus.rb +19 -19
  25. data/lib/active_merchant/billing/gateways/borgun.rb +12 -12
  26. data/lib/active_merchant/billing/gateways/bpoint.rb +8 -8
  27. data/lib/active_merchant/billing/gateways/braintree.rb +1 -1
  28. data/lib/active_merchant/billing/gateways/braintree_blue.rb +14 -17
  29. data/lib/active_merchant/billing/gateways/bridge_pay.rb +7 -7
  30. data/lib/active_merchant/billing/gateways/cams.rb +8 -8
  31. data/lib/active_merchant/billing/gateways/card_connect.rb +1 -1
  32. data/lib/active_merchant/billing/gateways/card_save.rb +1 -1
  33. data/lib/active_merchant/billing/gateways/card_stream.rb +2 -2
  34. data/lib/active_merchant/billing/gateways/cardknox.rb +8 -8
  35. data/lib/active_merchant/billing/gateways/cardprocess.rb +1 -1
  36. data/lib/active_merchant/billing/gateways/cecabank.rb +5 -5
  37. data/lib/active_merchant/billing/gateways/cenpos.rb +11 -11
  38. data/lib/active_merchant/billing/gateways/checkout.rb +2 -2
  39. data/lib/active_merchant/billing/gateways/checkout_v2.rb +17 -20
  40. data/lib/active_merchant/billing/gateways/clearhaus.rb +7 -7
  41. data/lib/active_merchant/billing/gateways/commercegate.rb +1 -1
  42. data/lib/active_merchant/billing/gateways/conekta.rb +2 -2
  43. data/lib/active_merchant/billing/gateways/creditcall.rb +10 -10
  44. data/lib/active_merchant/billing/gateways/credorax.rb +15 -9
  45. data/lib/active_merchant/billing/gateways/ct_payment.rb +10 -10
  46. data/lib/active_merchant/billing/gateways/culqi.rb +10 -10
  47. data/lib/active_merchant/billing/gateways/cyber_source.rb +58 -37
  48. data/lib/active_merchant/billing/gateways/d_local.rb +11 -11
  49. data/lib/active_merchant/billing/gateways/data_cash.rb +2 -3
  50. data/lib/active_merchant/billing/gateways/decidir.rb +10 -9
  51. data/lib/active_merchant/billing/gateways/dibs.rb +8 -8
  52. data/lib/active_merchant/billing/gateways/digitzs.rb +6 -6
  53. data/lib/active_merchant/billing/gateways/ebanx.rb +9 -9
  54. data/lib/active_merchant/billing/gateways/efsnet.rb +3 -4
  55. data/lib/active_merchant/billing/gateways/elavon.rb +251 -232
  56. data/lib/active_merchant/billing/gateways/element.rb +12 -8
  57. data/lib/active_merchant/billing/gateways/evo_ca.rb +5 -6
  58. data/lib/active_merchant/billing/gateways/eway.rb +3 -4
  59. data/lib/active_merchant/billing/gateways/eway_managed.rb +6 -7
  60. data/lib/active_merchant/billing/gateways/eway_rapid.rb +8 -8
  61. data/lib/active_merchant/billing/gateways/exact.rb +8 -9
  62. data/lib/active_merchant/billing/gateways/ezic.rb +8 -8
  63. data/lib/active_merchant/billing/gateways/fat_zebra.rb +9 -7
  64. data/lib/active_merchant/billing/gateways/federated_canada.rb +2 -3
  65. data/lib/active_merchant/billing/gateways/first_giving.rb +1 -1
  66. data/lib/active_merchant/billing/gateways/first_pay.rb +6 -6
  67. data/lib/active_merchant/billing/gateways/firstdata_e4.rb +7 -7
  68. data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +4 -4
  69. data/lib/active_merchant/billing/gateways/flo2cash.rb +9 -9
  70. data/lib/active_merchant/billing/gateways/flo2cash_simple.rb +1 -1
  71. data/lib/active_merchant/billing/gateways/forte.rb +14 -8
  72. data/lib/active_merchant/billing/gateways/global_collect.rb +15 -10
  73. data/lib/active_merchant/billing/gateways/global_transport.rb +7 -7
  74. data/lib/active_merchant/billing/gateways/hdfc.rb +10 -10
  75. data/lib/active_merchant/billing/gateways/hps.rb +16 -13
  76. data/lib/active_merchant/billing/gateways/iats_payments.rb +9 -4
  77. data/lib/active_merchant/billing/gateways/in_context_paypal_express.rb +1 -1
  78. data/lib/active_merchant/billing/gateways/inspire.rb +3 -4
  79. data/lib/active_merchant/billing/gateways/instapay.rb +1 -2
  80. data/lib/active_merchant/billing/gateways/ipp.rb +7 -7
  81. data/lib/active_merchant/billing/gateways/iridium.rb +16 -17
  82. data/lib/active_merchant/billing/gateways/iveri.rb +7 -7
  83. data/lib/active_merchant/billing/gateways/ixopay.rb +7 -7
  84. data/lib/active_merchant/billing/gateways/jetpay.rb +1 -2
  85. data/lib/active_merchant/billing/gateways/jetpay_v2.rb +4 -5
  86. data/lib/active_merchant/billing/gateways/kushki.rb +6 -6
  87. data/lib/active_merchant/billing/gateways/latitude19.rb +14 -14
  88. data/lib/active_merchant/billing/gateways/linkpoint.rb +5 -6
  89. data/lib/active_merchant/billing/gateways/litle.rb +12 -12
  90. data/lib/active_merchant/billing/gateways/mastercard.rb +12 -12
  91. data/lib/active_merchant/billing/gateways/mercado_pago.rb +8 -8
  92. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +1 -2
  93. data/lib/active_merchant/billing/gateways/merchant_one.rb +1 -1
  94. data/lib/active_merchant/billing/gateways/merchant_partners.rb +10 -10
  95. data/lib/active_merchant/billing/gateways/merchant_ware.rb +5 -7
  96. data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +4 -6
  97. data/lib/active_merchant/billing/gateways/mercury.rb +4 -4
  98. data/lib/active_merchant/billing/gateways/metrics_global.rb +4 -5
  99. data/lib/active_merchant/billing/gateways/micropayment.rb +8 -8
  100. data/lib/active_merchant/billing/gateways/migs.rb +3 -4
  101. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +2 -4
  102. data/lib/active_merchant/billing/gateways/monei.rb +7 -7
  103. data/lib/active_merchant/billing/gateways/moneris.rb +4 -3
  104. data/lib/active_merchant/billing/gateways/money_movers.rb +2 -3
  105. data/lib/active_merchant/billing/gateways/mundipagg.rb +37 -10
  106. data/lib/active_merchant/billing/gateways/nab_transact.rb +2 -4
  107. data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +7 -7
  108. data/lib/active_merchant/billing/gateways/net_registry.rb +1 -2
  109. data/lib/active_merchant/billing/gateways/netaxept.rb +6 -6
  110. data/lib/active_merchant/billing/gateways/netbanx.rb +12 -10
  111. data/lib/active_merchant/billing/gateways/netbilling.rb +4 -5
  112. data/lib/active_merchant/billing/gateways/network_merchants.rb +2 -3
  113. data/lib/active_merchant/billing/gateways/nmi.rb +21 -7
  114. data/lib/active_merchant/billing/gateways/ogone.rb +3 -3
  115. data/lib/active_merchant/billing/gateways/omise.rb +13 -13
  116. data/lib/active_merchant/billing/gateways/openpay.rb +4 -5
  117. data/lib/active_merchant/billing/gateways/opp.rb +12 -12
  118. data/lib/active_merchant/billing/gateways/optimal_payment.rb +3 -4
  119. data/lib/active_merchant/billing/gateways/orbital.rb +66 -64
  120. data/lib/active_merchant/billing/gateways/pac_net_raven.rb +3 -4
  121. data/lib/active_merchant/billing/gateways/pagarme.rb +9 -9
  122. data/lib/active_merchant/billing/gateways/pago_facil.rb +2 -2
  123. data/lib/active_merchant/billing/gateways/pay_conex.rb +8 -8
  124. data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +6 -7
  125. data/lib/active_merchant/billing/gateways/pay_hub.rb +7 -8
  126. data/lib/active_merchant/billing/gateways/pay_junction.rb +4 -5
  127. data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +9 -9
  128. data/lib/active_merchant/billing/gateways/pay_secure.rb +2 -3
  129. data/lib/active_merchant/billing/gateways/paybox_direct.rb +23 -1
  130. data/lib/active_merchant/billing/gateways/payeezy.rb +12 -12
  131. data/lib/active_merchant/billing/gateways/payex.rb +11 -12
  132. data/lib/active_merchant/billing/gateways/payflow.rb +4 -1
  133. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +1 -1
  134. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +1 -1
  135. data/lib/active_merchant/billing/gateways/payment_express.rb +1 -2
  136. data/lib/active_merchant/billing/gateways/paymentez.rb +5 -5
  137. data/lib/active_merchant/billing/gateways/paymill.rb +10 -10
  138. data/lib/active_merchant/billing/gateways/paypal_express.rb +1 -1
  139. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +1 -1
  140. data/lib/active_merchant/billing/gateways/payscout.rb +1 -2
  141. data/lib/active_merchant/billing/gateways/paystation.rb +3 -4
  142. data/lib/active_merchant/billing/gateways/payu_in.rb +3 -3
  143. data/lib/active_merchant/billing/gateways/payu_latam.rb +21 -11
  144. data/lib/active_merchant/billing/gateways/payway.rb +8 -9
  145. data/lib/active_merchant/billing/gateways/plugnpay.rb +2 -3
  146. data/lib/active_merchant/billing/gateways/pro_pay.rb +8 -8
  147. data/lib/active_merchant/billing/gateways/psigate.rb +3 -4
  148. data/lib/active_merchant/billing/gateways/psl_card.rb +1 -2
  149. data/lib/active_merchant/billing/gateways/qbms.rb +4 -5
  150. data/lib/active_merchant/billing/gateways/quantum.rb +1 -2
  151. data/lib/active_merchant/billing/gateways/quickbooks.rb +4 -3
  152. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +3 -4
  153. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +1 -2
  154. data/lib/active_merchant/billing/gateways/qvalent.rb +9 -9
  155. data/lib/active_merchant/billing/gateways/realex.rb +2 -1
  156. data/lib/active_merchant/billing/gateways/redsys.rb +7 -7
  157. data/lib/active_merchant/billing/gateways/s5.rb +7 -7
  158. data/lib/active_merchant/billing/gateways/safe_charge.rb +12 -12
  159. data/lib/active_merchant/billing/gateways/sage.rb +3 -5
  160. data/lib/active_merchant/billing/gateways/sage_pay.rb +6 -7
  161. data/lib/active_merchant/billing/gateways/sallie_mae.rb +1 -2
  162. data/lib/active_merchant/billing/gateways/secure_net.rb +1 -2
  163. data/lib/active_merchant/billing/gateways/secure_pay.rb +3 -4
  164. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +2 -4
  165. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +1 -2
  166. data/lib/active_merchant/billing/gateways/securion_pay.rb +5 -6
  167. data/lib/active_merchant/billing/gateways/skip_jack.rb +3 -4
  168. data/lib/active_merchant/billing/gateways/smart_ps.rb +5 -6
  169. data/lib/active_merchant/billing/gateways/so_easy_pay.rb +7 -7
  170. data/lib/active_merchant/billing/gateways/spreedly_core.rb +6 -6
  171. data/lib/active_merchant/billing/gateways/stripe.rb +11 -11
  172. data/lib/active_merchant/billing/gateways/stripe_payment_intents.rb +9 -0
  173. data/lib/active_merchant/billing/gateways/swipe_checkout.rb +3 -4
  174. data/lib/active_merchant/billing/gateways/telr.rb +9 -9
  175. data/lib/active_merchant/billing/gateways/trans_first.rb +3 -3
  176. data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +14 -14
  177. data/lib/active_merchant/billing/gateways/transact_pro.rb +9 -9
  178. data/lib/active_merchant/billing/gateways/trust_commerce.rb +8 -9
  179. data/lib/active_merchant/billing/gateways/usa_epay.rb +1 -1
  180. data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +36 -36
  181. data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +4 -5
  182. data/lib/active_merchant/billing/gateways/vanco.rb +3 -3
  183. data/lib/active_merchant/billing/gateways/verifi.rb +1 -2
  184. data/lib/active_merchant/billing/gateways/viaklix.rb +1 -2
  185. data/lib/active_merchant/billing/gateways/visanet_peru.rb +10 -10
  186. data/lib/active_merchant/billing/gateways/webpay.rb +2 -2
  187. data/lib/active_merchant/billing/gateways/wepay.rb +3 -2
  188. data/lib/active_merchant/billing/gateways/wirecard.rb +1 -2
  189. data/lib/active_merchant/billing/gateways/worldpay.rb +12 -8
  190. data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +14 -16
  191. data/lib/active_merchant/billing/gateways/worldpay_us.rb +9 -9
  192. data/lib/active_merchant/billing/response.rb +1 -1
  193. data/lib/active_merchant/country.rb +1 -1
  194. data/lib/active_merchant/network_connection_retries.rb +2 -2
  195. data/lib/active_merchant/post_data.rb +1 -1
  196. data/lib/active_merchant/posts_data.rb +1 -1
  197. data/lib/active_merchant/version.rb +1 -1
  198. data/lib/support/ssl_verify.rb +2 -2
  199. data/lib/support/ssl_version.rb +2 -2
  200. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 947d711ce2e079aee4a485b32b4ba5349973461854026135c36192ed4b510ce2
4
- data.tar.gz: bf6ac95e994f6f7aaa22543bdc6cd0ef36e373b3e7b06b249d931a91a11b9d31
3
+ metadata.gz: c32d76816ad9cdc73be63181629990b876d69e62e84c324b0cf0b240bb4fab42
4
+ data.tar.gz: 8c4263133c364d786f480ac146e174765ac1a5b5c462680c17f4f104af9f0d49
5
5
  SHA512:
6
- metadata.gz: 9d6745f7228a6b068db47d588b3e1d4770d6399aa45fa2ffe74671259d4945bc82fc6cfd7a943fd7b19fd2c8c9ed4e0fb1df76f1fdbf56fee1f01ca316e2ac07
7
- data.tar.gz: 214fe490b01b7b3389137a30641e4fc49df892bb769bedecdf82ac477481670b89026287aa68a8aaad87b283dbf2a1ccc0b55533ccb03b744845352baff46a0f
6
+ metadata.gz: 167eff38aa013365fab6ff2ba49cee58b15b8b5aa7f604f2c58d0040fac2fe931a4550c3fe594df618326630138ef63265767f2270f3ae6838642a26694fb921
7
+ data.tar.gz: 23a60e19999c1ce903bfc35503eac491d5cff0de0b59ab8dfe99e67f2f0d4b31380ef3826926c70cc60303c348bfa9377e642ed420f58d519a1ec779521516db
data/CHANGELOG CHANGED
@@ -2,6 +2,88 @@
2
2
 
3
3
  == HEAD
4
4
 
5
+ == Version 1.116.0 (October 28th)
6
+ * Remove Braintree specific version dependency [pi3r] #38000
7
+
8
+ == Version 1.115.0 (October 27th)
9
+ * Checkout v2: $0 Auth on gateway [jessiagee] #3762
10
+ * Adyen: Safely add execute_threeds: false [curiousepic] #3756
11
+ * RuboCop: Fix Layout/SpaceAroundEqualsInParameterDefault [leila-alderman] #3720
12
+ * iATS: Allow email to be passed outside of the billing_address context [naashton] #3750
13
+ * Orbital: Don't pass xid for transactions using network tokens [britth] #3757
14
+ * Forte: Add service_fee_amount field [meagabeth] #3751
15
+ * WorldPay: Add support for idempotency_key[cdmackeyfree] #3759
16
+ * Orbital: Handle line_tot key as a string [naashton] #3760
17
+ * RuboCop: Fix Lint/UnusedMethodArgument [leila-alderman] #3721
18
+ * RuboCop: Fix Naming/MemoizedInstanceVariableName [leila-alderman] #3722
19
+ * RuboCop: Fix Style/BlockComments [leila-alderman] #3729
20
+ * Checkout V2: Move to single-transaction Purchases [curiousepic] #3761
21
+ * RuboCop: Fix Naming/ConstantName [leila-alderman] #3723
22
+ * Orbital: Fix schema errors [britth] #3766
23
+ * Checkout V2: Start testing via amount code [curiousepic] #3767
24
+ * CyberSource: Don't include empty `mdd_` fields [arbianchi] #3758
25
+ * RuboCop: Fix Naming/VariableNumber [leila-alderman] #3725
26
+ * Update BIN ranges for Elo cardtype [cdmackeyfree] #3769
27
+ * Orbital: Resolve CardIndicators issue [meagabeth] #3771
28
+ * Adyen: Add subMerchant fields [naashton] #3772
29
+ * PayPal Express: reduce param requirements [shasum] #3773
30
+ * PayU Latam: Support partial refunds [leila-alderman] #3774
31
+ * RuboCop: Fix Style/Alias [leila-alderman] #3727
32
+ * Stripe PI: Allow `on_behalf_of` to be passed alone #3776
33
+ * RuboCop: Fix Performance/RedundantMatch [leila-alderman] #3765
34
+ * RuboCop: Fix Layout/MultilineMethodCallBraceLayout [leila-alderman] #3763
35
+ * NMI: Add standardized 3DS fields [meagabeth] #3775
36
+ * Mundipagg: Add support for SubMerchant fields [meagabeth] #3779
37
+ * Stripe Payment Intents: Add request_three_d_secure option [molbrown] #3787
38
+ * Decidir: Add support for csmdds fields [naashton] #3786
39
+ * RuboCop: Fix Performance/StringReplacement [leila-alderman] #3782
40
+ * RuboCop: Fix Naming/HeredocDelimiterCase & Naming [leila-alderman] #3781
41
+ * BlueSnap: Add address fields to contact info [naashton] #3777
42
+ * RuboCop: Fix Layout/SpaceInsideHashLiteralBraces [leila-alderman] #3780
43
+ * RuboCop: Fix Style/AndOr [leila-alderman] #3783
44
+ * Checkout V2: Support ability to pass attempt_n3d 3ds field [naashton] #3788
45
+ * Elavon: Upgrade to `processxml.do` [therufs] #3784
46
+ * Checkout V2: Support for attempt_n3d 3DS field [naashton] #3790
47
+ * Elavon: Strip ampersands [therufs] #3795
48
+ * Paybox: Add support for 3DS 1.0 values [jcpaybox] #3335
49
+
50
+ == Version 1.114.0
51
+ * BlueSnap: Add address1,address2,phone,shipping_* support #3749
52
+ * BlueSnap: Protect against `nil` metadata [carrigan] #3752
53
+ * Cybersource: [CyberSource] Ensure the default address doesn't override `ActionController::Parameters` [pi3r] #3755
54
+
55
+ == Version 1.113.0
56
+ * Orbital: Add cardIndicators field [meagabeth] #3734
57
+ * Openpay: Add Colombia to supported countries [molbrown] #3740
58
+ * Mercado Pago: Update Device Id Header field [cdmackeyfree] #3741
59
+ * RuboCop: Fix Style/TrailingCommaInHashLiteral [leila-alderman] #3718
60
+ * RuboCop: Fix Naming/PredicateName [leila-alderman] #3724
61
+ * RuboCop: Fix Style/Attr [leila-alderman] #3728
62
+ * Payflow: Use application_id to set buttonsource [britth] #3737
63
+ * HPS: Enable refunds using capture transaction [britth] #3738
64
+ * Quickbooks: Omit empty strings in address [leila-alderman] #3743
65
+ * BlueSnap: Add transactionMetaData support #3745
66
+ * Orbital: Fix typo in PC3DtlLineTot field [naashton] #3736
67
+ * Credorax: Send first and last name parameters for CFT transactions [britth] #3748
68
+ * Orbital: Update CardIndicators field to fix bug [meagabeth] #3746
69
+ * CyberSource: Always send default address [leila-alderman] #3747
70
+ * Netbanx: Reject partial refund on pending status [rockyhakjoong] #3735
71
+
72
+ == Version 1.112.0
73
+ * Cybersource: add `maestro` and `diners_club` eci brand mapping [bbraschi] #3708
74
+ * Cybersource: Ensure Partner Solution Id placement conforms to schema [britth] #3715
75
+ * Adyen: Adyen: Pass `subMerchantId` as `additionalData` [naashton] #3714
76
+ * Litle: Omit checkNum when nil [leila-alderman] #3719
77
+ * PayU Latam: Improve error response [esmitperez] #3717
78
+ * Vantiv: Vantiv Express - CardPresentCode, PaymentType, SubmissionType, DuplicateCheckDisableFlag [esmitperez] #3730,#3731
79
+ * Cybersource: Ensure issueradditionaldata comes before partnerSolutionId [britth] #3733
80
+
81
+ == Version 1.111.0
82
+ * Fat Zebra: standardized 3DS fields and card on file extra data for Visa scheme rules [montdidier] #3409
83
+ * Realex: Change 3DSecure v1 message_version to a valid format [shuhala] #3702
84
+ * Ingenico/ GlobalCollect: Add field for installments [cdmackeyfree] #3707
85
+ * Cybersource: do not send 3DS fields if 'cavv` is missing and `commerceIndicator` is inferred [bbraschi] #3712
86
+
5
87
  == Version 1.110.0
6
88
  * FirstData e4 v27+: Strip linebreaks from address [curiousepic] #3693
7
89
  * Adyen: Change shopper_email to email and shopper_ip to ip [rikterbeek] #3675
@@ -50,7 +50,7 @@ require 'active_merchant/version'
50
50
  require 'active_merchant/country'
51
51
 
52
52
  module ActiveMerchant
53
- def self.deprecated(message, caller=Kernel.caller[1])
53
+ def self.deprecated(message, caller = Kernel.caller[1])
54
54
  warning = caller + ': ' + message
55
55
  if respond_to?(:logger) && logger.present?
56
56
  logger.warn(warning)
@@ -88,7 +88,7 @@ module ActiveMerchant
88
88
  { 'code' => code,
89
89
  'message' => message,
90
90
  'street_match' => street_match,
91
- 'postal_match' => postal_match}
91
+ 'postal_match' => postal_match }
92
92
  end
93
93
  end
94
94
  end
@@ -28,7 +28,7 @@ module ActiveMerchant
28
28
  def self.humanize(lower_case_and_underscored_word)
29
29
  result = lower_case_and_underscored_word.to_s.dup
30
30
  result.gsub!(/_id$/, '')
31
- result.gsub!(/_/, ' ')
31
+ result.tr!('_', ' ')
32
32
  result.gsub(/([a-z\d]*)/i, &:downcase).gsub(/^\w/) { $&.upcase }
33
33
  end
34
34
  end
@@ -56,7 +56,7 @@ module ActiveMerchant
56
56
  private
57
57
 
58
58
  def internal_errors
59
- @errors ||= Errors.new
59
+ @internal_errors ||= Errors.new
60
60
  end
61
61
 
62
62
  class Errors < Hash
@@ -75,7 +75,7 @@ module ActiveMerchant
75
75
  end
76
76
 
77
77
  def empty?
78
- all? { |k, v| v&.empty? }
78
+ all? { |_k, v| v&.empty? }
79
79
  end
80
80
 
81
81
  def on(field)
@@ -190,7 +190,7 @@ module ActiveMerchant #:nodoc:
190
190
  'contactless' => 'Data was read by a Contactless EMV kernel. Issuer script results are not available.',
191
191
  'contactless_magstripe' => 'Contactless data was read with a non-EMV protocol.',
192
192
  'contact' => 'Data was read using the EMV protocol. Issuer script results may follow.',
193
- 'contact_quickchip' => 'Data was read by the Quickchip EMV kernel. Issuer script results are not available.',
193
+ 'contact_quickchip' => 'Data was read by the Quickchip EMV kernel. Issuer script results are not available.'
194
194
  }
195
195
 
196
196
  # Returns the ciphertext of the card's encrypted PIN.
@@ -104,11 +104,11 @@ module ActiveMerchant #:nodoc:
104
104
  506707..506708, 506715..506715, 506718..506722, 506724..506724, 506726..506736, 506739..506739, 506741..506743,
105
105
  506745..506747, 506753..506753, 506774..506776, 506778..506778, 509000..509001, 509003..509003, 509007..509007,
106
106
  509020..509022, 509035..509035, 509039..509042, 509045..509045, 509048..509048, 509051..509071, 509073..509074,
107
- 509077..509080, 509084..509084, 509091..509094, 509098..509098, 509100..509100, 509104..509104, 509106..509109,
108
- 627780..627780, 636368..636368, 650031..650033, 650035..650045, 650047..650047, 650406..650410, 650434..650436,
109
- 650439..650439, 650485..650504, 650506..650530, 650577..650580, 650582..650591, 650721..650727, 650901..650922,
110
- 650928..650928, 650938..650939, 650946..650948, 650954..650955, 650962..650963, 650967..650967, 650971..650971,
111
- 651652..651667, 651675..651678, 655000..655010, 655012..655015, 655051..655052, 655056..655057
107
+ 509077..509080, 509084..509089, 509091..509094, 509098..509098, 509100..509100, 509104..509104, 509106..509109,
108
+ 509257..509257, 627780..627780, 636368..636368, 650031..650033, 650035..650045, 650047..650047, 650406..650410,
109
+ 650434..650436, 650439..650439, 650485..650504, 650506..650530, 650577..650580, 650582..650591, 650721..650727,
110
+ 650901..650922, 650928..650928, 650938..650939, 650946..650948, 650954..650955, 650962..650963, 650967..650967,
111
+ 650971..650971, 651652..651667, 651675..651678, 655000..655010, 655012..655015, 655051..655052, 655056..655057
112
112
  ]
113
113
 
114
114
  # Alelo provides BIN ranges by e-mailing them out periodically.
@@ -329,7 +329,7 @@ module ActiveMerchant #:nodoc:
329
329
  54 => 3, # 6 * 2 - 9
330
330
  55 => 5, # etc ...
331
331
  56 => 7,
332
- 57 => 9,
332
+ 57 => 9
333
333
  }.freeze
334
334
 
335
335
  # Checks the validity of a card number by use of the Luhn Algorithm.
@@ -95,7 +95,7 @@ module ActiveMerchant #:nodoc:
95
95
  pickup_card: 'pick_up_card',
96
96
  config_error: 'config_error',
97
97
  test_mode_live_card: 'test_mode_live_card',
98
- unsupported_feature: 'unsupported_feature',
98
+ unsupported_feature: 'unsupported_feature'
99
99
  }
100
100
 
101
101
  cattr_reader :implementations
@@ -26,16 +26,16 @@ module ActiveMerchant #:nodoc:
26
26
  '132' => STANDARD_ERROR_CODE[:incorrect_address],
27
27
  '133' => STANDARD_ERROR_CODE[:incorrect_address],
28
28
  '134' => STANDARD_ERROR_CODE[:incorrect_address],
29
- '135' => STANDARD_ERROR_CODE[:incorrect_address],
29
+ '135' => STANDARD_ERROR_CODE[:incorrect_address]
30
30
  }
31
31
 
32
- def initialize(options={})
32
+ def initialize(options = {})
33
33
  requires!(options, :username, :password, :merchant_account)
34
34
  @username, @password, @merchant_account = options.values_at(:username, :password, :merchant_account)
35
35
  super
36
36
  end
37
37
 
38
- def purchase(money, payment, options={})
38
+ def purchase(money, payment, options = {})
39
39
  if options[:execute_threed] || options[:threed_dynamic]
40
40
  authorize(money, payment, options)
41
41
  else
@@ -46,7 +46,7 @@ module ActiveMerchant #:nodoc:
46
46
  end
47
47
  end
48
48
 
49
- def authorize(money, payment, options={})
49
+ def authorize(money, payment, options = {})
50
50
  requires!(options, :order_id)
51
51
  post = init_post(options)
52
52
  add_invoice(post, money, options)
@@ -62,7 +62,7 @@ module ActiveMerchant #:nodoc:
62
62
  commit('authorise', post, options)
63
63
  end
64
64
 
65
- def capture(money, authorization, options={})
65
+ def capture(money, authorization, options = {})
66
66
  post = init_post(options)
67
67
  add_invoice_for_modification(post, money, options)
68
68
  add_reference(post, authorization, options)
@@ -70,7 +70,7 @@ module ActiveMerchant #:nodoc:
70
70
  commit('capture', post, options)
71
71
  end
72
72
 
73
- def refund(money, authorization, options={})
73
+ def refund(money, authorization, options = {})
74
74
  post = init_post(options)
75
75
  add_invoice_for_modification(post, money, options)
76
76
  add_original_reference(post, authorization, options)
@@ -78,13 +78,13 @@ module ActiveMerchant #:nodoc:
78
78
  commit('refund', post, options)
79
79
  end
80
80
 
81
- def void(authorization, options={})
81
+ def void(authorization, options = {})
82
82
  post = init_post(options)
83
83
  add_reference(post, authorization, options)
84
84
  commit('cancel', post, options)
85
85
  end
86
86
 
87
- def adjust(money, authorization, options={})
87
+ def adjust(money, authorization, options = {})
88
88
  post = init_post(options)
89
89
  add_invoice_for_modification(post, money, options)
90
90
  add_reference(post, authorization, options)
@@ -92,7 +92,7 @@ module ActiveMerchant #:nodoc:
92
92
  commit('adjustAuthorisation', post, options)
93
93
  end
94
94
 
95
- def store(credit_card, options={})
95
+ def store(credit_card, options = {})
96
96
  requires!(options, :order_id)
97
97
  post = init_post(options)
98
98
  add_invoice(post, 0, options)
@@ -115,7 +115,7 @@ module ActiveMerchant #:nodoc:
115
115
  end
116
116
  end
117
117
 
118
- def unstore(options={})
118
+ def unstore(options = {})
119
119
  requires!(options, :shopper_reference, :recurring_detail_reference)
120
120
  post = {}
121
121
 
@@ -126,7 +126,7 @@ module ActiveMerchant #:nodoc:
126
126
  commit('disable', post, options)
127
127
  end
128
128
 
129
- def verify(credit_card, options={})
129
+ def verify(credit_card, options = {})
130
130
  MultiResponse.run(:use_first_response) do |r|
131
131
  r.process { authorize(0, credit_card, options) }
132
132
  options[:idempotency_key] = nil
@@ -214,6 +214,7 @@ module ActiveMerchant #:nodoc:
214
214
  add_shopper_data(post, options)
215
215
  add_risk_data(post, options)
216
216
  add_shopper_reference(post, options)
217
+ add_merchant_data(post, options)
217
218
  end
218
219
 
219
220
  def add_shopper_data(post, options)
@@ -225,6 +226,19 @@ module ActiveMerchant #:nodoc:
225
226
  post[:additionalData][:updateShopperStatement] = options[:update_shopper_statement] if options[:update_shopper_statement]
226
227
  end
227
228
 
229
+ def add_merchant_data(post, options)
230
+ post[:additionalData][:subMerchantId] = options[:sub_merchant_id] if options[:sub_merchant_id]
231
+ post[:additionalData][:subMerchantName] = options[:sub_merchant_name] if options[:sub_merchant_name]
232
+ post[:additionalData][:subMerchantStreet] = options[:sub_merchant_street] if options[:sub_merchant_street]
233
+ post[:additionalData][:subMerchantCity] = options[:sub_merchant_city] if options[:sub_merchant_city]
234
+ post[:additionalData][:subMerchantState] = options[:sub_merchant_state] if options[:sub_merchant_state]
235
+ post[:additionalData][:subMerchantPostalCode] = options[:sub_merchant_postal_code] if options[:sub_merchant_postal_code]
236
+ post[:additionalData][:subMerchantCountry] = options[:sub_merchant_country] if options[:sub_merchant_country]
237
+ post[:additionalData][:subMerchantTaxId] = options[:sub_merchant_tax_id] if options[:sub_merchant_tax_id]
238
+ post[:additionalData][:subMerchantId] = options[:sub_merchant_id] if options[:sub_merchant_id]
239
+ post[:additionalData][:subMerchantMCC] = options[:sub_merchant_mcc] if options[:sub_merchant_mcc]
240
+ end
241
+
228
242
  def add_risk_data(post, options)
229
243
  if (risk_data = options[:risk_data])
230
244
  risk_data = Hash[risk_data.map { |k, v| ["riskdata.#{k}", v] }]
@@ -238,7 +252,7 @@ module ActiveMerchant #:nodoc:
238
252
  splits = []
239
253
  split_data.each do |split|
240
254
  amount = {
241
- value: split['amount']['value'],
255
+ value: split['amount']['value']
242
256
  }
243
257
  amount[:currency] = split['amount']['currency'] if split['amount']['currency']
244
258
 
@@ -266,7 +280,7 @@ module ActiveMerchant #:nodoc:
266
280
  post[:shopperReference] = options[:shopper_reference] if options[:shopper_reference]
267
281
  end
268
282
 
269
- def add_shopper_interaction(post, payment, options={})
283
+ def add_shopper_interaction(post, payment, options = {})
270
284
  if (options.dig(:stored_credential, :initial_transaction) && options.dig(:stored_credential, :initiator) == 'cardholder') ||
271
285
  (payment.respond_to?(:verification_value) && payment.verification_value && options.dig(:stored_credential, :initial_transaction).nil?) ||
272
286
  payment.is_a?(NetworkTokenizationCreditCard)
@@ -359,7 +373,7 @@ module ActiveMerchant #:nodoc:
359
373
  cvc: credit_card.verification_value
360
374
  }
361
375
 
362
- card.delete_if { |k, v| v.blank? }
376
+ card.delete_if { |_k, v| v.blank? }
363
377
  card[:holderName] ||= 'Not Provided' if credit_card.is_a?(NetworkTokenizationCreditCard)
364
378
  requires!(card, :expiryMonth, :expiryYear, :holderName, :number)
365
379
  post[:card] = card
@@ -427,7 +441,8 @@ module ActiveMerchant #:nodoc:
427
441
  return unless !options[:execute_threed].nil? || !options[:threed_dynamic].nil?
428
442
 
429
443
  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?
444
+ post[:additionalData] ||= {}
445
+ post[:additionalData][:executeThreeD] = options[:execute_threed] if !options[:execute_threed].nil?
431
446
  end
432
447
  end
433
448
 
@@ -12,12 +12,12 @@ module ActiveMerchant #:nodoc:
12
12
  self.supported_cardtypes = %i[visa master american_express discover
13
13
  diners_club jcb maestro]
14
14
 
15
- def initialize(options={})
15
+ def initialize(options = {})
16
16
  requires!(options, :site_id, :merchant_id, :token)
17
17
  super
18
18
  end
19
19
 
20
- def purchase(amount, payment_method, options={})
20
+ def purchase(amount, payment_method, options = {})
21
21
  post = {}
22
22
  add_invoice(post, amount, options)
23
23
  add_payment_method(post, payment_method)
@@ -26,7 +26,7 @@ module ActiveMerchant #:nodoc:
26
26
  commit(:purchase, post)
27
27
  end
28
28
 
29
- def authorize(amount, payment_method, options={})
29
+ def authorize(amount, payment_method, options = {})
30
30
  post = {}
31
31
  add_invoice(post, amount, options)
32
32
  add_payment_method(post, payment_method)
@@ -35,7 +35,7 @@ module ActiveMerchant #:nodoc:
35
35
  commit(:authorize, post)
36
36
  end
37
37
 
38
- def capture(amount, authorization, options={})
38
+ def capture(amount, authorization, options = {})
39
39
  post = {}
40
40
  add_invoice(post, amount, options)
41
41
  add_reference(post, authorization, :capture)
@@ -44,14 +44,14 @@ module ActiveMerchant #:nodoc:
44
44
  commit(:capture, post)
45
45
  end
46
46
 
47
- def void(authorization, options={})
47
+ def void(authorization, options = {})
48
48
  post = {}
49
49
  add_reference(post, authorization, :void)
50
50
 
51
51
  commit(:void, post)
52
52
  end
53
53
 
54
- def refund(amount, authorization, options={})
54
+ def refund(amount, authorization, options = {})
55
55
  post = {}
56
56
  add_invoice(post, amount, options)
57
57
  add_reference(post, authorization, :refund)
@@ -61,7 +61,7 @@ module ActiveMerchant #:nodoc:
61
61
  commit(:refund, post)
62
62
  end
63
63
 
64
- def verify(credit_card, options={})
64
+ def verify(credit_card, options = {})
65
65
  MultiResponse.run(:use_first_response) do |r|
66
66
  r.process { authorize(100, credit_card, options) }
67
67
  r.process(:ignore_result) { void(r.authorization, options) }
@@ -54,7 +54,7 @@ module ActiveMerchant
54
54
  '37' => STANDARD_ERROR_CODE[:invalid_expiry_date],
55
55
  '378' => STANDARD_ERROR_CODE[:invalid_cvc],
56
56
  '38' => STANDARD_ERROR_CODE[:expired_card],
57
- '384' => STANDARD_ERROR_CODE[:config_error],
57
+ '384' => STANDARD_ERROR_CODE[:config_error]
58
58
  }
59
59
 
60
60
  MARKET_TYPE = {
@@ -94,7 +94,7 @@ module ActiveMerchant
94
94
  PAYMENT_METHOD_NOT_SUPPORTED_ERROR = '155'
95
95
  INELIGIBLE_FOR_ISSUING_CREDIT_ERROR = '54'
96
96
 
97
- def initialize(options={})
97
+ def initialize(options = {})
98
98
  requires!(options, :login, :password)
99
99
  super
100
100
  end
@@ -111,7 +111,7 @@ module ActiveMerchant
111
111
  end
112
112
  end
113
113
 
114
- def authorize(amount, payment, options={})
114
+ def authorize(amount, payment, options = {})
115
115
  if payment.is_a?(String)
116
116
  commit(:cim_authorize, options) do |xml|
117
117
  add_cim_auth_purchase(xml, 'profileTransAuthOnly', amount, payment, options)
@@ -123,7 +123,7 @@ module ActiveMerchant
123
123
  end
124
124
  end
125
125
 
126
- def capture(amount, authorization, options={})
126
+ def capture(amount, authorization, options = {})
127
127
  if auth_was_for_cim?(authorization)
128
128
  cim_capture(amount, authorization, options)
129
129
  else
@@ -131,7 +131,7 @@ module ActiveMerchant
131
131
  end
132
132
  end
133
133
 
134
- def refund(amount, authorization, options={})
134
+ def refund(amount, authorization, options = {})
135
135
  response =
136
136
  if auth_was_for_cim?(authorization)
137
137
  cim_refund(amount, authorization, options)
@@ -149,7 +149,7 @@ module ActiveMerchant
149
149
  end
150
150
  end
151
151
 
152
- def void(authorization, options={})
152
+ def void(authorization, options = {})
153
153
  if auth_was_for_cim?(authorization)
154
154
  cim_void(authorization, options)
155
155
  else
@@ -157,7 +157,7 @@ module ActiveMerchant
157
157
  end
158
158
  end
159
159
 
160
- def credit(amount, payment, options={})
160
+ def credit(amount, payment, options = {})
161
161
  raise ArgumentError, 'Reference credits are not supported. Please supply the original credit card or use the #refund method.' if payment.is_a?(String)
162
162
 
163
163
  commit(:credit) do |xml|
@@ -568,9 +568,11 @@ module ActiveMerchant
568
568
  xml.cardholderAuthentication do
569
569
  three_d_secure = options.fetch(:three_d_secure, {})
570
570
  xml.authenticationIndicator(
571
- options[:authentication_indicator] || three_d_secure[:eci])
571
+ options[:authentication_indicator] || three_d_secure[:eci]
572
+ )
572
573
  xml.cardholderAuthenticationValue(
573
- options[:cardholder_authentication_value] || three_d_secure[:cavv])
574
+ options[:cardholder_authentication_value] || three_d_secure[:cavv]
575
+ )
574
576
  end
575
577
  end
576
578
 
@@ -595,7 +597,7 @@ module ActiveMerchant
595
597
  end
596
598
  end
597
599
 
598
- def add_shipping_address(xml, options, root_node='shipTo')
600
+ def add_shipping_address(xml, options, root_node = 'shipTo')
599
601
  address = options[:shipping_address] || options[:address]
600
602
  return unless address
601
603
 
@@ -619,7 +621,7 @@ module ActiveMerchant
619
621
  end
620
622
  end
621
623
 
622
- def add_ship_from_address(xml, options, root_node='shipFrom')
624
+ def add_ship_from_address(xml, options, root_node = 'shipFrom')
623
625
  address = options[:ship_from_address]
624
626
  return unless address
625
627
 
@@ -771,7 +773,7 @@ module ActiveMerchant
771
773
  end
772
774
 
773
775
  def parse(action, raw_response, options = {})
774
- if is_cim_action?(action) || action == :verify_credentials
776
+ if cim_action?(action) || action == :verify_credentials
775
777
  parse_cim(raw_response, options)
776
778
  else
777
779
  parse_normal(action, raw_response)
@@ -802,7 +804,7 @@ module ActiveMerchant
802
804
  end
803
805
  end
804
806
 
805
- def is_cim_action?(action)
807
+ def cim_action?(action)
806
808
  action.to_s.start_with?('cim')
807
809
  end
808
810
 
@@ -824,7 +826,7 @@ module ActiveMerchant
824
826
  'deleteCustomerProfileRequest'
825
827
  elsif action == :verify_credentials
826
828
  'authenticateTestRequest'
827
- elsif is_cim_action?(action)
829
+ elsif cim_action?(action)
828
830
  'createCustomerProfileTransactionRequest'
829
831
  else
830
832
  'createTransactionRequest'
@@ -842,7 +844,7 @@ module ActiveMerchant
842
844
  doc = Nokogiri::XML(body)
843
845
  doc.remove_namespaces!
844
846
 
845
- response = {action: action}
847
+ response = { action: action }
846
848
 
847
849
  response[:response_code] = if (element = doc.at_xpath('//transactionResponse/responseCode'))
848
850
  empty?(element.content) ? nil : element.content.to_i
@@ -1006,7 +1008,7 @@ module ActiveMerchant
1006
1008
 
1007
1009
  def auth_was_for_cim?(authorization)
1008
1010
  _, _, action = split_authorization(authorization)
1009
- action && is_cim_action?(action)
1011
+ action && cim_action?(action)
1010
1012
  end
1011
1013
 
1012
1014
  def parse_direct_response_elements(response, options)
@@ -1059,7 +1061,7 @@ module ActiveMerchant
1059
1061
  card_type: parts[51] || '',
1060
1062
  split_tender_id: parts[52] || '',
1061
1063
  requested_amount: parts[53] || '',
1062
- balance_on_card: parts[54] || '',
1064
+ balance_on_card: parts[54] || ''
1063
1065
  }
1064
1066
  end
1065
1067
  end