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
@@ -2,7 +2,6 @@ require 'rexml/document'
2
2
 
3
3
  module ActiveMerchant #:nodoc:
4
4
  module Billing #:nodoc:
5
-
6
5
  # To learn more about the Moneris (US) gateway, please contact
7
6
  # ussales@moneris.com for a copy of their integration guide. For
8
7
  # information on remote testing, please see "Test Environment Penny Value
@@ -18,29 +17,70 @@ module ActiveMerchant #:nodoc:
18
17
  self.homepage_url = 'http://www.monerisusa.com/'
19
18
  self.display_name = 'Moneris (US)'
20
19
 
21
- # login is your Store ID
22
- # password is your API Token
20
+ # Initialize the Gateway
21
+ #
22
+ # The gateway requires that a valid login and password be passed
23
+ # in the +options+ hash.
24
+ #
25
+ # ==== Options
26
+ #
27
+ # * <tt>:login</tt> -- Your Store ID
28
+ # * <tt>:password</tt> -- Your API Token
29
+ # * <tt>:cvv_enabled</tt> -- Specify that you would like the CVV passed to the gateway.
30
+ # Only particular account types at Moneris will allow this.
31
+ # Defaults to false. (optional)
23
32
  def initialize(options = {})
24
33
  requires!(options, :login, :password)
34
+ @cvv_enabled = options[:cvv_enabled]
35
+ @avs_enabled = options[:avs_enabled]
25
36
  options = { :crypt_type => 7 }.merge(options)
26
37
  super
27
38
  end
28
39
 
40
+ def verify(creditcard_or_datakey, options = {})
41
+ MultiResponse.run(:use_first_response) do |r|
42
+ r.process { authorize(100, creditcard_or_datakey, options) }
43
+ r.process(:ignore_result) { capture(0, r.authorization) }
44
+ end
45
+ end
46
+
29
47
  # Referred to as "PreAuth" in the Moneris integration guide, this action
30
48
  # verifies and locks funds on a customer's card, which then must be
31
49
  # captured at a later date.
32
50
  #
33
51
  # Pass in +order_id+ and optionally a +customer+ parameter.
34
- def authorize(money, creditcard, options = {})
35
- debit_commit 'us_preauth', money, creditcard, options
52
+ def authorize(money, creditcard_or_datakey, options = {})
53
+ requires!(options, :order_id)
54
+ post = {}
55
+ add_payment_source(post, creditcard_or_datakey, options)
56
+ post[:amount] = amount(money)
57
+ post[:order_id] = options[:order_id]
58
+ post[:address] = options[:billing_address] || options[:address]
59
+ post[:crypt_type] = options[:crypt_type] || @options[:crypt_type]
60
+ action = post[:data_key].blank? ? 'us_preauth' : 'us_res_preauth_cc'
61
+ commit(action, post)
36
62
  end
37
63
 
38
- # This action verifies funding on a customer's card, and readies them for
64
+ # This action verifies funding on a customer's card and readies them for
39
65
  # deposit in a merchant's account.
40
66
  #
41
67
  # Pass in <tt>order_id</tt> and optionally a <tt>customer</tt> parameter
42
- def purchase(money, creditcard, options = {})
43
- debit_commit 'us_purchase', money, creditcard, options
68
+ def purchase(money, creditcard_or_datakey, options = {})
69
+ requires!(options, :order_id)
70
+ post = {}
71
+ add_payment_source(post, creditcard_or_datakey, options)
72
+ post[:amount] = amount(money)
73
+ post[:order_id] = options[:order_id]
74
+ add_address(post, creditcard_or_datakey, options)
75
+ post[:crypt_type] = options[:crypt_type] || @options[:crypt_type]
76
+ action = if creditcard_or_datakey.is_a?(String)
77
+ 'us_res_purchase_cc'
78
+ elsif card_brand(creditcard_or_datakey) == 'check'
79
+ 'us_ach_debit'
80
+ elsif post[:data_key].blank?
81
+ 'us_purchase'
82
+ end
83
+ commit(action, post)
44
84
  end
45
85
 
46
86
  # This method retrieves locked funds from a customer's account (from a
@@ -71,7 +111,7 @@ module ActiveMerchant #:nodoc:
71
111
  # Moneris interface consistent with other gateways. (See +capture+ for
72
112
  # details.)
73
113
  def credit(money, authorization, options = {})
74
- deprecated CREDIT_DEPRECATION_MESSAGE
114
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
75
115
  refund(money, authorization, options)
76
116
  end
77
117
 
@@ -79,27 +119,80 @@ module ActiveMerchant #:nodoc:
79
119
  commit 'us_refund', crediting_params(authorization, :amount => amount(money))
80
120
  end
81
121
 
122
+ def store(payment_source, options = {})
123
+ post = {}
124
+ add_payment_source(post, payment_source, options)
125
+ post[:crypt_type] = options[:crypt_type] || @options[:crypt_type]
126
+ card_brand(payment_source) == 'check' ? commit('us_res_add_ach', post) : commit('us_res_add_cc', post)
127
+ end
128
+
129
+ def unstore(data_key, options = {})
130
+ post = {}
131
+ post[:data_key] = data_key
132
+ commit('us_res_delete', post)
133
+ end
134
+
135
+ def update(data_key, payment_source, options = {})
136
+ post = {}
137
+ add_payment_source(post, payment_source, options)
138
+ post[:data_key] = data_key
139
+ card_brand(payment_source) == 'check' ? commit('us_res_update_ach', post) : commit('us_res_update_cc', post)
140
+ end
141
+
142
+ def supports_scrubbing?
143
+ true
144
+ end
145
+
146
+ def scrub(transcript)
147
+ transcript.
148
+ gsub(%r((<pan>)[^<]*(</pan>))i, '\1[FILTERED]\2').
149
+ gsub(%r((<api_token>)[^<]*(</api_token>))i, '\1[FILTERED]\2').
150
+ gsub(%r((<cvd_value>)[^<]*(</cvd_value>))i, '\1[FILTERED]\2')
151
+ end
152
+
82
153
  private # :nodoc: all
83
154
 
84
155
  def expdate(creditcard)
85
- sprintf("%.4i", creditcard.year)[-2..-1] + sprintf("%.2i", creditcard.month)
156
+ sprintf('%.4i', creditcard.year)[-2..-1] + sprintf('%.2i', creditcard.month)
86
157
  end
87
158
 
88
- def debit_commit(commit_type, money, creditcard, options)
89
- requires!(options, :order_id)
90
- commit(commit_type, debit_params(money, creditcard, options))
159
+ def add_address(post, payment_method, options)
160
+ if !payment_method.is_a?(String) && card_brand(payment_method) == 'check'
161
+ post[:ach_info][:cust_first_name] = payment_method.first_name if payment_method.first_name
162
+ post[:ach_info][:cust_last_name] = payment_method.last_name if payment_method.last_name
163
+ if address = options[:billing_address] || options[:address]
164
+ post[:ach_info][:cust_address1] = address[:address1] if address[:address1]
165
+ post[:ach_info][:cust_address2] = address[:address2] if address[:address2]
166
+ post[:ach_info][:city] = address[:city] if address[:city]
167
+ post[:ach_info][:state] = address[:state] if address[:state]
168
+ post[:ach_info][:zip] = address[:zip] if address[:zip]
169
+ end
170
+ else
171
+ post[:address] = options[:billing_address] || options[:address]
172
+ end
91
173
  end
92
174
 
93
- # Common params used amongst the +purchase+ and +authorization+ methods
94
- def debit_params(money, creditcard, options = {})
95
- {
96
- :order_id => options[:order_id],
97
- :cust_id => options[:customer],
98
- :amount => amount(money),
99
- :pan => creditcard.number,
100
- :expdate => expdate(creditcard),
101
- :crypt_type => options[:crypt_type] || @options[:crypt_type]
102
- }
175
+ def add_payment_source(post, source, options)
176
+ if source.is_a?(String)
177
+ post[:data_key] = source
178
+ post[:cust_id] = options[:customer]
179
+ elsif card_brand(source) == 'check'
180
+ ach_info = {}
181
+ ach_info[:sec] = 'web'
182
+ ach_info[:routing_num] = source.routing_number
183
+ ach_info[:account_num] = source.account_number
184
+ ach_info[:account_type] = source.account_type
185
+ ach_info[:check_num] = source.number if source.number
186
+ post[:ach_info] = ach_info
187
+ else
188
+ post[:pan] = source.number
189
+ post[:expdate] = expdate(source)
190
+ post[:cvd_value] = source.verification_value if source.verification_value?
191
+ if crypt_type = options[:crypt_type] || @options[:crypt_type]
192
+ post[:crypt_type] = crypt_type
193
+ end
194
+ post[:cust_id] = options[:customer] || source.name
195
+ end
103
196
  end
104
197
 
105
198
  # Common params used amongst the +credit+, +void+ and +capture+ methods
@@ -122,10 +215,15 @@ module ActiveMerchant #:nodoc:
122
215
  end
123
216
 
124
217
  def commit(action, parameters = {})
125
- response = parse(ssl_post(test? ? self.test_url : self.live_url, post_data(action, parameters)))
218
+ data = post_data(action, parameters)
219
+ url = test? ? self.test_url : self.live_url
220
+ raw = ssl_post(url, data)
221
+ response = parse(raw)
126
222
 
127
223
  Response.new(successful?(response), message_from(response[:message]), response,
128
224
  :test => test?,
225
+ :avs_result => { :code => response[:avs_result_code] },
226
+ :cvv_result => response[:cvd_result_code] && response[:cvd_result_code][-1, 1],
129
227
  :authorization => authorization_from(response)
130
228
  )
131
229
  end
@@ -141,11 +239,11 @@ module ActiveMerchant #:nodoc:
141
239
  def successful?(response)
142
240
  response[:response_code] &&
143
241
  response[:complete] &&
144
- (0..49).include?(response[:response_code].to_i)
242
+ (0..49).cover?(response[:response_code].to_i)
145
243
  end
146
244
 
147
245
  def parse(xml)
148
- response = { :message => "Global Error Receipt", :complete => false }
246
+ response = { :message => 'Global Error Receipt', :complete => false }
149
247
  hashify_xml!(xml, response)
150
248
  response
151
249
  end
@@ -160,47 +258,93 @@ module ActiveMerchant #:nodoc:
160
258
 
161
259
  def post_data(action, parameters = {})
162
260
  xml = REXML::Document.new
163
- root = xml.add_element("request")
164
- root.add_element("store_id").text = options[:login]
165
- root.add_element("api_token").text = options[:password]
166
- transaction = root.add_element(action)
261
+ root = xml.add_element('request')
262
+ root.add_element('store_id').text = options[:login]
263
+ root.add_element('api_token').text = options[:password]
264
+ root.add_element(transaction_element(action, parameters))
265
+
266
+ xml.to_s
267
+ end
268
+
269
+ def transaction_element(action, parameters)
270
+ transaction = REXML::Element.new(action)
167
271
 
168
272
  # Must add the elements in the correct order
169
273
  actions[action].each do |key|
170
- transaction.add_element(key.to_s).text = parameters[key] unless parameters[key].blank?
274
+ case key
275
+ when :avs_info
276
+ transaction.add_element(avs_element(parameters[:address])) if @avs_enabled && parameters[:address]
277
+ when :cvd_info
278
+ transaction.add_element(cvd_element(parameters[:cvd_value])) if @cvv_enabled
279
+ when :ach_info
280
+ transaction.add_element(ach_element(parameters[:ach_info]))
281
+ else
282
+ transaction.add_element(key.to_s).text = parameters[key] unless parameters[key].blank?
283
+ end
171
284
  end
172
285
 
173
- xml.to_s
286
+ transaction
174
287
  end
175
288
 
176
- def message_from(message)
177
- return 'Unspecified error' if message.blank?
178
- message.gsub(/[^\w]/, ' ').split.join(" ").capitalize
289
+ def avs_element(address)
290
+ full_address = "#{address[:address1]} #{address[:address2]}"
291
+ tokens = full_address.split(/\s+/)
292
+
293
+ element = REXML::Element.new('avs_info')
294
+ element.add_element('avs_street_number').text = tokens.select { |x| x =~ /\d/ }.join(' ')
295
+ element.add_element('avs_street_name').text = tokens.reject { |x| x =~ /\d/ }.join(' ')
296
+ element.add_element('avs_zipcode').text = address[:zip]
297
+ element
179
298
  end
180
299
 
181
- # Make a Ruby type out of the response string
182
- def normalize(field)
183
- case field
184
- when "true" then true
185
- when "false" then false
186
- when '', "null" then nil
187
- else field
300
+ def cvd_element(cvd_value)
301
+ element = REXML::Element.new('cvd_info')
302
+ if cvd_value
303
+ element.add_element('cvd_indicator').text = '1'
304
+ element.add_element('cvd_value').text = cvd_value
305
+ else
306
+ element.add_element('cvd_indicator').text = '0'
188
307
  end
308
+ element
309
+ end
310
+
311
+ def ach_element(ach_info)
312
+ element = REXML::Element.new('ach_info')
313
+ actions['ach_info'].each do |key|
314
+ element.add_element(key.to_s).text = ach_info[key] unless ach_info[key].blank?
315
+ end
316
+ element
317
+ end
318
+
319
+ def message_from(message)
320
+ return 'Unspecified error' if message.blank?
321
+ message.gsub(/[^\w]/, ' ').split.join(' ').capitalize
189
322
  end
190
323
 
191
324
  def actions
192
325
  {
193
- "us_purchase" => [:order_id, :cust_id, :amount, :pan, :expdate, :crypt_type],
194
- "us_preauth" => [:order_id, :cust_id, :amount, :pan, :expdate, :crypt_type],
195
- "us_refund" => [:order_id, :amount, :txn_number, :crypt_type],
196
- "us_ind_refund" => [:order_id, :cust_id, :amount, :pan, :expdate, :crypt_type],
197
- "us_completion" => [:order_id, :comp_amount, :txn_number, :crypt_type],
198
- "us_purchasecorrection" => [:order_id, :txn_number, :crypt_type],
199
- "us_cavv_purchase" => [:order_id, :cust_id, :amount, :pan, :expdate, :cavv],
200
- "us_cavv_preauth" => [:order_id, :cust_id, :amount, :pan, :expdate, :cavv],
201
- "us_batchcloseall" => [],
202
- "us_opentotals" => [:ecr_number],
203
- "us_batchclose" => [:ecr_number]
326
+ 'us_purchase' => [:order_id, :cust_id, :amount, :pan, :expdate, :crypt_type, :avs_info, :cvd_info],
327
+ 'us_preauth' => [:order_id, :cust_id, :amount, :pan, :expdate, :crypt_type, :avs_info, :cvd_info],
328
+ 'us_command' => [:order_id],
329
+ 'us_refund' => [:order_id, :amount, :txn_number, :crypt_type],
330
+ 'us_indrefund' => [:order_id, :cust_id, :amount, :pan, :expdate, :crypt_type],
331
+ 'us_completion' => [:order_id, :comp_amount, :txn_number, :crypt_type],
332
+ 'us_purchasecorrection' => [:order_id, :txn_number, :crypt_type],
333
+ 'us_cavvpurcha' => [:order_id, :cust_id, :amount, :pan, :expdate, :cav],
334
+ 'us_cavvpreaut' => [:order_id, :cust_id, :amount, :pan, :expdate, :cavv],
335
+ 'us_transact' => [:order_id, :cust_id, :amount, :pan, :expdate, :crypt_type],
336
+ 'us_Batchcloseall' => [],
337
+ 'us_opentotals' => [:ecr_number],
338
+ 'us_batchclose' => [:ecr_number],
339
+ 'us_res_add_cc' => [:pan, :expdate, :crypt_type],
340
+ 'us_res_delete' => [:data_key],
341
+ 'us_res_update_cc' => [:data_key, :pan, :expdate, :crypt_type],
342
+ 'us_res_purchase_cc' => [:data_key, :order_id, :cust_id, :amount, :crypt_type],
343
+ 'us_res_preauth_cc' => [:data_key, :order_id, :cust_id, :amount, :crypt_type],
344
+ 'us_ach_debit' => [:order_id, :cust_id, :amount, :ach_info],
345
+ 'us_res_add_ach' => [:order_id, :cust_id, :amount, :ach_info],
346
+ 'us_res_update_ach' => [:order_id, :data_key, :cust_id, :amount, :ach_info],
347
+ 'ach_info' => [:sec, :cust_first_name, :cust_last_name, :cust_address1, :cust_address2, :cust_city, :cust_state, :cust_zip, :routing_num, :account_num, :check_num, :account_type]
204
348
  }
205
349
  end
206
350
  end
@@ -9,7 +9,6 @@ module ActiveMerchant #:nodoc:
9
9
  self.display_name = 'MoneyMovers'
10
10
  self.supported_countries = ['US']
11
11
  self.supported_cardtypes = [:visa, :master, :american_express, :discover]
12
- self.ssl_version = :SSLv3
13
12
 
14
13
  def initialize(options = {})
15
14
  requires!(options, :login, :password)
@@ -50,7 +49,7 @@ module ActiveMerchant #:nodoc:
50
49
  end
51
50
 
52
51
  def credit(money, authorization, options = {})
53
- deprecated CREDIT_DEPRECATION_MESSAGE
52
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
54
53
  refund(money, authorization, options)
55
54
  end
56
55
 
@@ -99,12 +98,6 @@ module ActiveMerchant #:nodoc:
99
98
  post[:cvv] = creditcard.verification_value
100
99
  end
101
100
 
102
- def expdate(creditcard)
103
- year = sprintf("%.4i", creditcard.year)
104
- month = sprintf("%.2i", creditcard.month)
105
- "#{month}#{year[-2..-1]}"
106
- end
107
-
108
101
  def parse(body)
109
102
  body.split('&').inject({}) do |memo, x|
110
103
  k, v = x.split('=')
@@ -119,7 +112,6 @@ module ActiveMerchant #:nodoc:
119
112
  data = ssl_post(self.live_url, post_data(action, parameters))
120
113
  response = parse(data)
121
114
  message = message_from(response)
122
- test_mode = test?
123
115
 
124
116
  Response.new(success?(response), message, response,
125
117
  :test => test?,
@@ -134,17 +126,17 @@ module ActiveMerchant #:nodoc:
134
126
  end
135
127
 
136
128
  def test?
137
- (@options[:login].eql?('demo')) && (@options[:password].eql?('password'))
129
+ @options[:login].eql?('demo') && @options[:password].eql?('password')
138
130
  end
139
131
 
140
132
  def message_from(response)
141
133
  case response['response'].to_i
142
134
  when APPROVED
143
- "Transaction Approved"
135
+ 'Transaction Approved'
144
136
  when DECLINED
145
- "Transaction Declined"
137
+ 'Transaction Declined'
146
138
  else
147
- "Error in transaction data or system error"
139
+ 'Error in transaction data or system error'
148
140
  end
149
141
  end
150
142
 
@@ -152,9 +144,8 @@ module ActiveMerchant #:nodoc:
152
144
  parameters[:type] = action
153
145
  parameters[:username] = @options[:login]
154
146
  parameters[:password] = @options[:password]
155
- parameters.map{|k, v| "#{k}=#{CGI.escape(v.to_s)}"}.join('&')
147
+ parameters.map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
156
148
  end
157
149
  end
158
150
  end
159
151
  end
160
-