activemerchant 1.137.0 → 1.138.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 (273) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +212 -2
  3. data/CONTRIBUTORS +1 -0
  4. data/lib/active_merchant/billing/apple_pay_payment_token.rb +2 -2
  5. data/lib/active_merchant/billing/base.rb +2 -2
  6. data/lib/active_merchant/billing/check.rb +14 -2
  7. data/lib/active_merchant/billing/credit_card.rb +24 -8
  8. data/lib/active_merchant/billing/credit_card_formatting.rb +9 -2
  9. data/lib/active_merchant/billing/credit_card_methods.rb +17 -15
  10. data/lib/active_merchant/billing/gateway.rb +13 -2
  11. data/lib/active_merchant/billing/gateways/adyen.rb +139 -63
  12. data/lib/active_merchant/billing/gateways/airwallex.rb +22 -15
  13. data/lib/active_merchant/billing/gateways/alelo.rb +6 -6
  14. data/lib/active_merchant/billing/gateways/allied_wallet.rb +2 -2
  15. data/lib/active_merchant/billing/gateways/authorize_net.rb +6 -6
  16. data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +4 -4
  17. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +2 -2
  18. data/lib/active_merchant/billing/gateways/axcessms.rb +3 -3
  19. data/lib/active_merchant/billing/gateways/balanced.rb +2 -2
  20. data/lib/active_merchant/billing/gateways/bambora_apac.rb +2 -2
  21. data/lib/active_merchant/billing/gateways/bank_frick.rb +2 -2
  22. data/lib/active_merchant/billing/gateways/banwire.rb +2 -2
  23. data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +8 -8
  24. data/lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb +2 -2
  25. data/lib/active_merchant/billing/gateways/be2bill.rb +2 -2
  26. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +5 -5
  27. data/lib/active_merchant/billing/gateways/beanstream.rb +2 -2
  28. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +2 -2
  29. data/lib/active_merchant/billing/gateways/blue_pay.rb +2 -2
  30. data/lib/active_merchant/billing/gateways/bogus.rb +2 -2
  31. data/lib/active_merchant/billing/gateways/borgun.rb +2 -2
  32. data/lib/active_merchant/billing/gateways/bpoint.rb +2 -2
  33. data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +3 -1
  34. data/lib/active_merchant/billing/gateways/braintree/token_nonce.rb +4 -4
  35. data/lib/active_merchant/billing/gateways/braintree.rb +2 -2
  36. data/lib/active_merchant/billing/gateways/braintree_blue.rb +56 -32
  37. data/lib/active_merchant/billing/gateways/braintree_orange.rb +2 -2
  38. data/lib/active_merchant/billing/gateways/bridge_pay.rb +2 -2
  39. data/lib/active_merchant/billing/gateways/cams.rb +2 -2
  40. data/lib/active_merchant/billing/gateways/card_connect.rb +2 -2
  41. data/lib/active_merchant/billing/gateways/card_save.rb +2 -2
  42. data/lib/active_merchant/billing/gateways/card_stream.rb +8 -7
  43. data/lib/active_merchant/billing/gateways/cardknox.rb +2 -2
  44. data/lib/active_merchant/billing/gateways/cardprocess.rb +2 -2
  45. data/lib/active_merchant/billing/gateways/cashnet.rb +3 -3
  46. data/lib/active_merchant/billing/gateways/cc5.rb +2 -2
  47. data/lib/active_merchant/billing/gateways/cecabank/cecabank_json.rb +27 -12
  48. data/lib/active_merchant/billing/gateways/cecabank.rb +2 -2
  49. data/lib/active_merchant/billing/gateways/cenpos.rb +9 -3
  50. data/lib/active_merchant/billing/gateways/checkout.rb +5 -5
  51. data/lib/active_merchant/billing/gateways/checkout_v2.rb +128 -20
  52. data/lib/active_merchant/billing/gateways/clearhaus.rb +2 -2
  53. data/lib/active_merchant/billing/gateways/commerce_hub.rb +57 -32
  54. data/lib/active_merchant/billing/gateways/commercegate.rb +4 -4
  55. data/lib/active_merchant/billing/gateways/conekta.rb +2 -2
  56. data/lib/active_merchant/billing/gateways/creditcall.rb +2 -2
  57. data/lib/active_merchant/billing/gateways/credorax.rb +106 -15
  58. data/lib/active_merchant/billing/gateways/ct_payment.rb +6 -6
  59. data/lib/active_merchant/billing/gateways/culqi.rb +2 -2
  60. data/lib/active_merchant/billing/gateways/cyber_source/cyber_source_common.rb +2 -2
  61. data/lib/active_merchant/billing/gateways/cyber_source.rb +237 -96
  62. data/lib/active_merchant/billing/gateways/cyber_source_rest.rb +64 -37
  63. data/lib/active_merchant/billing/gateways/d_local.rb +19 -7
  64. data/lib/active_merchant/billing/gateways/data_cash.rb +1 -1
  65. data/lib/active_merchant/billing/gateways/datatrans.rb +16 -11
  66. data/lib/active_merchant/billing/gateways/decidir.rb +30 -29
  67. data/lib/active_merchant/billing/gateways/decidir_plus.rb +27 -34
  68. data/lib/active_merchant/billing/gateways/deepstack.rb +2 -2
  69. data/lib/active_merchant/billing/gateways/dibs.rb +3 -3
  70. data/lib/active_merchant/billing/gateways/digitzs.rb +2 -2
  71. data/lib/active_merchant/billing/gateways/ebanx.rb +82 -38
  72. data/lib/active_merchant/billing/gateways/efsnet.rb +7 -6
  73. data/lib/active_merchant/billing/gateways/elavon.rb +8 -41
  74. data/lib/active_merchant/billing/gateways/element.rb +3 -3
  75. data/lib/active_merchant/billing/gateways/epay.rb +2 -2
  76. data/lib/active_merchant/billing/gateways/evo_ca.rb +2 -2
  77. data/lib/active_merchant/billing/gateways/eway.rb +2 -2
  78. data/lib/active_merchant/billing/gateways/eway_managed.rb +2 -2
  79. data/lib/active_merchant/billing/gateways/eway_rapid.rb +3 -3
  80. data/lib/active_merchant/billing/gateways/exact.rb +2 -2
  81. data/lib/active_merchant/billing/gateways/fat_zebra.rb +6 -4
  82. data/lib/active_merchant/billing/gateways/federated_canada.rb +2 -2
  83. data/lib/active_merchant/billing/gateways/finansbank.rb +2 -2
  84. data/lib/active_merchant/billing/gateways/first_giving.rb +2 -2
  85. data/lib/active_merchant/billing/gateways/first_pay/first_pay_json.rb +2 -2
  86. data/lib/active_merchant/billing/gateways/first_pay/first_pay_xml.rb +2 -2
  87. data/lib/active_merchant/billing/gateways/first_pay.rb +2 -2
  88. data/lib/active_merchant/billing/gateways/firstdata_e4.rb +2 -2
  89. data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +2 -2
  90. data/lib/active_merchant/billing/gateways/flex_charge.rb +40 -28
  91. data/lib/active_merchant/billing/gateways/flo2cash.rb +4 -2
  92. data/lib/active_merchant/billing/gateways/flo2cash_simple.rb +2 -2
  93. data/lib/active_merchant/billing/gateways/forte.rb +6 -4
  94. data/lib/active_merchant/billing/gateways/fortis.rb +347 -0
  95. data/lib/active_merchant/billing/gateways/garanti.rb +2 -2
  96. data/lib/active_merchant/billing/gateways/global_collect.rb +29 -18
  97. data/lib/active_merchant/billing/gateways/global_transport.rb +2 -2
  98. data/lib/active_merchant/billing/gateways/hdfc.rb +2 -2
  99. data/lib/active_merchant/billing/gateways/hi_pay.rb +7 -6
  100. data/lib/active_merchant/billing/gateways/hps.rb +40 -47
  101. data/lib/active_merchant/billing/gateways/iats_payments.rb +2 -2
  102. data/lib/active_merchant/billing/gateways/in_context_paypal_express.rb +2 -2
  103. data/lib/active_merchant/billing/gateways/inspire.rb +2 -2
  104. data/lib/active_merchant/billing/gateways/instapay.rb +2 -2
  105. data/lib/active_merchant/billing/gateways/ipg.rb +5 -5
  106. data/lib/active_merchant/billing/gateways/ipp.rb +2 -2
  107. data/lib/active_merchant/billing/gateways/iridium.rb +3 -3
  108. data/lib/active_merchant/billing/gateways/itransact.rb +2 -2
  109. data/lib/active_merchant/billing/gateways/iveri.rb +9 -6
  110. data/lib/active_merchant/billing/gateways/ixopay.rb +2 -2
  111. data/lib/active_merchant/billing/gateways/jetpay.rb +2 -2
  112. data/lib/active_merchant/billing/gateways/jetpay_v2.rb +5 -4
  113. data/lib/active_merchant/billing/gateways/komoju.rb +2 -2
  114. data/lib/active_merchant/billing/gateways/kushki.rb +7 -4
  115. data/lib/active_merchant/billing/gateways/latitude19.rb +2 -2
  116. data/lib/active_merchant/billing/gateways/linkpoint.rb +2 -2
  117. data/lib/active_merchant/billing/gateways/litle.rb +5 -5
  118. data/lib/active_merchant/billing/gateways/loan_payment_pro.rb +267 -0
  119. data/lib/active_merchant/billing/gateways/loan_payment_pro_ach.rb +93 -0
  120. data/lib/active_merchant/billing/gateways/maxipago.rb +2 -2
  121. data/lib/active_merchant/billing/gateways/mercado_pago.rb +32 -11
  122. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +2 -2
  123. data/lib/active_merchant/billing/gateways/merchant_one.rb +2 -2
  124. data/lib/active_merchant/billing/gateways/merchant_partners.rb +2 -2
  125. data/lib/active_merchant/billing/gateways/merchant_ware.rb +2 -2
  126. data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +2 -2
  127. data/lib/active_merchant/billing/gateways/merchant_warrior.rb +2 -2
  128. data/lib/active_merchant/billing/gateways/mercury.rb +5 -3
  129. data/lib/active_merchant/billing/gateways/metrics_global.rb +2 -2
  130. data/lib/active_merchant/billing/gateways/micropayment.rb +2 -2
  131. data/lib/active_merchant/billing/gateways/migs/migs_codes.rb +6 -6
  132. data/lib/active_merchant/billing/gateways/migs.rb +2 -2
  133. data/lib/active_merchant/billing/gateways/mit.rb +3 -3
  134. data/lib/active_merchant/billing/gateways/modern_payments.rb +2 -2
  135. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +3 -3
  136. data/lib/active_merchant/billing/gateways/moka.rb +2 -2
  137. data/lib/active_merchant/billing/gateways/monei.rb +2 -2
  138. data/lib/active_merchant/billing/gateways/moneris.rb +2 -2
  139. data/lib/active_merchant/billing/gateways/money_movers.rb +2 -2
  140. data/lib/active_merchant/billing/gateways/multi_pay.rb +267 -0
  141. data/lib/active_merchant/billing/gateways/mundipagg.rb +5 -3
  142. data/lib/active_merchant/billing/gateways/nab_transact.rb +6 -6
  143. data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +2 -2
  144. data/lib/active_merchant/billing/gateways/netaxept.rb +4 -4
  145. data/lib/active_merchant/billing/gateways/netbanx.rb +3 -3
  146. data/lib/active_merchant/billing/gateways/netbilling.rb +2 -2
  147. data/lib/active_merchant/billing/gateways/netpay.rb +2 -2
  148. data/lib/active_merchant/billing/gateways/network_merchants.rb +3 -3
  149. data/lib/active_merchant/billing/gateways/nmi.rb +13 -4
  150. data/lib/active_merchant/billing/gateways/nuvei.rb +573 -0
  151. data/lib/active_merchant/billing/gateways/ogone.rb +2 -2
  152. data/lib/active_merchant/billing/gateways/omise.rb +2 -2
  153. data/lib/active_merchant/billing/gateways/openpay.rb +2 -2
  154. data/lib/active_merchant/billing/gateways/opp.rb +2 -2
  155. data/lib/active_merchant/billing/gateways/optimal_payment.rb +6 -4
  156. data/lib/active_merchant/billing/gateways/orbital/orbital_codes.rb +273 -0
  157. data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +2 -2
  158. data/lib/active_merchant/billing/gateways/orbital.rb +47 -86
  159. data/lib/active_merchant/billing/gateways/pac_net_raven.rb +2 -2
  160. data/lib/active_merchant/billing/gateways/pagarme.rb +2 -2
  161. data/lib/active_merchant/billing/gateways/pago_facil.rb +2 -2
  162. data/lib/active_merchant/billing/gateways/pay_arc.rb +9 -7
  163. data/lib/active_merchant/billing/gateways/pay_conex.rb +6 -4
  164. data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +2 -2
  165. data/lib/active_merchant/billing/gateways/pay_hub.rb +3 -3
  166. data/lib/active_merchant/billing/gateways/pay_junction.rb +2 -2
  167. data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +2 -2
  168. data/lib/active_merchant/billing/gateways/pay_secure.rb +2 -2
  169. data/lib/active_merchant/billing/gateways/pay_trace.rb +5 -4
  170. data/lib/active_merchant/billing/gateways/paybox_direct.rb +14 -14
  171. data/lib/active_merchant/billing/gateways/payeezy.rb +7 -5
  172. data/lib/active_merchant/billing/gateways/payex.rb +4 -4
  173. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +2 -2
  174. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +2 -2
  175. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +2 -2
  176. data/lib/active_merchant/billing/gateways/payflow.rb +11 -8
  177. data/lib/active_merchant/billing/gateways/payflow_express.rb +2 -2
  178. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +2 -2
  179. data/lib/active_merchant/billing/gateways/payflow_uk.rb +2 -2
  180. data/lib/active_merchant/billing/gateways/payment_express.rb +2 -2
  181. data/lib/active_merchant/billing/gateways/paymentez.rb +7 -5
  182. data/lib/active_merchant/billing/gateways/paymill.rb +6 -4
  183. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +17 -12
  184. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +2 -2
  185. data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +2 -2
  186. data/lib/active_merchant/billing/gateways/paypal.rb +4 -2
  187. data/lib/active_merchant/billing/gateways/paypal_ca.rb +2 -2
  188. data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +2 -2
  189. data/lib/active_merchant/billing/gateways/paypal_express.rb +4 -2
  190. data/lib/active_merchant/billing/gateways/paysafe.rb +36 -13
  191. data/lib/active_merchant/billing/gateways/payscout.rb +2 -2
  192. data/lib/active_merchant/billing/gateways/paystation.rb +2 -2
  193. data/lib/active_merchant/billing/gateways/payu_in.rb +2 -2
  194. data/lib/active_merchant/billing/gateways/payu_latam.rb +7 -5
  195. data/lib/active_merchant/billing/gateways/payway_dot_com.rb +4 -4
  196. data/lib/active_merchant/billing/gateways/pin.rb +104 -37
  197. data/lib/active_merchant/billing/gateways/plexo.rb +32 -20
  198. data/lib/active_merchant/billing/gateways/priority.rb +23 -19
  199. data/lib/active_merchant/billing/gateways/pro_pay.rb +2 -2
  200. data/lib/active_merchant/billing/gateways/psigate.rb +2 -2
  201. data/lib/active_merchant/billing/gateways/qbms.rb +3 -3
  202. data/lib/active_merchant/billing/gateways/quantum.rb +3 -3
  203. data/lib/active_merchant/billing/gateways/quickbooks.rb +21 -12
  204. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +2 -2
  205. data/lib/active_merchant/billing/gateways/quickpay.rb +2 -2
  206. data/lib/active_merchant/billing/gateways/qvalent.rb +2 -2
  207. data/lib/active_merchant/billing/gateways/rapyd.rb +28 -11
  208. data/lib/active_merchant/billing/gateways/reach.rb +5 -5
  209. data/lib/active_merchant/billing/gateways/redsys.rb +5 -5
  210. data/lib/active_merchant/billing/gateways/redsys_rest.rb +57 -19
  211. data/lib/active_merchant/billing/gateways/s5.rb +2 -2
  212. data/lib/active_merchant/billing/gateways/safe_charge.rb +12 -9
  213. data/lib/active_merchant/billing/gateways/sage.rb +2 -2
  214. data/lib/active_merchant/billing/gateways/sage_pay.rb +2 -2
  215. data/lib/active_merchant/billing/gateways/sallie_mae.rb +2 -2
  216. data/lib/active_merchant/billing/gateways/secure_net.rb +3 -3
  217. data/lib/active_merchant/billing/gateways/secure_pay.rb +2 -2
  218. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +13 -11
  219. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +2 -2
  220. data/lib/active_merchant/billing/gateways/securion_pay.rb +2 -2
  221. data/lib/active_merchant/billing/gateways/shift4.rb +19 -8
  222. data/lib/active_merchant/billing/gateways/shift4_v2.rb +2 -2
  223. data/lib/active_merchant/billing/gateways/simetrik.rb +9 -6
  224. data/lib/active_merchant/billing/gateways/skip_jack.rb +2 -2
  225. data/lib/active_merchant/billing/gateways/smart_ps.rb +3 -3
  226. data/lib/active_merchant/billing/gateways/so_easy_pay.rb +2 -2
  227. data/lib/active_merchant/billing/gateways/spreedly_core.rb +2 -2
  228. data/lib/active_merchant/billing/gateways/stripe.rb +41 -69
  229. data/lib/active_merchant/billing/gateways/stripe_payment_intents.rb +218 -56
  230. data/lib/active_merchant/billing/gateways/sum_up.rb +5 -4
  231. data/lib/active_merchant/billing/gateways/swipe_checkout.rb +2 -2
  232. data/lib/active_merchant/billing/gateways/telr.rb +3 -3
  233. data/lib/active_merchant/billing/gateways/trans_first.rb +5 -2
  234. data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +2 -2
  235. data/lib/active_merchant/billing/gateways/transact_pro.rb +2 -2
  236. data/lib/active_merchant/billing/gateways/transax.rb +2 -2
  237. data/lib/active_merchant/billing/gateways/transnational.rb +2 -2
  238. data/lib/active_merchant/billing/gateways/trexle.rb +2 -2
  239. data/lib/active_merchant/billing/gateways/trust_commerce.rb +3 -3
  240. data/lib/active_merchant/billing/gateways/usa_epay.rb +2 -2
  241. data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +23 -23
  242. data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +3 -3
  243. data/lib/active_merchant/billing/gateways/vantiv_express.rb +84 -3
  244. data/lib/active_merchant/billing/gateways/verifi.rb +6 -6
  245. data/lib/active_merchant/billing/gateways/versa_pay.rb +307 -0
  246. data/lib/active_merchant/billing/gateways/viaklix.rb +2 -2
  247. data/lib/active_merchant/billing/gateways/visanet_peru.rb +3 -3
  248. data/lib/active_merchant/billing/gateways/vpos.rb +23 -11
  249. data/lib/active_merchant/billing/gateways/webpay.rb +3 -3
  250. data/lib/active_merchant/billing/gateways/wepay.rb +6 -4
  251. data/lib/active_merchant/billing/gateways/wirecard.rb +3 -3
  252. data/lib/active_merchant/billing/gateways/wompi.rb +9 -7
  253. data/lib/active_merchant/billing/gateways/world_net.rb +2 -2
  254. data/lib/active_merchant/billing/gateways/worldpay.rb +180 -63
  255. data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +3 -3
  256. data/lib/active_merchant/billing/gateways/worldpay_us.rb +2 -2
  257. data/lib/active_merchant/billing/gateways/xpay.rb +8 -6
  258. data/lib/active_merchant/billing/network_tokenization_credit_card.rb +14 -2
  259. data/lib/active_merchant/billing/payment_token.rb +2 -2
  260. data/lib/active_merchant/billing/response.rb +5 -4
  261. data/lib/active_merchant/billing.rb +1 -0
  262. data/lib/active_merchant/connection.rb +6 -4
  263. data/lib/active_merchant/country.rb +2 -1
  264. data/lib/active_merchant/errors.rb +2 -2
  265. data/lib/active_merchant/net_http_ssl_connection.rb +35 -0
  266. data/lib/active_merchant/posts_data.rb +19 -4
  267. data/lib/active_merchant/version.rb +1 -1
  268. data/lib/active_merchant/versionable.rb +29 -0
  269. data/lib/certs/cacert.pem +1326 -1491
  270. data/lib/support/gateway_support.rb +1 -1
  271. data/lib/support/ssl_verify.rb +2 -2
  272. data/lib/support/ssl_version.rb +2 -2
  273. metadata +13 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d71204a4cd8ef7e75b2c6f2116d56af1d2effc900cc89aa4946181d664a1ffb2
4
- data.tar.gz: ead62c51a2d708e9e79e39fea62021dfdc72fbdaefad045099e4b9238d9ac355
3
+ metadata.gz: 6df6c6a58c5b6cf99e4cd2b624e0750cfc0ba34d09b62371f6db05ce70b6b536
4
+ data.tar.gz: 39b9985e43651a7ad21eaa4222f2538ca3c72a730f92798d6ae2975b7f2f01ff
5
5
  SHA512:
6
- metadata.gz: 1d029ce9b932cc72acd56799cfa4ed6debb36ce153290eb99c260a400abd08f108fd9f0ae547e558f009c0d37f49df5008c7b0bbc5adf5e4810ed562058d82bb
7
- data.tar.gz: 1ecb1bc3e94611c3017f233ed3ea59efd91213ad07497aa2f38ec731536aec6bd518853d6cf044d7a9217a068c92f08e1df98cca29596d1005773bc2bdeb1692
6
+ metadata.gz: 3781d3d30264e02c01d174ef1c5250f001128a452c294f251a0906299c9badf0d4466ac5406228444997740a78756e0e72ad0d1030f2beb370f7069a80ed0fc7
7
+ data.tar.gz: 4fd6f30fb43c3418c66fb4b07684fcf1c1b889ef112ddb54a54d4c749d037c5d17c77c57c522c9928731b6dbc6a91645cb71c4ddc9a737fbc94d7cfd171e98a1
data/CHANGELOG CHANGED
@@ -3,8 +3,213 @@
3
3
 
4
4
  == HEAD
5
5
 
6
- = Version 1.137.0 (August 2, 2024)
7
-
6
+ == Version 1.138.0 (October 21, 2026)
7
+ * Connection: Update the bundled CA file to the Mozilla root store as of 2026-10-20, removing emSign ECC Root CA - G3 and Comodo AAA Services root [Ginja] #5600
8
+ * Efsnet, Flo2cash: Fix parsing with rexml 3.4.2 and later, and repair unit tests broken by rexml 3.4.2 and NMI test stubs [Ginja] #5601
9
+ * Mercury, TransFirst: Repair gateways following updates to `rexml` [aenand] #5206
10
+ * NMI: Fix Decrypted indicator for Google/Apple pay [javierpedrozaing] #5196
11
+ * FlexCharge: add more descriptives error messages [gasb150] #5199
12
+ * Braintree: Updates to Paypal Integration [almalee24] #5190
13
+ * Stripe and Stripe PI: Add metadata and order_id for refund and void [yunnydang] #5204
14
+ * CommerceHub: Update test url [DustinHaefele] #5211
15
+ * Adyen: Fix billing address empty string error [yunnydang] #5208
16
+ * Elavon: Update sending CVV for MIT transactions [almalee24] #5210
17
+ * Adyen: Fix NT integration [jherreraa] #5155
18
+ * HPS: Update NetworkTokenizationCreditCard flow [almalee24] #5178
19
+ * Braintree: Support override_application_id [aenand] #5194
20
+ * Decidir: Pass CVV for NT [almalee24] #5205
21
+ * NMI: Add customer vault fields [yunnydang] #5215
22
+ * CheckoutV2: Add inquire method [almalee24] #5209
23
+ * Decidir & Braintree: Scrub cryptogram and card number [almalee24] #5220
24
+ * Naranja: Update valid number check to include luhn10 [DustinHaefele] #5217
25
+ * Cybersource: Add apple_pay with discover. [DustinHaefele] #5213
26
+ * MercadoPago: Add idempotency key field [yunnydang] #5229
27
+ * Adyen: Update split refund method [yunnydang] #5218
28
+ * Adyen: Remove raw_error_message [almalee24] #5202
29
+ * Elavon: Remove old Stored Credential method [almalee24] #5219
30
+ * PayTrace: Update MultiResponse for Capture [almalee24] #5203
31
+ * Adyen: Add support for Pan Only GooglePay [almalee24] #5221
32
+ * Decidir: Send extra fields for tokenized NT transactions [sinourain] #5224
33
+ * StripePI: Skip add_network_token_cryptogram_and_eci method to accept ApplePay recurring payments [sinourain] #5212
34
+ * Decidir: Fix scrub method after update NT fields [sinourain] #5241
35
+ * Cybersource and Cybersource Rest: Update card type code for Carnet cards [rachelkirk] #5235
36
+ * Stripe PI: Add challenge as valid value for request_three_d_secure [jcreiff] #5238
37
+ * StripePI: Add metadata for GooglePay FPAN [almalee24] #5242
38
+ * Paypal: Add inquire method [almalee24] #5231
39
+ * Adyen: Enable multiple legs within airline data [jcreiff] #5249
40
+ * SafeCharge: Add card holder verification fields [yunnydang] #5252
41
+ * Iveri: Add AuthorisationReversal for Auth Void [almalee24] #5233
42
+ * Stripe PI: Update Stored Credentials [almalee24] #5236
43
+ * Checkout V2: Update stored credential options function [jherreraa] #5239
44
+ * Ebanx: Add support for Stored Credentials [almalee24] #5243
45
+ * Shift4: Update response parsing to account for hostresponse [jcreiff] #5261
46
+ * NMI: Add `industry_indicator` field [naashton] #5264
47
+ * Nuvei: Add 3DS GS [gasb150] #5247
48
+ * Rapyd: Add idempotency for all endpoints [almalee24] #5255
49
+ * Decidir: Map error code -1 to processing_error [Buitragox] #5257
50
+ * SumUp: Append partner_id to checkout_reference [naashton] #5272
51
+ * Adyen: Update shopperInteraction [almalee24] #5273
52
+ * CenPOS: Add test_url [jcreiff] #5274
53
+ * Worldpay: Fix stored credentials issue [jherreraa] #5267
54
+ * StripePI: Update authorization for failed Payment Intents [almalee24] #5260
55
+ * Worldpay: Add support for recurring Apple Pay [kenderbolivart] #5628
56
+ * Cybersource Rest: Add support for recurring Apple Pay [bdcano] #5270
57
+ * Cybersource Rest: Update message and error_code [almalee24] #5276
58
+ * Paysafe: Add support for `external_initial_transaction_id` [rachelkirk] #5291
59
+ * Worldpay: Add customStringFields [jcreiff] #5284
60
+ * Airwallex: truncate descriptor field to 32 characters [jcreiff] #5292
61
+ * DLocal: Add the description field for refund [yunnydang] #5296
62
+ * Worldpay: Add support for Worldpay decrypted apple pay and google pay [dustinhaefele] #5271
63
+ * Orbital: Update alternate_ucaf_flow [almalee24] #5282
64
+ * Adyen: Remove cryptogram flag [almalee24] #5300
65
+ * Cecabank: Include Apple Pay and Google Pay for recurring payments [gasb150] #5295
66
+ * DLocal: Add X-Dlocal-Payment-Source to header [almalee24] #5281
67
+ * StripePI: Update to retrieve_setup_intent and headers [almalee24] #5283
68
+ * Upgrade rexml to 3.3.8 [raymzag] #5245
69
+ * Nuvei: Add partial approval feature [javierpedrozaing] #5250
70
+ * Nuvei: Add ACH support [javierpedrozaing] #5269
71
+ * Nuvei: Add GSF for verify method [javierpedrozaing] #5278
72
+ * Nuvei: Add Google and Apple pay [javierpedrozaing] #5289
73
+ * Cybersource and Cybersource Rest: Add the MCC field [yunnydang] #5301
74
+ * Adyen: Add the manual_capture field [yunnydang] #5310
75
+ * Versapay: First Implementation [gasb150] #5288
76
+ * Adyen: Enable GSF recurring_detail_reference on other transactions [rubenmarindev] #5285
77
+ * Adyen: Update skip_mpi_data [almalee24] #5306
78
+ * Paysafe: Update fields in standalonecredits [almalee24] #5293
79
+ * GlobalCollect: Add support for $0 Auth [almalee24] #5303
80
+ * Versapay: Store and Unstore transactions [gasb150] #5315
81
+ * Nuvei: Add 3DS Global [javierpedrozaing] #5308
82
+ * StripePI: Store the three_d_secure_usage field [yunnydang] #5321
83
+ * StripePI: Last4 From Payment Method [naashton] #5322
84
+ * New Card Type: Patagonia365 [gasb150] #5265
85
+ * Decidir: Patagonia365 Card Type Mapping [naashton] #5324
86
+ * Ebanx: Add network token support [Buitragox] #5263
87
+ * DLocal: Add the optional country field override [yunnydang] #5326
88
+ * Nuvei: Adding account founding transaction [javierpedrozaing] #5307
89
+ * Nuvei: Add card holder name verification params [javierpedrozaing] #5312
90
+ * Stripe: Remove StripePaymenToken & ApplePayPaymentToken [almalee24] #5304
91
+ * HPS: Update API urls [jherreraa] #5313
92
+ * MIT: Change test URL [Buitragox] #5335
93
+ * Nuvei: Fix NTID stored credentials [javierpedrozaing] #5334
94
+ * StripePI: Fix the store three_d_secure_usage field [yunnydang] #5338
95
+ * Litle: Success codes added to valid responses [jherreraa] #5339
96
+ * CommerceHub: Update Production URL [almalee24] #5340
97
+ * CommerceHub: Add Network Token support [almalee24] #5331
98
+ * Worldpay: Update Stored Credentials [almalee24] #5330
99
+ * Update Rubocop 1.26.0 [almalee24] #5325
100
+ * RedsysREST: Add Network Tokens [gasb150] #5333
101
+ * DLocal: Update the success_from for Void [almalee24] #5337
102
+ * Braintree: Add support for stored credentials with Apple Pay [bdcano] #5336
103
+ * FlexCharge: Update homePage url [javierpedrozaing] #5351
104
+ * Nuvei: Fix send savePM in false by default [javierpedrozaing] #5353
105
+ * Decidir and DecicirPlus: Add the wallet_id field [yunnydang] #5354
106
+ * Worldpay: Update where to pass shopperIPAddress [almalee24] #5348
107
+ * Braintree: Account for BraintreeError [almalee24] #5346
108
+ * Worldpay: Fix stored credentials unscheduled reason type [Buitragox] #5352
109
+ * Worldpay: Worldpay: Idempotency key fix [jherreraa] #5359
110
+ * Hi Pay: Don't add 3ds when :three_ds_2 is missing [Buitragox] #5355
111
+ * SecurePayAU: Send order ID for payments with stored card [dacook] #3979
112
+ * Orbital: Add XSD version testing to unit test [almalee24] #5375
113
+ * Priority: fix for bin lookup [Buitragox] #5366
114
+ * CommerceHub: Update merchantInvoiceNumber & merchantTransactionId [almalee24] #5374
115
+ * VersaPay: refactor authorization from structure [gasb150] #5363
116
+ * VersaPay: Improve Message Error and Error Mapping [gasb150] #5357
117
+ * CheckoutV2: Add metadata to Credit [almalee24] #5328
118
+ * Normalize API versions for Adyen, Braintree & GlobalCollect [Buitragox] #5371
119
+ * SafeCharge: Add Australia & Canada as supported countries [almalee24] #5377
120
+ * RedsysRest: Improve authorization from in Redsys [gasb150] #5372
121
+ * Ebanx: Add the notification_url field [yunnydang] #5388
122
+ * Ebanx: Add optional payment_type_code override [jcreiff] #5370
123
+ * Ebanx: Update list of supported countries [jcreiff] #5387
124
+ * Add alternate spelling for Vietnam [jcreiff] #5386
125
+ * Checkout v2: add l2/l3 [gasb150] #5385
126
+ * Worldpay: Update passing 3DS data for NT [almalee24] #5389
127
+ * Ebanx: Add the merchant_payment_code override [yunnydang] #5394
128
+ * Credorax: Add AFT fields [yunnydang] #5390
129
+ * Cashnet: Update max_retries to 1 [almalee24] #5393
130
+ * Cybersource: Update 3DS fields [almalee24] #5396
131
+ * Airwallex: Update authorization_from method to include payment intent ID on refunds [yunnydang] #5400
132
+ * New Credit Card Sol: Add new bin set for Sol credit card [javierpedrozaing] #5380
133
+ * Credit Card Sol: Update card name to `tarjeta_sol` instead of `sol` [javierpedrozaing] #5404
134
+ * Credit Card Sol: Update tarjeta sol support for Decidir and Decidir plus gateways [javierpedrozaing] #5405
135
+ * Routex Bin: Update routex bin range to include 18 digits [yunnydang] #5410
136
+ * Nuvei: Fix isRebilling flag for Stored credentials [javierpedrozaing] #5408
137
+ * Shift4: Add interface_name field [almalee24] #5395
138
+ * Stripe: Update tokenization method for google pay [yunnydang] #5414
139
+ * StripePI: Add AFT fields [yunnydang] #5418
140
+ * CheckoutV2: Improve payout handling with blank sender data [jcreiff] #5423
141
+ * StripePI: Add the request_extended_authorization field [yunnydang] #5417
142
+ * Plexo: Add Transaction sync support for Plexo Gateway [javierpedrozaing] #5416
143
+ * CheckoutV2: Add account name inquiry [jcreiff] #5427
144
+ * Adyen: Update shopperInteraction [almalee24] #5430
145
+ * Nuvei: Add addtional oct and aft user detail fields [yunnydang] #5433
146
+ * CheckoutV2: Add support for partial authorization [yunnydang] #5441
147
+ * Datatrans: Update the authorization for Capture responses [almalee24] #5437
148
+ * CyberSource: Void Acepts nil values [gasb150] #5442
149
+ * Ebanx: Handle special characters in email [ankurspreedly] #5444
150
+ * Orbital: Add support for more currencies [ankurspreedly] #5438
151
+ * Datatrans: Include additional scrub on store call [naashton] #5447
152
+ * Decidir and DecicirPlus: Add the discover payment method ID [yunnydang] #5448
153
+ * CyberSource: Add the optional merchant reference code on capture [yunnydang] #5453
154
+ * Orbital: Update authorization string [almalee24] #5458
155
+ * Braintree: Update gem to 4.26.0 [almalee24] #5440
156
+ * CheckoutV2: Update Authorization from Basic to Bearer [sinourain] #5381
157
+ * Payeezy: Update authorization when extra space [almalee24] #5446
158
+ * Worldpay: Update inquire success_criteria [almalee24] #5445
159
+ * Credorax: Support zero dollar verify [yunnydang] #5457
160
+ * Credorax: Add optional crypto currency type field [yunnydang] #5460
161
+ * CommerceHub: Map ecommerce_indicator value based on three_d_secure.eci [mjdonga] #5461
162
+ * StripePI: Add the optional kana and kanji descriptor suffix fields [yunnydang] #5466
163
+ * Credorax: Add sender birth date for AFT [adarsh-spreedly] #5469
164
+ * StripePaymentIntents: Add inquire capability [adarsh-spreedly] #5456
165
+ * Payflow: Send ds_trans_id as xid if xid is not present [adarsh-spreedly] #5465
166
+ * Normalize the use of API_VERSION for some gateways (iVeri, JetypayV2 and Kushki) [ritesh-kapoor-spreedly] #5454
167
+ * Normalize API versions for Payeezy, Paymentez, and Paymill [mjdonga] #5451
168
+ * Pin Payments: Add support for Apple and Google payment method types [naashton] #5462
169
+ * Pin Payments: Scrub sensitive data from transcript [naashton] #5473
170
+ * CheckoutV2: Send payment type as Regular instead of unscheduled if initiator is cardholder [adarsh-spreedly] #5471
171
+ * CommerceHub: Pass order_id for Verify [almalee24] #5475
172
+ * Orbital: Pass override_exp_date if provided [almalee24] #5476
173
+ * Normalize API Version for StripePaymentIntents, Simetrik, SecurePayAu [adarsh-spreedly] #5450
174
+ * StripePI: validate capture reference [jherrera] #5479
175
+ * Cenpos: Add purchase_order_number field [yunnydang] #5481
176
+ * Rapyd: Fix error on billing address [jherrera] #5472
177
+ * Nuvei: Map order_id to clientUniqueId field on refund/credit [jherrera] #5477
178
+ * Update clean_emoji_emoticons_and_accent method [almalee24] #5485
179
+ * Payflow: Send CAVV as xid if xid is not present [adarsh-spreedly] #5496
180
+ * Credorax: Fixed request signature [mjdonga] #5486
181
+ * Nuvei/Reach/Shift4: Normalize API_VERSION usage [sumit-sharmas] #5493
182
+ * Xpay/Sumup/Quickbooks: Normalize API_VERSION usage [aaqibrashidmir] #5495
183
+ * Ebanx: Fix NoMethodError for address [almalee24] #5500
184
+ * Vpos: Check for response under refund.response_code [almalee24] #5501
185
+ * Ebanx: Fix field nesting cof_info, device_id, and notification_url [yunnydang] #5494
186
+ * MultiPay: Add Base Gateway adapter [Heavblade] #5497
187
+ * Cecabank: Fix finRec field formatting for Cecabank Gateway [aaqibrashidmir] #5506
188
+ * Nuvei: Map order_id to clientUniqueId field on capture transactions [aaqibrashidmir] #5498
189
+ * Ebanx: Added new GSF payment.taxes.iva_co [ritesh-spreedly] #5509
190
+ * Litle: Remove 141 & 142 [almalee24] #5505
191
+ * Normalize API Version for CyberSourceRest, Datatrans, and FlexCharge [aaqibrashidmir] #5489
192
+ * Wepay/Wompi/CommerceHub: Normalize API_VERSION usage [sumit-sharmas] #5490
193
+ * CheckoutV2: Pass udf5 field in metadata [mjdonga] #5507
194
+ * DLocal: Add issuer_identification_number as bin in Card object [adarsh-spreedly] #5499
195
+ * Normalize API Versions for litle, mercado_pago and mundipagg [mjdonga] #5518
196
+ * Normalize API Versions for Barclay card Smart pay, Fat Zebra and Forte gateways [mjdonga] #5519
197
+ * Worldpay: Add refund reference field [yunnydang] #5531
198
+ * Paysafe: Save cards to exisiting profiles [almalee24] #5504
199
+ * Credorax: Spec fix for updated processor name [adarsh-spreedly] #5492
200
+ * Normalize API for Rapyd, SafeCharge and SecureNet [ritesh-kapoor-spreedly] #5514
201
+ * Normalize API Version for Orbital, OptimalPayment, NabTransact [adarsh-spreedly] #5523
202
+ * PayArc/PayConex/HPS: Normalize API_VERSION usage [sumit-sharmas] #5521
203
+ * VantivExpress: Add support of level 2 and 3 data [adarsh-spreedly] #5487
204
+ * Normalize API versions for paypal, paysafe, and payu_latam [mjdonga] #5515
205
+ * StripePI: Add support for multicapture [mjdonga] #5491
206
+ * Normalize API Version for Plexo, Pin, Priority [adarsh-spreedly] #5517
207
+ * Stripe PI: Update API version [almalee24] #5360
208
+ * Airwallex: Add optional products array field [yunnydang] #5530
209
+ * Pin Payments: Add inquire method to get details of payment [hudakh] #5537
210
+ * Pin Payments: Add transaction_search method and support paginated API responses [hudakh] #5541
211
+
212
+ == Version 1.137.0 (August 2, 2024)
8
213
  * Unlock dependency on `rexml` to allow fixing a CVE (#5181).
9
214
  * Bump Ruby version to 3.1 [dustinhaefele] #5104
10
215
  * FlexCharge: Update inquire method to use the new orders end-point
@@ -34,6 +239,9 @@
34
239
  * Elavon: Add updated stored credential version [almalee24] #5170
35
240
  * Adyen: Add header fields to response body [yunnydang] #5184
36
241
  * Stripe and Stripe PI: Add header fields to response body [yunnydang] #5185
242
+ * Nuvei: Add support for Stored Credentials [javierpedrozaing] #5186
243
+ * Addition of shopper ip address when a network token transaction occurs [rubenmarindev] #5262
244
+ * LoanPaymentPro: Add new gateway adapter for the Loanpaymentpro gateway [heavyblade] #5470
37
245
 
38
246
  == Version 1.136.0 (June 3, 2024)
39
247
  * Shift4V2: Add new gateway based on SecurionPay adapter [heavyblade] #4860
@@ -691,6 +899,8 @@
691
899
  * CyberSource: Add `line_items` for purchase [ajawadmirza] #4282
692
900
  * Payflow Pro: Add `stored_credential` fields [ajawadmirza] #4277
693
901
  * Decidir Plus: Add `fraud_detection` fields [naashton] #4289
902
+ * Elavon: Pass through ssl_email for verify transactions [ankurspreedly] #5502
903
+ * Nuvei: Add address compoenents for all transactions [ankurspreedly] #5511
694
904
 
695
905
  == Version 1.124.0 (October 28th, 2021)
696
906
  * Worldpay: Add Support for Submerchant Data on Worldpay [almalee24] #4147
data/CONTRIBUTORS CHANGED
@@ -374,6 +374,7 @@ Spreedly Core gateway (December 2012)
374
374
  Pin gateway (February 2013)
375
375
 
376
376
  * Myles Eftos (madpilot)
377
+ * Portions of the Pin Payments Gateway by Huda Kharrufa (hudakh)
377
378
 
378
379
  Merchant Warrior (February 2013)
379
380
 
@@ -1,5 +1,5 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
1
+ module ActiveMerchant # :nodoc:
2
+ module Billing # :nodoc:
3
3
  class ApplePayPaymentToken < PaymentToken
4
4
  # This is a representation of the token object specified here:
5
5
  # https://developer.apple.com/library/ios/documentation/PassKit/Reference/PKPaymentToken_Ref/
@@ -1,5 +1,5 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
1
+ module ActiveMerchant # :nodoc:
2
+ module Billing # :nodoc:
3
3
  module Base
4
4
  GATEWAY_MODE_DEPRECATION_MESSAGE = 'Base#gateway_mode is deprecated in favor of Base#mode and will be removed in a future version'
5
5
 
@@ -1,5 +1,5 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
1
+ module ActiveMerchant # :nodoc:
2
+ module Billing # :nodoc:
3
3
  # The Check object is a plain old Ruby object, similar to CreditCard. It supports validation
4
4
  # of necessary attributes such as checkholder's name, routing and account numbers, but it is
5
5
  # not backed by any database.
@@ -60,6 +60,18 @@ module ActiveMerchant #:nodoc:
60
60
  false
61
61
  end
62
62
 
63
+ def network_token?
64
+ false
65
+ end
66
+
67
+ def mobile_wallet?
68
+ false
69
+ end
70
+
71
+ def encrypted_wallet?
72
+ false
73
+ end
74
+
63
75
  def valid_routing_number?
64
76
  digits = routing_number.to_s.split('').map(&:to_i).select { |d| (0..9).cover?(d) }
65
77
  case digits.size
@@ -2,8 +2,8 @@ require 'time'
2
2
  require 'date'
3
3
  require 'active_merchant/billing/model'
4
4
 
5
- module ActiveMerchant #:nodoc:
6
- module Billing #:nodoc:
5
+ module ActiveMerchant # :nodoc:
6
+ module Billing # :nodoc:
7
7
  # A +CreditCard+ object represents a physical credit card, and is capable of validating the various
8
8
  # data associated with these.
9
9
  #
@@ -42,6 +42,8 @@ module ActiveMerchant #:nodoc:
42
42
  # * Verve
43
43
  # * Tuya
44
44
  # * UATP
45
+ # * Patagonia365
46
+ # * Tarjeta Sol
45
47
  #
46
48
  # For testing purposes, use the 'bogus' credit card brand. This skips the vast majority of
47
49
  # validations, allowing you to focus on your core concerns until you're ready to be more concerned
@@ -138,6 +140,8 @@ module ActiveMerchant #:nodoc:
138
140
  # * +'verve'+
139
141
  # * +'tuya'+
140
142
  # * +'uatp'+
143
+ # * +'patagonia_365'+
144
+ # * +'tarjeta_sol'+
141
145
  #
142
146
  # Or, if you wish to test your implementation, +'bogus'+.
143
147
  #
@@ -363,6 +367,18 @@ module ActiveMerchant #:nodoc:
363
367
  BRANDS_WITH_SPACES_IN_NUMBER.include?(self.class.brand?(self.number || number))
364
368
  end
365
369
 
370
+ def network_token?
371
+ false
372
+ end
373
+
374
+ def mobile_wallet?
375
+ false
376
+ end
377
+
378
+ def encrypted_wallet?
379
+ false
380
+ end
381
+
366
382
  private
367
383
 
368
384
  def filter_number(value)
@@ -374,7 +390,7 @@ module ActiveMerchant #:nodoc:
374
390
  value.to_s.gsub(regex, '')
375
391
  end
376
392
 
377
- def validate_essential_attributes #:nodoc:
393
+ def validate_essential_attributes # :nodoc:
378
394
  errors = []
379
395
 
380
396
  if self.class.requires_name?
@@ -398,7 +414,7 @@ module ActiveMerchant #:nodoc:
398
414
  errors
399
415
  end
400
416
 
401
- def validate_card_brand_and_number #:nodoc:
417
+ def validate_card_brand_and_number # :nodoc:
402
418
  errors = []
403
419
 
404
420
  errors << [:brand, 'is invalid'] if !empty?(brand) && !CreditCard.card_companies.include?(brand)
@@ -414,7 +430,7 @@ module ActiveMerchant #:nodoc:
414
430
  errors
415
431
  end
416
432
 
417
- def validate_verification_value #:nodoc:
433
+ def validate_verification_value # :nodoc:
418
434
  errors = []
419
435
 
420
436
  if verification_value?
@@ -425,7 +441,7 @@ module ActiveMerchant #:nodoc:
425
441
  errors
426
442
  end
427
443
 
428
- class ExpiryDate #:nodoc:
444
+ class ExpiryDate # :nodoc:
429
445
  attr_reader :month, :year
430
446
 
431
447
  def initialize(month, year)
@@ -433,11 +449,11 @@ module ActiveMerchant #:nodoc:
433
449
  @year = year.to_i
434
450
  end
435
451
 
436
- def expired? #:nodoc:
452
+ def expired? # :nodoc:
437
453
  Time.now.utc > expiration
438
454
  end
439
455
 
440
- def expiration #:nodoc:
456
+ def expiration # :nodoc:
441
457
  Time.utc(year, month, month_days, 23, 59, 59)
442
458
  rescue ArgumentError
443
459
  Time.at(0).utc
@@ -1,5 +1,5 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
1
+ module ActiveMerchant # :nodoc:
2
+ module Billing # :nodoc:
3
3
  module CreditCardFormatting
4
4
  def expdate(credit_card)
5
5
  "#{format(credit_card.month, :two_digits)}#{format(credit_card.year, :two_digits)}"
@@ -9,6 +9,13 @@ module ActiveMerchant #:nodoc:
9
9
  format(credit_card.year, :four_digits) + format(credit_card.month, :two_digits)
10
10
  end
11
11
 
12
+ def strftime_yyyymmdd_last_day(credit_card)
13
+ year = credit_card.year.to_i
14
+ month = credit_card.month.to_i
15
+ last_day = Date.civil(year, month, -1).day
16
+ format(year, :four_digits) + format(month, :two_digits) + format(last_day, :two_digits)
17
+ end
18
+
12
19
  # This method is used to format numerical information pertaining to credit cards.
13
20
  #
14
21
  # format(2005, :two_digits) # => "05"
@@ -1,7 +1,7 @@
1
1
  require 'set'
2
2
 
3
- module ActiveMerchant #:nodoc:
4
- module Billing #:nodoc:
3
+ module ActiveMerchant # :nodoc:
4
+ module Billing # :nodoc:
5
5
  # Convenience methods that can be included into a custom Credit Card object, such as an ActiveRecord based Credit Card object.
6
6
  module CreditCardMethods
7
7
  CARD_COMPANY_DETECTORS = {
@@ -43,7 +43,7 @@ module ActiveMerchant #:nodoc:
43
43
  'creditel' => ->(num) { num =~ /^601933\d{10}$/ },
44
44
  'confiable' => ->(num) { num =~ /^560718\d{10}$/ },
45
45
  'synchrony' => ->(num) { num =~ /^700600\d{10}$/ },
46
- 'routex' => ->(num) { num =~ /^(700674|700676|700678)\d{13}$/ },
46
+ 'routex' => ->(num) { num =~ /^(700674|700676|700678)\d{12,13}$/ },
47
47
  'mada' => ->(num) { num&.size == 16 && in_bin_range?(num.slice(0, 6), MADA_RANGES) },
48
48
  'bp_plus' => ->(num) { num =~ /^(7050\d\s\d{9}\s\d{3}$|705\d\s\d{8}\s\d{5}$)/ },
49
49
  'passcard' => ->(num) { num =~ /^628026\d{10}$/ },
@@ -54,7 +54,9 @@ module ActiveMerchant #:nodoc:
54
54
  'panal' => ->(num) { num&.size == 16 && in_bin_range?(num.slice(0, 6), PANAL_RANGES) },
55
55
  'verve' => ->(num) { (16..19).cover?(num&.size) && in_bin_range?(num.slice(0, 6), VERVE_RANGES) },
56
56
  'tuya' => ->(num) { num =~ /^588800\d{10}$/ },
57
- 'uatp' => ->(num) { num =~ /^(1175|1290)\d{11}$/ }
57
+ 'uatp' => ->(num) { num =~ /^(1175|1290)\d{11}$/ },
58
+ 'patagonia_365' => ->(num) { num =~ /^504656\d{10}$/ },
59
+ 'tarjeta_sol' => ->(num) { num =~ /^504639\d{10}$/ }
58
60
  }
59
61
 
60
62
  SODEXO_NO_LUHN = ->(num) { num =~ /^(505864|505865)\d{10}$/ }
@@ -127,7 +129,7 @@ module ActiveMerchant #:nodoc:
127
129
  501500 501623
128
130
  501879 502113 502120 502121 502301
129
131
  503175 503337 503645 503670
130
- 504310 504338 504363 504533 504587 504620 504639 504656 504738 504781 504910
132
+ 504310 504338 504363 504533 504587 504620 504738 504781 504910
131
133
  505616
132
134
  507001 507002 507004 507082 507090
133
135
  560014 560565 561033
@@ -377,9 +379,9 @@ module ActiveMerchant #:nodoc:
377
379
  # - http://www.beachnet.com/~hstiles/cardtype.html
378
380
  def valid_number?(number)
379
381
  valid_test_mode_card_number?(number) ||
380
- valid_card_number_length?(number) &&
382
+ (valid_card_number_length?(number) &&
381
383
  valid_card_number_characters?(brand?(number), number) &&
382
- valid_by_algorithm?(brand?(number), number)
384
+ valid_by_algorithm?(brand?(number), number))
383
385
  end
384
386
 
385
387
  def card_companies
@@ -439,20 +441,20 @@ module ActiveMerchant #:nodoc:
439
441
 
440
442
  private
441
443
 
442
- def valid_card_number_length?(number) #:nodoc:
444
+ def valid_card_number_length?(number) # :nodoc:
443
445
  return false if number.nil?
444
446
 
445
447
  number.length >= 12
446
448
  end
447
449
 
448
- def valid_card_number_characters?(brand, number) #:nodoc:
450
+ def valid_card_number_characters?(brand, number) # :nodoc:
449
451
  return false if number.nil?
450
452
  return number =~ /\A[0-9 ]+\Z/ if brand == 'bp_plus'
451
453
 
452
454
  !number.match(/\D/)
453
455
  end
454
456
 
455
- def valid_test_mode_card_number?(number) #:nodoc:
457
+ def valid_test_mode_card_number?(number) # :nodoc:
456
458
  ActiveMerchant::Billing::Base.test? &&
457
459
  %w[1 2 3 success failure error].include?(number)
458
460
  end
@@ -461,10 +463,10 @@ module ActiveMerchant #:nodoc:
461
463
  SODEXO_NO_LUHN.call(numbers)
462
464
  end
463
465
 
464
- def valid_by_algorithm?(brand, numbers) #:nodoc:
466
+ def valid_by_algorithm?(brand, numbers) # :nodoc:
465
467
  case brand
466
468
  when 'naranja'
467
- valid_naranja_algo?(numbers)
469
+ valid_naranja_algo?(numbers) || valid_luhn?(numbers)
468
470
  when 'creditel'
469
471
  valid_creditel_algo?(numbers)
470
472
  when 'alia', 'confiable', 'maestro_no_luhn', 'anda', 'tarjeta-d', 'hipercard'
@@ -508,7 +510,7 @@ module ActiveMerchant #:nodoc:
508
510
  # Checks the validity of a card number by use of the Luhn Algorithm.
509
511
  # Please see http://en.wikipedia.org/wiki/Luhn_algorithm for details.
510
512
  # This implementation is from the luhn_checksum gem, https://github.com/zendesk/luhn_checksum.
511
- def valid_luhn?(numbers) #:nodoc:
513
+ def valid_luhn?(numbers) # :nodoc:
512
514
  sum = 0
513
515
 
514
516
  odd = true
@@ -547,7 +549,7 @@ module ActiveMerchant #:nodoc:
547
549
  end
548
550
 
549
551
  # Checks the validity of a card number by use of specific algorithms
550
- def valid_naranja_algo?(numbers) #:nodoc:
552
+ def valid_naranja_algo?(numbers) # :nodoc:
551
553
  num_array = numbers.to_s.chars.map(&:to_i)
552
554
  multipliers = [4, 3, 2, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
553
555
  num_sum = num_array[0..14].zip(multipliers).map { |a, b| a * b }.reduce(:+)
@@ -556,7 +558,7 @@ module ActiveMerchant #:nodoc:
556
558
  final_num == num_array[15]
557
559
  end
558
560
 
559
- def valid_creditel_algo?(numbers) #:nodoc:
561
+ def valid_creditel_algo?(numbers) # :nodoc:
560
562
  num_array = numbers.to_s.chars.map(&:to_i)
561
563
  multipliers = [5, 4, 3, 2, 1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9]
562
564
  num_sum = num_array[0..14].zip(multipliers).map { |a, b| a * b }.reduce(:+)
@@ -2,8 +2,8 @@ require 'net/http'
2
2
  require 'net/https'
3
3
  require 'active_merchant/billing/response'
4
4
 
5
- module ActiveMerchant #:nodoc:
6
- module Billing #:nodoc:
5
+ module ActiveMerchant # :nodoc:
6
+ module Billing # :nodoc:
7
7
  #
8
8
  # == Description
9
9
  # The Gateway class is the base class for all ActiveMerchant gateway implementations.
@@ -55,6 +55,7 @@ module ActiveMerchant #:nodoc:
55
55
  class Gateway
56
56
  include PostsData
57
57
  include CreditCardFormatting
58
+ include Versionable
58
59
 
59
60
  CREDIT_DEPRECATION_MESSAGE = 'Support for using credit to refund existing transactions is deprecated and will be removed from a future release of ActiveMerchant. Please use the refund method instead.'
60
61
  RECURRING_DEPRECATION_MESSAGE = 'Recurring functionality in ActiveMerchant is deprecated and will be removed in a future version. Please contact the ActiveMerchant maintainers if you have an interest in taking ownership of a separate gem that continues support for it.'
@@ -315,6 +316,16 @@ module ActiveMerchant #:nodoc:
315
316
  [first_name, last_name]
316
317
  end
317
318
 
319
+ def format_name(str = '')
320
+ return nil unless str.respond_to?(:force_encoding)
321
+
322
+ str = str.force_encoding('utf-8').encode
323
+ emoji_regex = /[\u{1f600}-\u{1f64f}\u{2702}-\u{27b0}\u{1f680}-\u{1f6ff}\u{24C2}-\u{1F251}\u{1f300}-\u{1f5ff}]/
324
+ emoticon_regex = /[:;=8xX]-?[)(DPpO3]/
325
+ str = str.gsub(emoji_regex, '').gsub(emoticon_regex, '').strip
326
+ I18n.transliterate(str).gsub(/[^\w\s]/, '')
327
+ end
328
+
318
329
  def split_address(full_address)
319
330
  address_parts = (full_address || '').split
320
331
  return [nil, nil] if address_parts.size == 0