activemerchant 1.42.6 → 1.90.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 (450) hide show
  1. checksums.yaml +5 -13
  2. data/CHANGELOG +1420 -2
  3. data/CONTRIBUTORS +106 -0
  4. data/README.md +107 -103
  5. data/lib/active_merchant/billing/apple_pay_payment_token.rb +22 -0
  6. data/lib/active_merchant/billing/avs_result.rb +12 -13
  7. data/lib/active_merchant/billing/base.rb +13 -16
  8. data/lib/active_merchant/billing/check.rb +35 -24
  9. data/lib/active_merchant/billing/compatibility.rb +117 -0
  10. data/lib/active_merchant/billing/credit_card.rb +196 -81
  11. data/lib/active_merchant/billing/credit_card_formatting.rb +6 -4
  12. data/lib/active_merchant/billing/credit_card_methods.rb +199 -75
  13. data/lib/active_merchant/billing/cvv_result.rb +15 -15
  14. data/lib/active_merchant/billing/gateway.rb +171 -39
  15. data/lib/active_merchant/billing/gateways/adyen.rb +380 -0
  16. data/lib/active_merchant/billing/gateways/allied_wallet.rb +205 -0
  17. data/lib/active_merchant/billing/gateways/authorize_net.rb +933 -604
  18. data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +417 -0
  19. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +74 -54
  20. data/lib/active_merchant/billing/gateways/axcessms.rb +181 -0
  21. data/lib/active_merchant/billing/gateways/balanced.rb +130 -370
  22. data/lib/active_merchant/billing/gateways/bank_frick.rb +225 -0
  23. data/lib/active_merchant/billing/gateways/banwire.rb +23 -12
  24. data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +351 -0
  25. data/lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb +6 -6
  26. data/lib/active_merchant/billing/gateways/be2bill.rb +2 -2
  27. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +109 -32
  28. data/lib/active_merchant/billing/gateways/beanstream.rb +59 -13
  29. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +12 -9
  30. data/lib/active_merchant/billing/gateways/blue_pay.rb +520 -498
  31. data/lib/active_merchant/billing/gateways/blue_snap.rb +347 -0
  32. data/lib/active_merchant/billing/gateways/bogus.rb +80 -46
  33. data/lib/active_merchant/billing/gateways/borgun.rb +220 -0
  34. data/lib/active_merchant/billing/gateways/bpoint.rb +277 -0
  35. data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +15 -2
  36. data/lib/active_merchant/billing/gateways/braintree.rb +2 -2
  37. data/lib/active_merchant/billing/gateways/braintree_blue.rb +311 -121
  38. data/lib/active_merchant/billing/gateways/braintree_orange.rb +4 -4
  39. data/lib/active_merchant/billing/gateways/bridge_pay.rb +244 -0
  40. data/lib/active_merchant/billing/gateways/cams.rb +230 -0
  41. data/lib/active_merchant/billing/gateways/card_connect.rb +311 -0
  42. data/lib/active_merchant/billing/gateways/card_save.rb +6 -7
  43. data/lib/active_merchant/billing/gateways/card_stream.rb +235 -89
  44. data/lib/active_merchant/billing/gateways/cardknox.rb +327 -0
  45. data/lib/active_merchant/billing/gateways/cardprocess.rb +254 -0
  46. data/lib/active_merchant/billing/gateways/cashnet.rb +219 -0
  47. data/lib/active_merchant/billing/gateways/cc5.rb +50 -8
  48. data/lib/active_merchant/billing/gateways/cecabank.rb +27 -14
  49. data/lib/active_merchant/billing/gateways/cenpos.rb +327 -0
  50. data/lib/active_merchant/billing/gateways/checkout.rb +214 -0
  51. data/lib/active_merchant/billing/gateways/checkout_v2.rb +233 -0
  52. data/lib/active_merchant/billing/gateways/citrus_pay.rb +22 -0
  53. data/lib/active_merchant/billing/gateways/clearhaus.rb +220 -0
  54. data/lib/active_merchant/billing/gateways/commercegate.rb +142 -0
  55. data/lib/active_merchant/billing/gateways/conekta.rb +91 -97
  56. data/lib/active_merchant/billing/gateways/creditcall.rb +271 -0
  57. data/lib/active_merchant/billing/gateways/credorax.rb +356 -0
  58. data/lib/active_merchant/billing/gateways/ct_payment.rb +268 -0
  59. data/lib/active_merchant/billing/gateways/culqi.rb +277 -0
  60. data/lib/active_merchant/billing/gateways/cyber_source.rb +294 -158
  61. data/lib/active_merchant/billing/gateways/d_local.rb +226 -0
  62. data/lib/active_merchant/billing/gateways/data_cash.rb +59 -347
  63. data/lib/active_merchant/billing/gateways/dibs.rb +199 -0
  64. data/lib/active_merchant/billing/gateways/digitzs.rb +292 -0
  65. data/lib/active_merchant/billing/gateways/ebanx.rb +296 -0
  66. data/lib/active_merchant/billing/gateways/efsnet.rb +24 -39
  67. data/lib/active_merchant/billing/gateways/elavon.rb +146 -147
  68. data/lib/active_merchant/billing/gateways/element.rb +356 -0
  69. data/lib/active_merchant/billing/gateways/epay.rb +41 -31
  70. data/lib/active_merchant/billing/gateways/evo_ca.rb +1 -1
  71. data/lib/active_merchant/billing/gateways/eway.rb +79 -78
  72. data/lib/active_merchant/billing/gateways/eway_managed.rb +35 -36
  73. data/lib/active_merchant/billing/gateways/eway_rapid.rb +369 -228
  74. data/lib/active_merchant/billing/gateways/exact.rb +32 -26
  75. data/lib/active_merchant/billing/gateways/ezic.rb +195 -0
  76. data/lib/active_merchant/billing/gateways/fat_zebra.rb +90 -64
  77. data/lib/active_merchant/billing/gateways/federated_canada.rb +6 -14
  78. data/lib/active_merchant/billing/gateways/finansbank.rb +3 -3
  79. data/lib/active_merchant/billing/gateways/first_giving.rb +142 -0
  80. data/lib/active_merchant/billing/gateways/first_pay.rb +128 -122
  81. data/lib/active_merchant/billing/gateways/firstdata_e4.rb +190 -64
  82. data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +446 -0
  83. data/lib/active_merchant/billing/gateways/flo2cash.rb +215 -0
  84. data/lib/active_merchant/billing/gateways/flo2cash_simple.rb +20 -0
  85. data/lib/active_merchant/billing/gateways/forte.rb +270 -0
  86. data/lib/active_merchant/billing/gateways/garanti.rb +29 -27
  87. data/lib/active_merchant/billing/gateways/global_collect.rb +340 -0
  88. data/lib/active_merchant/billing/gateways/global_transport.rb +194 -0
  89. data/lib/active_merchant/billing/gateways/hdfc.rb +35 -36
  90. data/lib/active_merchant/billing/gateways/hps.rb +305 -0
  91. data/lib/active_merchant/billing/gateways/iats_payments.rb +271 -16
  92. data/lib/active_merchant/billing/gateways/in_context_paypal_express.rb +15 -0
  93. data/lib/active_merchant/billing/gateways/inspire.rb +29 -32
  94. data/lib/active_merchant/billing/gateways/instapay.rb +5 -6
  95. data/lib/active_merchant/billing/gateways/ipp.rb +175 -0
  96. data/lib/active_merchant/billing/gateways/iridium.rb +247 -41
  97. data/lib/active_merchant/billing/gateways/itransact.rb +4 -5
  98. data/lib/active_merchant/billing/gateways/iveri.rb +251 -0
  99. data/lib/active_merchant/billing/gateways/jetpay.rb +198 -71
  100. data/lib/active_merchant/billing/gateways/jetpay_v2.rb +437 -0
  101. data/lib/active_merchant/billing/gateways/komoju.rb +115 -0
  102. data/lib/active_merchant/billing/gateways/kushki.rb +219 -0
  103. data/lib/active_merchant/billing/gateways/latitude19.rb +411 -0
  104. data/lib/active_merchant/billing/gateways/linkpoint.rb +45 -43
  105. data/lib/active_merchant/billing/gateways/litle.rb +328 -444
  106. data/lib/active_merchant/billing/gateways/mastercard.rb +267 -0
  107. data/lib/active_merchant/billing/gateways/maxipago.rb +145 -115
  108. data/lib/active_merchant/billing/gateways/mercado_pago.rb +277 -0
  109. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +37 -19
  110. data/lib/active_merchant/billing/gateways/merchant_one.rb +13 -15
  111. data/lib/active_merchant/billing/gateways/merchant_partners.rb +245 -0
  112. data/lib/active_merchant/billing/gateways/merchant_ware.rb +57 -60
  113. data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +59 -48
  114. data/lib/active_merchant/billing/gateways/merchant_warrior.rb +38 -19
  115. data/lib/active_merchant/billing/gateways/mercury.rb +77 -54
  116. data/lib/active_merchant/billing/gateways/metrics_global.rb +11 -30
  117. data/lib/active_merchant/billing/gateways/micropayment.rb +183 -0
  118. data/lib/active_merchant/billing/gateways/migs.rb +81 -22
  119. data/lib/active_merchant/billing/gateways/modern_payments.rb +3 -3
  120. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +23 -25
  121. data/lib/active_merchant/billing/gateways/monei.rb +307 -0
  122. data/lib/active_merchant/billing/gateways/moneris.rb +146 -64
  123. data/lib/active_merchant/billing/gateways/moneris_us.rb +197 -53
  124. data/lib/active_merchant/billing/gateways/money_movers.rb +6 -15
  125. data/lib/active_merchant/billing/gateways/mundipagg.rb +292 -0
  126. data/lib/active_merchant/billing/gateways/nab_transact.rb +86 -64
  127. data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +165 -0
  128. data/lib/active_merchant/billing/gateways/net_registry.rb +11 -5
  129. data/lib/active_merchant/billing/gateways/netaxept.rb +21 -22
  130. data/lib/active_merchant/billing/gateways/netbanx.rb +290 -0
  131. data/lib/active_merchant/billing/gateways/netbilling.rb +70 -35
  132. data/lib/active_merchant/billing/gateways/netpay.rb +5 -6
  133. data/lib/active_merchant/billing/gateways/network_merchants.rb +241 -0
  134. data/lib/active_merchant/billing/gateways/nmi.rb +274 -10
  135. data/lib/active_merchant/billing/gateways/ogone.rb +90 -47
  136. data/lib/active_merchant/billing/gateways/omise.rb +324 -0
  137. data/lib/active_merchant/billing/gateways/openpay.rb +48 -20
  138. data/lib/active_merchant/billing/gateways/opp.rb +369 -0
  139. data/lib/active_merchant/billing/gateways/optimal_payment.rb +79 -44
  140. data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +22 -21
  141. data/lib/active_merchant/billing/gateways/orbital.rb +346 -102
  142. data/lib/active_merchant/billing/gateways/pac_net_raven.rb +48 -29
  143. data/lib/active_merchant/billing/gateways/pagarme.rb +246 -0
  144. data/lib/active_merchant/billing/gateways/pago_facil.rb +122 -0
  145. data/lib/active_merchant/billing/gateways/pay_conex.rb +245 -0
  146. data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +67 -48
  147. data/lib/active_merchant/billing/gateways/pay_hub.rb +213 -0
  148. data/lib/active_merchant/billing/gateways/pay_junction.rb +20 -26
  149. data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +188 -0
  150. data/lib/active_merchant/billing/gateways/pay_secure.rb +7 -15
  151. data/lib/active_merchant/billing/gateways/paybox_direct.rb +40 -36
  152. data/lib/active_merchant/billing/gateways/payeezy.rb +410 -0
  153. data/lib/active_merchant/billing/gateways/payex.rb +38 -30
  154. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +62 -36
  155. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +11 -7
  156. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +3 -3
  157. data/lib/active_merchant/billing/gateways/payflow.rb +74 -27
  158. data/lib/active_merchant/billing/gateways/payflow_express.rb +77 -81
  159. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +2 -3
  160. data/lib/active_merchant/billing/gateways/payflow_uk.rb +5 -6
  161. data/lib/active_merchant/billing/gateways/payment_express.rb +54 -45
  162. data/lib/active_merchant/billing/gateways/paymentez.rb +304 -0
  163. data/lib/active_merchant/billing/gateways/paymill.rb +160 -66
  164. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +54 -7
  165. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +4 -0
  166. data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +17 -3
  167. data/lib/active_merchant/billing/gateways/paypal.rb +36 -27
  168. data/lib/active_merchant/billing/gateways/paypal_ca.rb +1 -1
  169. data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +7 -6
  170. data/lib/active_merchant/billing/gateways/paypal_express.rb +32 -4
  171. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +3 -3
  172. data/lib/active_merchant/billing/gateways/payscout.rb +2 -13
  173. data/lib/active_merchant/billing/gateways/paystation.rb +96 -88
  174. data/lib/active_merchant/billing/gateways/payu_in.rb +248 -0
  175. data/lib/active_merchant/billing/gateways/payu_latam.rb +445 -0
  176. data/lib/active_merchant/billing/gateways/payway.rb +8 -8
  177. data/lib/active_merchant/billing/gateways/pin.rb +74 -18
  178. data/lib/active_merchant/billing/gateways/plugnpay.rb +66 -76
  179. data/lib/active_merchant/billing/gateways/pro_pay.rb +326 -0
  180. data/lib/active_merchant/billing/gateways/psigate.rb +30 -30
  181. data/lib/active_merchant/billing/gateways/psl_card.rb +27 -34
  182. data/lib/active_merchant/billing/gateways/qbms.rb +65 -54
  183. data/lib/active_merchant/billing/gateways/quantum.rb +18 -18
  184. data/lib/active_merchant/billing/gateways/quickbooks.rb +290 -0
  185. data/lib/active_merchant/billing/gateways/quickpay/quickpay_common.rb +184 -0
  186. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +295 -0
  187. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +226 -0
  188. data/lib/active_merchant/billing/gateways/quickpay.rb +10 -350
  189. data/lib/active_merchant/billing/gateways/qvalent.rb +236 -0
  190. data/lib/active_merchant/billing/gateways/realex.rb +78 -48
  191. data/lib/active_merchant/billing/gateways/redsys.rb +310 -170
  192. data/lib/active_merchant/billing/gateways/s5.rb +246 -0
  193. data/lib/active_merchant/billing/gateways/safe_charge.rb +262 -0
  194. data/lib/active_merchant/billing/gateways/sage.rb +415 -119
  195. data/lib/active_merchant/billing/gateways/sage_pay.rb +195 -90
  196. data/lib/active_merchant/billing/gateways/sallie_mae.rb +11 -12
  197. data/lib/active_merchant/billing/gateways/secure_net.rb +51 -43
  198. data/lib/active_merchant/billing/gateways/secure_pay.rb +182 -10
  199. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +25 -14
  200. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +10 -18
  201. data/lib/active_merchant/billing/gateways/securion_pay.rb +264 -0
  202. data/lib/active_merchant/billing/gateways/skip_jack.rb +35 -38
  203. data/lib/active_merchant/billing/gateways/smart_ps.rb +50 -42
  204. data/lib/active_merchant/billing/gateways/so_easy_pay.rb +9 -9
  205. data/lib/active_merchant/billing/gateways/spreedly_core.rb +62 -12
  206. data/lib/active_merchant/billing/gateways/stripe.rb +536 -103
  207. data/lib/active_merchant/billing/gateways/swipe_checkout.rb +12 -18
  208. data/lib/active_merchant/billing/gateways/telr.rb +274 -0
  209. data/lib/active_merchant/billing/gateways/tns.rb +22 -0
  210. data/lib/active_merchant/billing/gateways/trans_first.rb +143 -30
  211. data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +608 -0
  212. data/lib/active_merchant/billing/gateways/transact_pro.rb +224 -0
  213. data/lib/active_merchant/billing/gateways/transax.rb +5 -6
  214. data/lib/active_merchant/billing/gateways/transnational.rb +2 -232
  215. data/lib/active_merchant/billing/gateways/trexle.rb +218 -0
  216. data/lib/active_merchant/billing/gateways/trust_commerce.rb +86 -57
  217. data/lib/active_merchant/billing/gateways/usa_epay.rb +4 -4
  218. data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +196 -89
  219. data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +157 -32
  220. data/lib/active_merchant/billing/gateways/vanco.rb +294 -0
  221. data/lib/active_merchant/billing/gateways/verifi.rb +42 -49
  222. data/lib/active_merchant/billing/gateways/viaklix.rb +11 -24
  223. data/lib/active_merchant/billing/gateways/visanet_peru.rb +233 -0
  224. data/lib/active_merchant/billing/gateways/webpay.rb +26 -28
  225. data/lib/active_merchant/billing/gateways/wepay.rb +237 -0
  226. data/lib/active_merchant/billing/gateways/wirecard.rb +153 -31
  227. data/lib/active_merchant/billing/gateways/world_net.rb +344 -0
  228. data/lib/active_merchant/billing/gateways/worldpay.rb +207 -63
  229. data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +215 -0
  230. data/lib/active_merchant/billing/gateways/worldpay_us.rb +221 -0
  231. data/lib/active_merchant/billing/gateways.rb +8 -11
  232. data/lib/active_merchant/billing/model.rb +30 -0
  233. data/lib/active_merchant/billing/network_tokenization_credit_card.rb +39 -0
  234. data/lib/active_merchant/billing/payment_token.rb +21 -0
  235. data/lib/active_merchant/billing/rails.rb +3 -0
  236. data/lib/active_merchant/billing/response.rb +31 -24
  237. data/lib/active_merchant/billing.rb +7 -1
  238. data/lib/active_merchant/connection.rb +195 -0
  239. data/lib/active_merchant/country.rb +335 -0
  240. data/lib/active_merchant/empty.rb +20 -0
  241. data/lib/active_merchant/errors.rb +35 -0
  242. data/lib/active_merchant/net_http_ssl_connection.rb +10 -0
  243. data/lib/active_merchant/network_connection_retries.rb +80 -0
  244. data/lib/active_merchant/post_data.rb +25 -0
  245. data/lib/active_merchant/posts_data.rb +92 -0
  246. data/lib/active_merchant/version.rb +1 -1
  247. data/lib/active_merchant.rb +23 -27
  248. data/lib/activemerchant.rb +1 -1
  249. data/lib/certs/cacert.pem +3988 -0
  250. data/lib/support/gateway_support.rb +7 -9
  251. data/lib/support/outbound_hosts.rb +13 -10
  252. data/lib/support/ssl_verify.rb +6 -7
  253. data/lib/support/ssl_version.rb +87 -0
  254. metadata +148 -323
  255. checksums.yaml.gz.sig +0 -0
  256. data/gem-public_cert.pem +0 -21
  257. data/lib/active_merchant/billing/expiry_date.rb +0 -34
  258. data/lib/active_merchant/billing/gateways/app55.rb +0 -185
  259. data/lib/active_merchant/billing/gateways/barclays_epdq.rb +0 -314
  260. data/lib/active_merchant/billing/gateways/certo_direct.rb +0 -277
  261. data/lib/active_merchant/billing/gateways/ideal/ideal_base.rb +0 -249
  262. data/lib/active_merchant/billing/gateways/ideal/ideal_rabobank.pem +0 -13
  263. data/lib/active_merchant/billing/gateways/ideal/ideal_response.rb +0 -29
  264. data/lib/active_merchant/billing/gateways/ideal_rabobank.rb +0 -66
  265. data/lib/active_merchant/billing/gateways/orbital/avs_result.rb +0 -93
  266. data/lib/active_merchant/billing/gateways/orbital/cvv_result.rb +0 -34
  267. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +0 -93
  268. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +0 -114
  269. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +0 -102
  270. data/lib/active_merchant/billing/gateways/samurai.rb +0 -118
  271. data/lib/active_merchant/billing/gateways/vindicia.rb +0 -361
  272. data/lib/active_merchant/billing/integrations/a1agregator/helper.rb +0 -31
  273. data/lib/active_merchant/billing/integrations/a1agregator/notification.rb +0 -186
  274. data/lib/active_merchant/billing/integrations/a1agregator/status.rb +0 -38
  275. data/lib/active_merchant/billing/integrations/a1agregator.rb +0 -26
  276. data/lib/active_merchant/billing/integrations/action_view_helper.rb +0 -74
  277. data/lib/active_merchant/billing/integrations/alipay/helper.rb +0 -34
  278. data/lib/active_merchant/billing/integrations/alipay/notification.rb +0 -101
  279. data/lib/active_merchant/billing/integrations/alipay.rb +0 -18
  280. data/lib/active_merchant/billing/integrations/authorize_net_sim/helper.rb +0 -229
  281. data/lib/active_merchant/billing/integrations/authorize_net_sim/notification.rb +0 -340
  282. data/lib/active_merchant/billing/integrations/authorize_net_sim.rb +0 -38
  283. data/lib/active_merchant/billing/integrations/bit_pay/helper.rb +0 -64
  284. data/lib/active_merchant/billing/integrations/bit_pay/notification.rb +0 -74
  285. data/lib/active_merchant/billing/integrations/bit_pay/return.rb +0 -10
  286. data/lib/active_merchant/billing/integrations/bit_pay.rb +0 -30
  287. data/lib/active_merchant/billing/integrations/bogus/helper.rb +0 -17
  288. data/lib/active_merchant/billing/integrations/bogus/notification.rb +0 -11
  289. data/lib/active_merchant/billing/integrations/bogus/return.rb +0 -10
  290. data/lib/active_merchant/billing/integrations/bogus.rb +0 -23
  291. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +0 -120
  292. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +0 -158
  293. data/lib/active_merchant/billing/integrations/chronopay/return.rb +0 -10
  294. data/lib/active_merchant/billing/integrations/chronopay.rb +0 -23
  295. data/lib/active_merchant/billing/integrations/citrus/helper.rb +0 -40
  296. data/lib/active_merchant/billing/integrations/citrus/notification.rb +0 -133
  297. data/lib/active_merchant/billing/integrations/citrus/return.rb +0 -40
  298. data/lib/active_merchant/billing/integrations/citrus.rb +0 -51
  299. data/lib/active_merchant/billing/integrations/direc_pay/helper.rb +0 -200
  300. data/lib/active_merchant/billing/integrations/direc_pay/notification.rb +0 -76
  301. data/lib/active_merchant/billing/integrations/direc_pay/return.rb +0 -32
  302. data/lib/active_merchant/billing/integrations/direc_pay/status.rb +0 -37
  303. data/lib/active_merchant/billing/integrations/direc_pay.rb +0 -41
  304. data/lib/active_merchant/billing/integrations/directebanking/helper.rb +0 -90
  305. data/lib/active_merchant/billing/integrations/directebanking/notification.rb +0 -120
  306. data/lib/active_merchant/billing/integrations/directebanking/return.rb +0 -11
  307. data/lib/active_merchant/billing/integrations/directebanking.rb +0 -47
  308. data/lib/active_merchant/billing/integrations/doku/helper.rb +0 -102
  309. data/lib/active_merchant/billing/integrations/doku/notification.rb +0 -69
  310. data/lib/active_merchant/billing/integrations/doku/return.rb +0 -10
  311. data/lib/active_merchant/billing/integrations/doku.rb +0 -24
  312. data/lib/active_merchant/billing/integrations/dotpay/helper.rb +0 -77
  313. data/lib/active_merchant/billing/integrations/dotpay/notification.rb +0 -86
  314. data/lib/active_merchant/billing/integrations/dotpay/return.rb +0 -11
  315. data/lib/active_merchant/billing/integrations/dotpay.rb +0 -22
  316. data/lib/active_merchant/billing/integrations/dwolla/common.rb +0 -23
  317. data/lib/active_merchant/billing/integrations/dwolla/helper.rb +0 -43
  318. data/lib/active_merchant/billing/integrations/dwolla/notification.rb +0 -64
  319. data/lib/active_merchant/billing/integrations/dwolla/return.rb +0 -49
  320. data/lib/active_merchant/billing/integrations/dwolla.rb +0 -23
  321. data/lib/active_merchant/billing/integrations/e_payment_plans/helper.rb +0 -34
  322. data/lib/active_merchant/billing/integrations/e_payment_plans/notification.rb +0 -84
  323. data/lib/active_merchant/billing/integrations/e_payment_plans.rb +0 -48
  324. data/lib/active_merchant/billing/integrations/easy_pay/common.rb +0 -40
  325. data/lib/active_merchant/billing/integrations/easy_pay/helper.rb +0 -36
  326. data/lib/active_merchant/billing/integrations/easy_pay/notification.rb +0 -59
  327. data/lib/active_merchant/billing/integrations/easy_pay.rb +0 -30
  328. data/lib/active_merchant/billing/integrations/epay/helper.rb +0 -55
  329. data/lib/active_merchant/billing/integrations/epay/notification.rb +0 -110
  330. data/lib/active_merchant/billing/integrations/epay.rb +0 -21
  331. data/lib/active_merchant/billing/integrations/first_data/helper.rb +0 -61
  332. data/lib/active_merchant/billing/integrations/first_data/notification.rb +0 -56
  333. data/lib/active_merchant/billing/integrations/first_data.rb +0 -38
  334. data/lib/active_merchant/billing/integrations/gestpay/common.rb +0 -42
  335. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +0 -70
  336. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +0 -85
  337. data/lib/active_merchant/billing/integrations/gestpay/return.rb +0 -10
  338. data/lib/active_merchant/billing/integrations/gestpay.rb +0 -25
  339. data/lib/active_merchant/billing/integrations/helper.rb +0 -117
  340. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +0 -58
  341. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +0 -59
  342. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +0 -68
  343. data/lib/active_merchant/billing/integrations/hi_trust.rb +0 -27
  344. data/lib/active_merchant/billing/integrations/ipay88/helper.rb +0 -118
  345. data/lib/active_merchant/billing/integrations/ipay88/notification.rb +0 -103
  346. data/lib/active_merchant/billing/integrations/ipay88/return.rb +0 -29
  347. data/lib/active_merchant/billing/integrations/ipay88.rb +0 -23
  348. data/lib/active_merchant/billing/integrations/liqpay/helper.rb +0 -43
  349. data/lib/active_merchant/billing/integrations/liqpay/notification.rb +0 -89
  350. data/lib/active_merchant/billing/integrations/liqpay/return.rb +0 -83
  351. data/lib/active_merchant/billing/integrations/liqpay.rb +0 -30
  352. data/lib/active_merchant/billing/integrations/maksuturva/helper.rb +0 -119
  353. data/lib/active_merchant/billing/integrations/maksuturva/notification.rb +0 -48
  354. data/lib/active_merchant/billing/integrations/maksuturva.rb +0 -86
  355. data/lib/active_merchant/billing/integrations/moneybookers/helper.rb +0 -75
  356. data/lib/active_merchant/billing/integrations/moneybookers/notification.rb +0 -123
  357. data/lib/active_merchant/billing/integrations/moneybookers.rb +0 -26
  358. data/lib/active_merchant/billing/integrations/nochex/helper.rb +0 -68
  359. data/lib/active_merchant/billing/integrations/nochex/notification.rb +0 -94
  360. data/lib/active_merchant/billing/integrations/nochex/return.rb +0 -10
  361. data/lib/active_merchant/billing/integrations/nochex.rb +0 -88
  362. data/lib/active_merchant/billing/integrations/notification.rb +0 -71
  363. data/lib/active_merchant/billing/integrations/paxum/common.rb +0 -24
  364. data/lib/active_merchant/billing/integrations/paxum/helper.rb +0 -42
  365. data/lib/active_merchant/billing/integrations/paxum/notification.rb +0 -33
  366. data/lib/active_merchant/billing/integrations/paxum.rb +0 -44
  367. data/lib/active_merchant/billing/integrations/pay_fast/common.rb +0 -42
  368. data/lib/active_merchant/billing/integrations/pay_fast/helper.rb +0 -50
  369. data/lib/active_merchant/billing/integrations/pay_fast/notification.rb +0 -134
  370. data/lib/active_merchant/billing/integrations/pay_fast/return.rb +0 -10
  371. data/lib/active_merchant/billing/integrations/pay_fast.rb +0 -70
  372. data/lib/active_merchant/billing/integrations/paydollar/helper.rb +0 -41
  373. data/lib/active_merchant/billing/integrations/paydollar/notification.rb +0 -60
  374. data/lib/active_merchant/billing/integrations/paydollar/return.rb +0 -15
  375. data/lib/active_merchant/billing/integrations/paydollar.rb +0 -59
  376. data/lib/active_merchant/billing/integrations/payflow_link/helper.rb +0 -116
  377. data/lib/active_merchant/billing/integrations/payflow_link/notification.rb +0 -78
  378. data/lib/active_merchant/billing/integrations/payflow_link.rb +0 -21
  379. data/lib/active_merchant/billing/integrations/paypal/helper.rb +0 -119
  380. data/lib/active_merchant/billing/integrations/paypal/notification.rb +0 -227
  381. data/lib/active_merchant/billing/integrations/paypal/return.rb +0 -10
  382. data/lib/active_merchant/billing/integrations/paypal.rb +0 -39
  383. data/lib/active_merchant/billing/integrations/paypal_payments_advanced/helper.rb +0 -15
  384. data/lib/active_merchant/billing/integrations/paypal_payments_advanced.rb +0 -20
  385. data/lib/active_merchant/billing/integrations/paysbuy/helper.rb +0 -15
  386. data/lib/active_merchant/billing/integrations/paysbuy/notification.rb +0 -39
  387. data/lib/active_merchant/billing/integrations/paysbuy.rb +0 -36
  388. data/lib/active_merchant/billing/integrations/payu_in/helper.rb +0 -76
  389. data/lib/active_merchant/billing/integrations/payu_in/notification.rb +0 -154
  390. data/lib/active_merchant/billing/integrations/payu_in/return.rb +0 -36
  391. data/lib/active_merchant/billing/integrations/payu_in.rb +0 -36
  392. data/lib/active_merchant/billing/integrations/payu_in_paisa/helper.rb +0 -19
  393. data/lib/active_merchant/billing/integrations/payu_in_paisa/notification.rb +0 -13
  394. data/lib/active_merchant/billing/integrations/payu_in_paisa/return.rb +0 -16
  395. data/lib/active_merchant/billing/integrations/payu_in_paisa.rb +0 -30
  396. data/lib/active_merchant/billing/integrations/platron/helper.rb +0 -32
  397. data/lib/active_merchant/billing/integrations/platron/notification.rb +0 -113
  398. data/lib/active_merchant/billing/integrations/platron.rb +0 -28
  399. data/lib/active_merchant/billing/integrations/pxpay/helper.rb +0 -112
  400. data/lib/active_merchant/billing/integrations/pxpay/notification.rb +0 -157
  401. data/lib/active_merchant/billing/integrations/pxpay/return.rb +0 -25
  402. data/lib/active_merchant/billing/integrations/pxpay.rb +0 -31
  403. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +0 -96
  404. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +0 -137
  405. data/lib/active_merchant/billing/integrations/quickpay.rb +0 -21
  406. data/lib/active_merchant/billing/integrations/rbkmoney/helper.rb +0 -23
  407. data/lib/active_merchant/billing/integrations/rbkmoney/notification.rb +0 -91
  408. data/lib/active_merchant/billing/integrations/rbkmoney.rb +0 -17
  409. data/lib/active_merchant/billing/integrations/return.rb +0 -42
  410. data/lib/active_merchant/billing/integrations/robokassa/common.rb +0 -19
  411. data/lib/active_merchant/billing/integrations/robokassa/helper.rb +0 -50
  412. data/lib/active_merchant/billing/integrations/robokassa/notification.rb +0 -55
  413. data/lib/active_merchant/billing/integrations/robokassa/return.rb +0 -17
  414. data/lib/active_merchant/billing/integrations/robokassa.rb +0 -49
  415. data/lib/active_merchant/billing/integrations/sage_pay_form/encryption.rb +0 -33
  416. data/lib/active_merchant/billing/integrations/sage_pay_form/helper.rb +0 -136
  417. data/lib/active_merchant/billing/integrations/sage_pay_form/notification.rb +0 -210
  418. data/lib/active_merchant/billing/integrations/sage_pay_form/return.rb +0 -31
  419. data/lib/active_merchant/billing/integrations/sage_pay_form.rb +0 -37
  420. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +0 -107
  421. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +0 -171
  422. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +0 -58
  423. data/lib/active_merchant/billing/integrations/two_checkout.rb +0 -44
  424. data/lib/active_merchant/billing/integrations/valitor/helper.rb +0 -86
  425. data/lib/active_merchant/billing/integrations/valitor/notification.rb +0 -13
  426. data/lib/active_merchant/billing/integrations/valitor/response_fields.rb +0 -97
  427. data/lib/active_merchant/billing/integrations/valitor/return.rb +0 -13
  428. data/lib/active_merchant/billing/integrations/valitor.rb +0 -33
  429. data/lib/active_merchant/billing/integrations/verkkomaksut/helper.rb +0 -88
  430. data/lib/active_merchant/billing/integrations/verkkomaksut/notification.rb +0 -59
  431. data/lib/active_merchant/billing/integrations/verkkomaksut.rb +0 -20
  432. data/lib/active_merchant/billing/integrations/web_pay/common.rb +0 -50
  433. data/lib/active_merchant/billing/integrations/web_pay/helper.rb +0 -68
  434. data/lib/active_merchant/billing/integrations/web_pay/notification.rb +0 -51
  435. data/lib/active_merchant/billing/integrations/web_pay.rb +0 -45
  436. data/lib/active_merchant/billing/integrations/webmoney/common.rb +0 -17
  437. data/lib/active_merchant/billing/integrations/webmoney/helper.rb +0 -40
  438. data/lib/active_merchant/billing/integrations/webmoney/notification.rb +0 -47
  439. data/lib/active_merchant/billing/integrations/webmoney.rb +0 -43
  440. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/common.rb +0 -104
  441. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/helper.rb +0 -145
  442. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/notification.rb +0 -101
  443. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/return.rb +0 -35
  444. data/lib/active_merchant/billing/integrations/wirecard_checkout_page.rb +0 -39
  445. data/lib/active_merchant/billing/integrations/world_pay/helper.rb +0 -101
  446. data/lib/active_merchant/billing/integrations/world_pay/notification.rb +0 -160
  447. data/lib/active_merchant/billing/integrations/world_pay.rb +0 -34
  448. data/lib/active_merchant/billing/integrations.rb +0 -17
  449. data.tar.gz.sig +0 -0
  450. metadata.gz.sig +0 -1
@@ -101,19 +101,19 @@ module ActiveMerchant #:nodoc:
101
101
 
102
102
  class_attribute :test_url, :live_url
103
103
 
104
- self.test_url = "https://www.payjunctionlabs.com/quick_link"
105
- self.live_url = "https://payjunction.com/quick_link"
104
+ self.test_url = 'https://www.payjunctionlabs.com/quick_link'
105
+ self.live_url = 'https://payjunction.com/quick_link'
106
106
 
107
107
  TEST_LOGIN = 'pj-ql-01'
108
108
  TEST_PASSWORD = 'pj-ql-01p'
109
109
 
110
- SUCCESS_CODES = ["00", "85"]
110
+ SUCCESS_CODES = ['00', '85']
111
111
  SUCCESS_MESSAGE = 'The transaction was approved.'
112
112
 
113
113
  FAILURE_MESSAGE = 'The transaction was declined.'
114
114
 
115
115
  DECLINE_CODES = {
116
- "AE" => 'Address verification failed because address did not match.',
116
+ 'AE' => 'Address verification failed because address did not match.',
117
117
  'ZE' => 'Address verification failed because zip did not match.',
118
118
  'XE' => 'Address verification failed because zip and address did not match.',
119
119
  'YE' => 'Address verification failed because zip and address did not match.',
@@ -144,8 +144,8 @@ module ActiveMerchant #:nodoc:
144
144
  '96' => 'Declined because of a system error.',
145
145
  'N7' => 'Declined because of a CVV2/CVC2 mismatch.',
146
146
  'M4' => 'Declined.',
147
- "FE" => "There was a format error with your Trinity Gateway Service (API) request.",
148
- "LE" => "Could not log you in (problem with dc_logon and/or dc_password).",
147
+ 'FE' => 'There was a format error with your Trinity Gateway Service (API) request.',
148
+ 'LE' => 'Could not log you in (problem with dc_logon and/or dc_password).',
149
149
  'NL' => 'Aborted because of a system error, please try again later. ',
150
150
  'AB' => 'Aborted because of an upstream system error, please try again later.'
151
151
  }
@@ -211,7 +211,7 @@ module ActiveMerchant #:nodoc:
211
211
  end
212
212
 
213
213
  def credit(money, authorization, options = {})
214
- deprecated CREDIT_DEPRECATION_MESSAGE
214
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
215
215
  refund(money, authorization, options)
216
216
  end
217
217
 
@@ -239,6 +239,8 @@ module ActiveMerchant #:nodoc:
239
239
  # YYYYMMDD format and can be used to specify when the first charge will be made.
240
240
  # If omitted the first charge will be immediate.
241
241
  def recurring(money, payment_source, options = {})
242
+ ActiveMerchant.deprecated RECURRING_DEPRECATION_MESSAGE
243
+
242
244
  requires!(options, [:periodicity, :monthly, :weekly, :daily], :payments)
243
245
 
244
246
  periodic_type = case options[:periodicity]
@@ -295,11 +297,15 @@ module ActiveMerchant #:nodoc:
295
297
 
296
298
  # add fields for credit card
297
299
  def add_creditcard(params, creditcard)
298
- params[:name] = creditcard.name
299
- params[:number] = creditcard.number
300
- params[:expiration_month] = creditcard.month
301
- params[:expiration_year] = creditcard.year
302
- params[:verification_number] = creditcard.verification_value if creditcard.verification_value?
300
+ if creditcard.respond_to?(:track_data) && creditcard.track_data.present?
301
+ params[:track] = creditcard.track_data
302
+ else
303
+ params[:name] = creditcard.name
304
+ params[:number] = creditcard.number
305
+ params[:expiration_month] = creditcard.month
306
+ params[:expiration_year] = creditcard.year
307
+ params[:verification_number] = creditcard.verification_value if creditcard.verification_value?
308
+ end
303
309
  end
304
310
 
305
311
  # add field for "instant" transaction, using previous transaction id
@@ -328,7 +334,7 @@ module ActiveMerchant #:nodoc:
328
334
  def commit(action, parameters)
329
335
  url = test? ? self.test_url : self.live_url
330
336
 
331
- response = parse( ssl_post(url, post_data(action, parameters)) )
337
+ response = parse(ssl_post(url, post_data(action, parameters)))
332
338
 
333
339
  Response.new(successful?(response), message_from(response), response,
334
340
  :test => test?,
@@ -360,7 +366,7 @@ module ActiveMerchant #:nodoc:
360
366
  params[:version] = API_VERSION
361
367
  params[:transaction_type] = action
362
368
 
363
- params.reject{|k,v| v.blank?}.collect{ |k, v| "dc_#{k.to_s}=#{CGI.escape(v.to_s)}" }.join("&")
369
+ params.reject { |k, v| v.blank? }.collect { |k, v| "dc_#{k}=#{CGI.escape(v.to_s)}" }.join('&')
364
370
  end
365
371
 
366
372
  def parse(body)
@@ -379,18 +385,6 @@ module ActiveMerchant #:nodoc:
379
385
  end
380
386
  response
381
387
  end
382
-
383
- # Make a ruby type out of the response string
384
- def normalize(field)
385
- case field
386
- when "true" then true
387
- when "false" then false
388
- when "" then nil
389
- when "null" then nil
390
- else field
391
- end
392
- end
393
-
394
388
  end
395
389
  end
396
390
  end
@@ -0,0 +1,188 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ class PayJunctionV2Gateway < Gateway
4
+ self.display_name = 'PayJunction'
5
+ self.homepage_url = 'https://www.payjunction.com/'
6
+
7
+ self.test_url = 'https://api.payjunctionlabs.com/transactions'
8
+ self.live_url = 'https://api.payjunction.com/transactions'
9
+
10
+ self.supported_countries = ['US']
11
+ self.default_currency = 'USD'
12
+ self.money_format = :dollars
13
+ self.supported_cardtypes = [:visa, :master, :american_express, :discover]
14
+
15
+ def initialize(options={})
16
+ requires!(options, :api_login, :api_password, :api_key)
17
+ super
18
+ end
19
+
20
+ def purchase(amount, payment_method, options={})
21
+ post = {}
22
+ add_invoice(post, amount, options)
23
+ add_payment_method(post, payment_method)
24
+
25
+ commit('purchase', post)
26
+ end
27
+
28
+ def authorize(amount, payment_method, options={})
29
+ post = {}
30
+ post[:status] = 'HOLD'
31
+ add_invoice(post, amount, options)
32
+ add_payment_method(post, payment_method)
33
+
34
+ commit('authorize', post)
35
+ end
36
+
37
+ def capture(amount, authorization, options={})
38
+ post = {}
39
+ post[:status] = 'CAPTURE'
40
+ post[:transactionId] = authorization
41
+ add_invoice(post, amount, options)
42
+
43
+ commit('capture', post)
44
+ end
45
+
46
+ def void(authorization, options={})
47
+ post = {}
48
+ post[:status] = 'VOID'
49
+ post[:transactionId] = authorization
50
+
51
+ commit('void', post)
52
+ end
53
+
54
+ def refund(amount, authorization, options={})
55
+ post = {}
56
+ post[:action] = 'REFUND'
57
+ post[:transactionId] = authorization
58
+ add_invoice(post, amount, options)
59
+
60
+ commit('refund', post)
61
+ end
62
+
63
+ def credit(amount, payment_method, options={})
64
+ post = {}
65
+ post[:action] = 'REFUND'
66
+ add_invoice(post, amount, options)
67
+ add_payment_method(post, payment_method)
68
+
69
+ commit('credit', post)
70
+ end
71
+
72
+ def verify(credit_card, options={})
73
+ MultiResponse.run(:use_first_response) do |r|
74
+ r.process { authorize(100, credit_card, options) }
75
+ r.process(:ignore_result) { void(r.authorization, options) }
76
+ end
77
+ end
78
+
79
+ def store(payment_method, options = {})
80
+ verify(payment_method, options)
81
+ end
82
+
83
+ def supports_scrubbing?
84
+ true
85
+ end
86
+
87
+ def scrub(transcript)
88
+ transcript.
89
+ gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]').
90
+ gsub(%r((X-Pj-Application-Key: )[\w-]+), '\1[FILTERED]').
91
+ gsub(%r((cardNumber=)\d+), '\1[FILTERED]').
92
+ gsub(%r((cardCvv=)\d+), '\1[FILTERED]')
93
+ end
94
+
95
+ private
96
+
97
+ def add_invoice(post, money, options)
98
+ post[:amountBase] = amount(money) if money
99
+ post[:invoiceNumber] = options[:order_id] if options[:order_id]
100
+ end
101
+
102
+ def add_payment_method(post, payment_method)
103
+ if payment_method.is_a? Integer
104
+ post[:transactionId] = payment_method
105
+ else
106
+ post[:cardNumber] = payment_method.number
107
+ post[:cardExpMonth] = format(payment_method.month, :two_digits)
108
+ post[:cardExpYear] = format(payment_method.year, :four_digits)
109
+ post[:cardCvv] = payment_method.verification_value
110
+ end
111
+ end
112
+
113
+ def commit(action, params)
114
+ response = begin
115
+ parse(ssl_invoke(action, params))
116
+ rescue ResponseError => e
117
+ parse(e.response.body)
118
+ end
119
+
120
+ success = success_from(response)
121
+ Response.new(
122
+ success,
123
+ message_from(response),
124
+ response,
125
+ authorization: success ? authorization_from(response) : nil,
126
+ error_code: success ? nil : error_from(response),
127
+ test: test?
128
+ )
129
+ end
130
+
131
+ def ssl_invoke(action, params)
132
+ if ['purchase', 'authorize', 'refund', 'credit'].include?(action)
133
+ ssl_post(url(), post_data(params), headers)
134
+ else
135
+ ssl_request(:put, url(params), post_data(params), headers)
136
+ end
137
+ end
138
+
139
+ def headers
140
+ {
141
+ 'Authorization' => 'Basic ' + Base64.encode64("#{@options[:api_login]}:#{@options[:api_password]}").strip,
142
+ 'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8',
143
+ 'Accept' => 'application/json',
144
+ 'X-PJ-Application-Key' => @options[:api_key].to_s
145
+ }
146
+ end
147
+
148
+ def post_data(params)
149
+ params.map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
150
+ end
151
+
152
+ def url(params={})
153
+ test? ? "#{test_url}/#{params[:transactionId]}" : "#{live_url}/#{params[:transactionId]}"
154
+ end
155
+
156
+ def parse(body)
157
+ JSON.parse(body)
158
+ rescue JSON::ParserError
159
+ message = 'Invalid JSON response received from PayJunctionV2Gateway. Please contact PayJunctionV2Gateway if you continue to receive this message.'
160
+ message += " (The raw response returned by the API was #{body.inspect})"
161
+ {
162
+ 'errors' => [{
163
+ 'message' => message
164
+ }]
165
+ }
166
+ end
167
+
168
+ def success_from(response)
169
+ return response['response']['approved'] if response['response']
170
+ false
171
+ end
172
+
173
+ def message_from(response)
174
+ return response['response']['message'] if response['response']
175
+
176
+ response['errors']&.inject('') { |message, error| error['message'] + '|' + message }
177
+ end
178
+
179
+ def authorization_from(response)
180
+ response['transactionId']
181
+ end
182
+
183
+ def error_from(response)
184
+ response['response']['code'] if response['response']
185
+ end
186
+ end
187
+ end
188
+ end
@@ -39,9 +39,10 @@ module ActiveMerchant #:nodoc:
39
39
  end
40
40
 
41
41
  private
42
+
42
43
  # Used for capturing, which is currently not supported.
43
44
  def add_reference(post, identification)
44
- auth, trans_id = identification.split(";")
45
+ auth, trans_id = identification.split(';')
45
46
  post[:authnum] = auth
46
47
  post[:transid] = trans_id
47
48
  end
@@ -51,7 +52,7 @@ module ActiveMerchant #:nodoc:
51
52
  end
52
53
 
53
54
  def add_invoice(post, options)
54
- post[:merchant_transid] = options[:order_id].to_s.slice(0,21)
55
+ post[:merchant_transid] = options[:order_id].to_s.slice(0, 21)
55
56
  post[:memnum] = options[:invoice]
56
57
  post[:custnum] = options[:customer]
57
58
  post[:clientdata] = options[:description]
@@ -64,21 +65,13 @@ module ActiveMerchant #:nodoc:
64
65
  post[:cvv2] = credit_card.verification_value
65
66
  end
66
67
 
67
- def expdate(credit_card)
68
- year = sprintf("%.4i", credit_card.year)
69
- month = sprintf("%.2i", credit_card.month)
70
-
71
- "#{month}#{year[-2..-1]}"
72
- end
73
-
74
68
  def commit(action, money, parameters)
75
- response = parse( ssl_post(self.live_url, post_data(action, parameters)) )
69
+ response = parse(ssl_post(self.live_url, post_data(action, parameters)))
76
70
 
77
71
  Response.new(successful?(response), message_from(response), response,
78
72
  :test => test_response?(response),
79
73
  :authorization => authorization_from(response)
80
74
  )
81
-
82
75
  end
83
76
 
84
77
  def successful?(response)
@@ -86,7 +79,7 @@ module ActiveMerchant #:nodoc:
86
79
  end
87
80
 
88
81
  def authorization_from(response)
89
- [ response[:authnum], response[:transid] ].compact.join(";")
82
+ [ response[:authnum], response[:transid] ].compact.join(';')
90
83
  end
91
84
 
92
85
  def test_response?(response)
@@ -100,7 +93,7 @@ module ActiveMerchant #:nodoc:
100
93
  def parse(body)
101
94
  response = {}
102
95
  body.to_s.each_line do |l|
103
- key, value = l.split(":", 2)
96
+ key, value = l.split(':', 2)
104
97
  response[key.to_s.downcase.to_sym] = value.strip
105
98
  end
106
99
  response
@@ -111,9 +104,8 @@ module ActiveMerchant #:nodoc:
111
104
  parameters[:merchant_id] = @options[:login]
112
105
  parameters[:password] = @options[:password]
113
106
 
114
- parameters.reject{|k,v| v.blank?}.collect { |key, value| "#{key.to_s.upcase}=#{CGI.escape(value.to_s)}" }.join("&")
107
+ parameters.reject { |k, v| v.blank? }.collect { |key, value| "#{key.to_s.upcase}=#{CGI.escape(value.to_s)}" }.join('&')
115
108
  end
116
109
  end
117
110
  end
118
111
  end
119
-
@@ -21,20 +21,21 @@ module ActiveMerchant #:nodoc:
21
21
  }
22
22
 
23
23
  CURRENCY_CODES = {
24
- "AUD"=> '036',
25
- "CAD"=> '124',
26
- "CZK"=> '203',
27
- "DKK"=> '208',
28
- "HKD"=> '344',
29
- "ICK"=> '352',
30
- "JPY"=> '392',
31
- "NOK"=> '578',
32
- "SGD"=> '702',
33
- "SEK"=> '752',
34
- "CHF"=> '756',
35
- "GBP"=> '826',
36
- "USD"=> '840',
37
- "EUR"=> '978'
24
+ 'AUD'=> '036',
25
+ 'CAD'=> '124',
26
+ 'CZK'=> '203',
27
+ 'DKK'=> '208',
28
+ 'HKD'=> '344',
29
+ 'ICK'=> '352',
30
+ 'JPY'=> '392',
31
+ 'NOK'=> '578',
32
+ 'SGD'=> '702',
33
+ 'SEK'=> '752',
34
+ 'CHF'=> '756',
35
+ 'GBP'=> '826',
36
+ 'USD'=> '840',
37
+ 'EUR'=> '978',
38
+ 'XPF'=> '953'
38
39
  }
39
40
 
40
41
  SUCCESS_CODES = ['00000']
@@ -67,6 +68,8 @@ module ActiveMerchant #:nodoc:
67
68
  post = {}
68
69
  add_invoice(post, options)
69
70
  add_creditcard(post, creditcard)
71
+ add_amount(post, money, options)
72
+
70
73
  commit('authorization', money, post)
71
74
  end
72
75
 
@@ -74,6 +77,8 @@ module ActiveMerchant #:nodoc:
74
77
  post = {}
75
78
  add_invoice(post, options)
76
79
  add_creditcard(post, creditcard)
80
+ add_amount(post, money, options)
81
+
77
82
  commit('purchase', money, post)
78
83
  end
79
84
 
@@ -81,8 +86,10 @@ module ActiveMerchant #:nodoc:
81
86
  requires!(options, :order_id)
82
87
  post = {}
83
88
  add_invoice(post, options)
84
- post[:numappel] = authorization[0,10]
85
- post[:numtrans] = authorization[10,10]
89
+ add_amount(post, money, options)
90
+ post[:numappel] = authorization[0, 10]
91
+ post[:numtrans] = authorization[10, 10]
92
+
86
93
  commit('capture', money, post)
87
94
  end
88
95
 
@@ -91,13 +98,15 @@ module ActiveMerchant #:nodoc:
91
98
  post ={}
92
99
  add_invoice(post, options)
93
100
  add_reference(post, identification)
101
+ add_amount(post, options[:amount], options)
94
102
  post[:porteur] = '000000000000000'
95
103
  post[:dateval] = '0000'
104
+
96
105
  commit('void', options[:amount], post)
97
106
  end
98
107
 
99
108
  def credit(money, identification, options = {})
100
- deprecated CREDIT_DEPRECATION_MESSAGE
109
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
101
110
  refund(money, identification, options)
102
111
  end
103
112
 
@@ -105,6 +114,7 @@ module ActiveMerchant #:nodoc:
105
114
  post = {}
106
115
  add_invoice(post, options)
107
116
  add_reference(post, identification)
117
+ add_amount(post, money, options)
108
118
  commit('refund', money, post)
109
119
  end
110
120
 
@@ -121,23 +131,26 @@ module ActiveMerchant #:nodoc:
121
131
  end
122
132
 
123
133
  def add_reference(post, identification)
124
- post[:numappel] = identification[0,10]
125
- post[:numtrans] = identification[10,10]
134
+ post[:numappel] = identification[0, 10]
135
+ post[:numtrans] = identification[10, 10]
136
+ end
137
+
138
+ def add_amount(post, money, options)
139
+ post[:montant] = ('0000000000' + (money ? amount(money) : ''))[-10..-1]
140
+ post[:devise] = CURRENCY_CODES[options[:currency] || currency(money)]
126
141
  end
127
142
 
128
143
  def parse(body)
129
144
  results = {}
130
145
  body.split(/&/).each do |pair|
131
- key,val = pair.split(/\=/)
146
+ key, val = pair.split(/\=/)
132
147
  results[key.downcase.to_sym] = CGI.unescape(val) if val
133
148
  end
134
149
  results
135
150
  end
136
151
 
137
152
  def commit(action, money = nil, parameters = nil)
138
- parameters[:montant] = ('0000000000' + (money ? amount(money) : ''))[-10..-1]
139
- parameters[:devise] = CURRENCY_CODES[options[:currency] || currency(money)]
140
- request_data = post_data(action,parameters)
153
+ request_data = post_data(action, parameters)
141
154
  response = parse(ssl_post(test? ? self.test_url : self.live_url, request_data))
142
155
  response = parse(ssl_post(self.live_url_backup, request_data)) if service_unavailable?(response) && !test?
143
156
  Response.new(success?(response), message_from(response), response.merge(
@@ -145,7 +158,7 @@ module ActiveMerchant #:nodoc:
145
158
  :test => test?,
146
159
  :authorization => response[:numappel].to_s + response[:numtrans].to_s,
147
160
  :fraud_review => false,
148
- :sent_params => parameters.delete_if{|key,value| ['porteur','dateval','cvv'].include?(key.to_s)}
161
+ :sent_params => parameters.delete_if { |key, value| ['porteur', 'dateval', 'cvv'].include?(key.to_s) }
149
162
  )
150
163
  end
151
164
 
@@ -162,20 +175,19 @@ module ActiveMerchant #:nodoc:
162
175
  end
163
176
 
164
177
  def post_data(action, parameters = {})
165
-
166
178
  parameters.update(
167
179
  :version => API_VERSION,
168
180
  :type => TRANSACTIONS[action.to_sym],
169
181
  :dateq => Time.now.strftime('%d%m%Y%H%M%S'),
170
182
  :numquestion => unique_id(parameters[:order_id]),
171
- :site => @options[:login].to_s[0,7],
172
- :rang => @options[:login].to_s[7..-1],
183
+ :site => @options[:login].to_s[0, 7],
184
+ :rang => @options[:rang] || @options[:login].to_s[7..-1],
173
185
  :cle => @options[:password],
174
186
  :pays => '',
175
187
  :archivage => parameters[:order_id]
176
188
  )
177
189
 
178
- parameters.collect { |key, value| "#{key.to_s.upcase}=#{CGI.escape(value.to_s)}" }.join("&")
190
+ parameters.collect { |key, value| "#{key.to_s.upcase}=#{CGI.escape(value.to_s)}" }.join('&')
179
191
  end
180
192
 
181
193
  def unique_id(seed = 0)
@@ -183,14 +195,6 @@ module ActiveMerchant #:nodoc:
183
195
 
184
196
  "0000000000#{randkey}"[-10..-1]
185
197
  end
186
-
187
- def expdate(credit_card)
188
- year = sprintf("%.4i", credit_card.year)
189
- month = sprintf("%.2i", credit_card.month)
190
-
191
- "#{month}#{year[-2..-1]}"
192
- end
193
-
194
198
  end
195
199
  end
196
200
  end