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
@@ -1,11 +1,14 @@
1
1
  module ActiveMerchant #:nodoc:
2
2
  module Billing #:nodoc:
3
3
  class JetpayGateway < Gateway
4
+ class_attribute :live_us_url, :live_ca_url
5
+
4
6
  self.test_url = 'https://test1.jetpay.com/jetpay'
5
- self.live_url = 'https://gateway17.jetpay.com/jetpay'
7
+ self.live_us_url = 'https://gateway17.jetpay.com/jetpay'
8
+ self.live_ca_url = 'https://gateway17.jetpay.com/canada-bb'
6
9
 
7
10
  # The countries the gateway supports merchants from as 2 digit ISO country codes
8
- self.supported_countries = ['US']
11
+ self.supported_countries = ['US', 'CA']
9
12
 
10
13
  # The card types supported by the payment gateway
11
14
  self.supported_cardtypes = [:visa, :master, :american_express, :discover]
@@ -20,46 +23,132 @@ module ActiveMerchant #:nodoc:
20
23
  self.money_format = :cents
21
24
 
22
25
  ACTION_CODE_MESSAGES = {
23
- "001" => "Refer to card issuer.",
24
- "002" => "Refer to card issuer, special condition.",
25
- "003" => "Pick up card.",
26
- "200" => "Deny - Pick up card.",
27
- "005" => "Do not honor.",
28
- "100" => "Deny.",
29
- "006" => "Error.",
30
- "181" => "Format error.",
31
- "007" => "Pickup card, special condition.",
32
- "104" => "Deny - New card issued.",
33
- "110" => "Invalid amount.",
34
- "014" => "Invalid account number (no such number).",
35
- "111" => "Invalid account.",
36
- "015" => "No such issuer.",
37
- "103" => "Deny - Invalid manual Entry 4DBC.",
38
- "182" => "Please wait.",
39
- "109" => "Invalid merchant.",
40
- "041" => "Pick up card (lost card).",
41
- "043" => "Pick up card (stolen card).",
42
- "051" => "Insufficient funds.",
43
- "052" => "No checking account.",
44
- "105" => "Deny - Account Cancelled.",
45
- "054" => "Expired Card.",
46
- "101" => "Expired Card.",
47
- "183" => "Invalid currency code.",
48
- "057" => "Transaction not permitted to cardholder.",
49
- "115" => "Service not permitted.",
50
- "062" => "Restricted card.",
51
- "189" => "Deny - Cancelled or Closed Merchant/SE.",
52
- "188" => "Deny - Expiration date required.",
53
- "125" => "Invalid effective date.",
54
- "122" => "Invalid card (CID) security code.",
55
- "400" => "Reversal accepted.",
56
- "992" => "DECLINE/TIMEOUT.",
57
- "107" => "Please Call Issuer.",
58
- "025" => "Transaction Not Found.",
59
- "981" => "AVS Error.",
60
- "913" => "Invalid Card Type.",
61
- "996" => "Terminal ID Not Found.",
62
- nil => "No response returned (missing credentials?)."
26
+ '000' => 'Approved.',
27
+ '001' => 'Refer to card issuer.',
28
+ '002' => 'Refer to card issuer, special condition.',
29
+ '003' => 'Invalid merchant or service provider.',
30
+ '004' => 'Pick up card.',
31
+ '005' => 'Do not honor.',
32
+ '006' => 'Error.',
33
+ '007' => 'Pick up card, special condition.',
34
+ '008' => 'Honor with ID (Show ID).',
35
+ '010' => 'Partial approval.',
36
+ '011' => 'VIP approval.',
37
+ '012' => 'Invalid transaction.',
38
+ '013' => 'Invalid amount or exceeds maximum for card program.',
39
+ '014' => 'Invalid account number (no such number).',
40
+ '015' => 'No such issuer.',
41
+ '019' => 'Re-enter Transaction.',
42
+ '021' => 'No action taken (unable to back out prior transaction).',
43
+ '025' => 'Transaction Not Found.',
44
+ '027' => 'File update field edit error.',
45
+ '028' => 'File is temporarily unavailable.',
46
+ '030' => 'Format error.',
47
+ '039' => 'No credit account.',
48
+ '041' => 'Pick up card (lost card).',
49
+ '043' => 'Pick up card (stolen card).',
50
+ '051' => 'Insufficient funds.',
51
+ '052' => 'No checking account.',
52
+ '053' => 'No savings account.',
53
+ '054' => 'Expired Card.',
54
+ '055' => 'Incorrect PIN.',
55
+ '057' => 'Transaction not permitted to cardholder.',
56
+ '058' => 'Transaction not allowed at terminal.',
57
+ '061' => 'Exceeds withdrawal limit.',
58
+ '062' => 'Restricted card (eg, Country Exclusion).',
59
+ '063' => 'Security violation.',
60
+ '065' => 'Activity count limit exceeded.',
61
+ '068' => 'Response late.',
62
+ '070' => 'Contact card issuer.',
63
+ '071' => 'PIN not changed.',
64
+ '075' => 'Allowable number of PIN-entry tries exceeded.',
65
+ '076' => 'Unable to locate previous message (no matching retrieval reference number).',
66
+ '077' => 'Repeat or reversal data are inconsistent with original message.',
67
+ '078' => 'Blocked (first use), or non-existent account.',
68
+ '079' => 'Key exchange validation failed.',
69
+ '080' => 'Credit issuer unavailable or invalid date.',
70
+ '081' => 'PIN cryptographic error found.',
71
+ '082' => 'Negative online CVV results.',
72
+ '084' => 'Invalid auth life cycle.',
73
+ '085' => 'No reason to decline - CVV or AVS approved.',
74
+ '086' => 'Cannot verify PIN.',
75
+ '087' => 'Cashback not allowed.',
76
+ '089' => 'Issuer Down.',
77
+ '091' => 'Issuer Down.',
78
+ '092' => 'Unable to route transaction.',
79
+ '093' => 'Transaction cannot be completed - violation of law.',
80
+ '094' => 'Duplicate transmission.',
81
+ '096' => 'System error.',
82
+ '100' => 'Deny.',
83
+ '101' => 'Expired Card.',
84
+ '103' => 'Deny - Invalid manual Entry 4DBC.',
85
+ '104' => 'Deny - New card issued.',
86
+ '105' => 'Deny - Account Cancelled.',
87
+ '106' => 'Exceeded PIN Attempts.',
88
+ '107' => 'Please Call Issuer.',
89
+ '109' => 'Invalid merchant.',
90
+ '110' => 'Invalid amount.',
91
+ '111' => 'Invalid account.',
92
+ '115' => 'Service not permitted.',
93
+ '122' => 'Invalid card (CID) security code.',
94
+ '125' => 'Invalid effective date.',
95
+ '181' => 'Format error.',
96
+ '182' => 'Please wait.',
97
+ '183' => 'Invalid currency code.',
98
+ '187' => 'Deny - new card issued.',
99
+ '188' => 'Deny - Expiration date required.',
100
+ '189' => 'Deny - Cancelled or Closed Merchant/SE.',
101
+ '200' => 'Deny - Pick up card.',
102
+ '400' => 'Reversal accepted.',
103
+ '601' => 'Reject - EMV Chip Declined Transaction.',
104
+ '602' => 'Reject - Suspected Fraud.',
105
+ '603' => 'Reject - Communications Error.',
106
+ '604' => 'Reject - Insufficient Approval.',
107
+ '750' => 'Velocity Check Fail.',
108
+ '899' => 'Misc Decline.',
109
+ '900' => 'Invalid Message Type.',
110
+ '901' => 'Invalid Merchant ID.',
111
+ '903' => 'Debit not supported.',
112
+ '904' => 'Private label not supported.',
113
+ '905' => 'Invalid card type.',
114
+ '906' => 'Unit not active.',
115
+ '908' => 'Manual card entry invalid.',
116
+ '909' => 'Invalid track information.',
117
+ '911' => 'Master merchant not found.',
118
+ '912' => 'Invalid card format.',
119
+ '913' => 'Invalid card type.',
120
+ '914' => 'Invalid card length.',
121
+ '917' => 'Expired card.',
122
+ '919' => 'Invalid entry type.',
123
+ '920' => 'Invalid amount.',
124
+ '921' => 'Invalid messge format.',
125
+ '923' => 'Invalid ABA.',
126
+ '924' => 'Invalid DDA.',
127
+ '925' => 'Invalid TID.',
128
+ '926' => 'Invalid Password.',
129
+ '930' => 'Invalid zipcode.',
130
+ '931' => 'Invalid Address.',
131
+ '932' => 'Invalid ZIP and Address.',
132
+ '933' => 'Invalid CVV2.',
133
+ '934' => 'Program Not Allowed.',
134
+ '940' => 'Record Not Found.',
135
+ '941' => 'Merchant ID error.',
136
+ '942' => 'Refund Not Allowed.',
137
+ '943' => 'Refund denied.',
138
+ '955' => 'Invalid PIN block.',
139
+ '956' => 'Invalid KSN.',
140
+ '958' => 'Bad Status.',
141
+ '959' => 'Seek Record limit exceeded.',
142
+ '962' => 'Invalid PIN key (Unknown KSN).',
143
+ '981' => 'Invalid AVS.',
144
+ '987' => 'Issuer Unavailable.',
145
+ '988' => 'System error SD.',
146
+ '989' => 'Database Error.',
147
+ '992' => 'Transaction Timeout.',
148
+ '996' => 'Bad Terminal ID.',
149
+ '997' => 'Message rejected by association.',
150
+ '999' => 'Communication failure',
151
+ nil => 'No response returned (missing credentials?).'
63
152
  }
64
153
 
65
154
  def initialize(options = {})
@@ -76,39 +165,57 @@ module ActiveMerchant #:nodoc:
76
165
  end
77
166
 
78
167
  def capture(money, reference, options = {})
79
- commit(money, build_capture_request('CAPT', reference.split(";").first))
168
+ split_authorization = reference.split(';')
169
+ transaction_id = split_authorization[0]
170
+ token = split_authorization[3]
171
+ commit(money, build_capture_request(transaction_id, money, options), token)
80
172
  end
81
173
 
82
174
  def void(reference, options = {})
83
- transaction_id, approval, amount = reference.split(";")
84
- commit(amount.to_i, build_void_request(amount.to_i, transaction_id, approval))
175
+ transaction_id, approval, amount, token = reference.split(';')
176
+ commit(amount.to_i, build_void_request(amount.to_i, transaction_id, approval, token, options), token)
85
177
  end
86
178
 
87
179
  def credit(money, transaction_id_or_card, options = {})
88
180
  if transaction_id_or_card.is_a?(String)
89
- deprecated CREDIT_DEPRECATION_MESSAGE
181
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
90
182
  refund(money, transaction_id_or_card, options)
91
183
  else
92
- commit(money, build_credit_request('CREDIT', money, nil, transaction_id_or_card))
184
+ commit(money, build_credit_request('CREDIT', money, nil, transaction_id_or_card, nil, options))
93
185
  end
94
186
  end
95
187
 
96
188
  def refund(money, reference, options = {})
97
- transaction_id = reference.split(";").first
189
+ split_authorization = reference.split(';')
190
+ transaction_id = split_authorization[0]
191
+ token = split_authorization[3]
98
192
  credit_card = options[:credit_card]
99
- commit(money, build_credit_request('CREDIT', money, transaction_id, credit_card))
193
+ commit(money, build_credit_request('CREDIT', money, transaction_id, credit_card, token, options))
194
+ end
195
+
196
+ def supports_scrubbing
197
+ true
100
198
  end
101
199
 
200
+ def scrub(transcript)
201
+ transcript.
202
+ gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]').
203
+ gsub(%r((>)\d+(</CardNum>)), '\1[FILTERED]\2').
204
+ gsub(%r((<CVV2>)\d+(</CVV2>)), '\1[FILTERED]\2')
205
+ end
102
206
 
103
207
  private
104
208
 
105
- def build_xml_request(transaction_type, transaction_id = nil, &block)
209
+ def build_xml_request(transaction_type, options = {}, transaction_id = nil, &block)
106
210
  xml = Builder::XmlMarkup.new
107
211
  xml.tag! 'JetPay' do
108
212
  # The basic values needed for any request
109
213
  xml.tag! 'TerminalID', @options[:login]
110
214
  xml.tag! 'TransactionType', transaction_type
111
215
  xml.tag! 'TransactionID', transaction_id.nil? ? generate_unique_id.slice(0, 18) : transaction_id
216
+ if options && options[:origin]
217
+ xml.tag! 'Origin', options[:origin]
218
+ end
112
219
 
113
220
  if block_given?
114
221
  yield xml
@@ -119,11 +226,12 @@ module ActiveMerchant #:nodoc:
119
226
  end
120
227
 
121
228
  def build_sale_request(money, credit_card, options)
122
- build_xml_request('SALE') do |xml|
229
+ build_xml_request('SALE', options) do |xml|
123
230
  add_credit_card(xml, credit_card)
124
231
  add_addresses(xml, options)
125
232
  add_customer_data(xml, options)
126
233
  add_invoice_data(xml, options)
234
+ add_user_defined_fields(xml, options)
127
235
  xml.tag! 'TotalAmount', amount(money)
128
236
 
129
237
  xml.target!
@@ -136,49 +244,63 @@ module ActiveMerchant #:nodoc:
136
244
  add_addresses(xml, options)
137
245
  add_customer_data(xml, options)
138
246
  add_invoice_data(xml, options)
247
+ add_user_defined_fields(xml, options)
139
248
  xml.tag! 'TotalAmount', amount(money)
140
249
 
141
250
  xml.target!
142
251
  end
143
252
  end
144
253
 
145
- def build_capture_request(transaction_type, transaction_id)
146
- build_xml_request(transaction_type, transaction_id)
254
+ def build_capture_request(transaction_id, money, options)
255
+ build_xml_request('CAPT', options, transaction_id) do |xml|
256
+ xml.tag! 'TotalAmount', amount(money)
257
+ add_user_defined_fields(xml, options)
258
+ end
147
259
  end
148
260
 
149
- def build_void_request(money, transaction_id, approval)
150
- build_xml_request('VOID', transaction_id) do |xml|
261
+ def build_void_request(money, transaction_id, approval, token, options)
262
+ build_xml_request('VOID', options, transaction_id) do |xml|
151
263
  xml.tag! 'Approval', approval
152
264
  xml.tag! 'TotalAmount', amount(money)
153
-
265
+ xml.tag! 'Token', token if token
154
266
  xml.target!
155
267
  end
156
268
  end
157
269
 
158
270
  # `transaction_id` may be nil for unlinked credit transactions.
159
- def build_credit_request(transaction_type, money, transaction_id, card)
160
- build_xml_request(transaction_type, transaction_id) do |xml|
271
+ def build_credit_request(transaction_type, money, transaction_id, card, token, options)
272
+ build_xml_request(transaction_type, options, transaction_id) do |xml|
161
273
  add_credit_card(xml, card) if card
274
+ add_invoice_data(xml, options)
275
+ add_addresses(xml, options)
276
+ add_customer_data(xml, options)
277
+ add_user_defined_fields(xml, options)
162
278
  xml.tag! 'TotalAmount', amount(money)
279
+ xml.tag! 'Token', token if token
163
280
 
164
281
  xml.target!
165
282
  end
166
283
  end
167
284
 
168
- def commit(money, request)
169
- response = parse(ssl_post(test? ? self.test_url : self.live_url, request))
285
+ def commit(money, request, token = nil)
286
+ response = parse(ssl_post(url, request))
170
287
 
171
288
  success = success?(response)
172
289
  Response.new(success,
173
290
  success ? 'APPROVED' : message_from(response),
174
291
  response,
175
292
  :test => test?,
176
- :authorization => authorization_from(response, money),
293
+ :authorization => authorization_from(response, money, token),
177
294
  :avs_result => { :code => response[:avs] },
178
295
  :cvv_result => response[:cvv2]
179
296
  )
180
297
  end
181
298
 
299
+ def url
300
+ live_url = @options[:region] == 'CA' ? live_ca_url : live_us_url
301
+ test? ? test_url : live_url
302
+ end
303
+
182
304
  def parse(body)
183
305
  return {} if body.blank?
184
306
 
@@ -193,7 +315,7 @@ module ActiveMerchant #:nodoc:
193
315
 
194
316
  def parse_element(response, node)
195
317
  if node.has_elements?
196
- node.elements.each{|element| parse_element(response, element) }
318
+ node.elements.each { |element| parse_element(response, element) }
197
319
  else
198
320
  response[node.name.underscore.to_sym] = node.text
199
321
  end
@@ -204,25 +326,25 @@ module ActiveMerchant #:nodoc:
204
326
  end
205
327
 
206
328
  def success?(response)
207
- response[:action_code] == "000"
329
+ response[:action_code] == '000'
208
330
  end
209
331
 
210
332
  def message_from(response)
211
333
  ACTION_CODE_MESSAGES[response[:action_code]]
212
334
  end
213
335
 
214
- def authorization_from(response, money)
336
+ def authorization_from(response, money, previous_token)
215
337
  original_amount = amount(money) if money
216
- [ response[:transaction_id], response[:approval], original_amount ].join(";")
338
+ [ response[:transaction_id], response[:approval], original_amount, (response[:token] || previous_token)].join(';')
217
339
  end
218
340
 
219
341
  def add_credit_card(xml, credit_card)
220
- xml.tag! 'CardNum', credit_card.number
342
+ xml.tag! 'CardNum', credit_card.number, 'Tokenize' => true
221
343
  xml.tag! 'CardExpMonth', format_exp(credit_card.month)
222
344
  xml.tag! 'CardExpYear', format_exp(credit_card.year)
223
345
 
224
346
  if credit_card.first_name || credit_card.last_name
225
- xml.tag! 'CardName', [credit_card.first_name,credit_card.last_name].compact.join(' ')
347
+ xml.tag! 'CardName', [credit_card.first_name, credit_card.last_name].compact.join(' ')
226
348
  end
227
349
 
228
350
  unless credit_card.verification_value.nil? || (credit_card.verification_value.length == 0)
@@ -232,7 +354,7 @@ module ActiveMerchant #:nodoc:
232
354
 
233
355
  def add_addresses(xml, options)
234
356
  if billing_address = options[:billing_address] || options[:address]
235
- xml.tag! 'BillingAddress', [billing_address[:address1], billing_address[:address2]].compact.join(" ")
357
+ xml.tag! 'BillingAddress', [billing_address[:address1], billing_address[:address2]].compact.join(' ')
236
358
  xml.tag! 'BillingCity', billing_address[:city]
237
359
  xml.tag! 'BillingStateProv', billing_address[:state]
238
360
  xml.tag! 'BillingPostalCode', billing_address[:zip]
@@ -245,7 +367,7 @@ module ActiveMerchant #:nodoc:
245
367
  xml.tag! 'ShippingName', shipping_address[:name]
246
368
 
247
369
  xml.tag! 'ShippingAddr' do
248
- xml.tag! 'Address', [shipping_address[:address1], shipping_address[:address2]].compact.join(" ")
370
+ xml.tag! 'Address', [shipping_address[:address1], shipping_address[:address2]].compact.join(' ')
249
371
  xml.tag! 'City', shipping_address[:city]
250
372
  xml.tag! 'StateProv', shipping_address[:state]
251
373
  xml.tag! 'PostalCode', shipping_address[:zip]
@@ -265,11 +387,16 @@ module ActiveMerchant #:nodoc:
265
387
  xml.tag! 'TaxAmount', amount(options[:tax]) if options[:tax]
266
388
  end
267
389
 
390
+ def add_user_defined_fields(xml, options)
391
+ xml.tag! 'UDField1', options[:ud_field_1] if options[:ud_field_1]
392
+ xml.tag! 'UDField2', options[:ud_field_2] if options[:ud_field_2]
393
+ xml.tag! 'UDField3', options[:ud_field_3] if options[:ud_field_3]
394
+ end
395
+
268
396
  def lookup_country_code(code)
269
397
  country = Country.find(code) rescue nil
270
- country && country.code(:alpha3)
398
+ country&.code(:alpha3)
271
399
  end
272
400
  end
273
401
  end
274
402
  end
275
-