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
@@ -0,0 +1,218 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ class TrexleGateway < Gateway
4
+ self.test_url = 'https://core.trexle.com/api/v1'
5
+ self.live_url = 'https://core.trexle.com/api/v1'
6
+
7
+ self.default_currency = 'USD'
8
+ self.money_format = :cents
9
+ self.supported_countries = %w(AD AE AT AU BD BE BG BN CA CH CY CZ DE DK EE EG ES FI FR GB
10
+ GI GR HK HU ID IE IL IM IN IS IT JO KW LB LI LK LT LU LV MC
11
+ MT MU MV MX MY NL NO NZ OM PH PL PT QA RO SA SE SG SI SK SM
12
+ TR TT UM US VA VN ZA)
13
+ self.supported_cardtypes = [:visa, :master, :american_express]
14
+ self.homepage_url = 'https://trexle.com'
15
+ self.display_name = 'Trexle'
16
+
17
+ def initialize(options = {})
18
+ requires!(options, :api_key)
19
+ super
20
+ end
21
+
22
+ # Create a charge using a credit card, card token or customer token
23
+ #
24
+ # To charge a credit card: purchase([money], [creditcard hash], ...)
25
+ # To charge a customer: purchase([money], [token], ...)
26
+ def purchase(money, creditcard, options = {})
27
+ post = {}
28
+
29
+ add_amount(post, money, options)
30
+ add_customer_data(post, options)
31
+ add_invoice(post, options)
32
+ add_creditcard(post, creditcard)
33
+ add_address(post, creditcard, options)
34
+ commit(:post, 'charges', post, options)
35
+ end
36
+
37
+ # Create a customer and associated credit card. The token that is returned
38
+ # can be used instead of a credit card parameter in the purchase method
39
+ def store(creditcard, options = {})
40
+ post = {}
41
+
42
+ add_creditcard(post, creditcard)
43
+ add_customer_data(post, options)
44
+ add_address(post, creditcard, options)
45
+ commit(:post, 'customers', post, options)
46
+ end
47
+
48
+ # Refund a transaction
49
+ def refund(money, token, options = {})
50
+ commit(:post, "charges/#{CGI.escape(token)}/refunds", { amount: amount(money) }, options)
51
+ end
52
+
53
+ # Authorize an amount on a credit card. Once authorized, you can later
54
+ # capture this charge using the charge token that is returned.
55
+ def authorize(money, creditcard, options = {})
56
+ post = {}
57
+
58
+ add_amount(post, money, options)
59
+ add_customer_data(post, options)
60
+ add_invoice(post, options)
61
+ add_creditcard(post, creditcard)
62
+ add_address(post, creditcard, options)
63
+ post[:capture] = false
64
+ commit(:post, 'charges', post, options)
65
+ end
66
+
67
+ # Captures a previously authorized charge. Capturing only part of the original
68
+ # authorization is currently not supported.
69
+ def capture(money, token, options = {})
70
+ commit(:put, "charges/#{CGI.escape(token)}/capture", { amount: amount(money) }, options)
71
+ end
72
+
73
+ # Updates the credit card for the customer.
74
+ def update(token, creditcard, options = {})
75
+ post = {}
76
+
77
+ add_creditcard(post, creditcard)
78
+ add_customer_data(post, options)
79
+ add_address(post, creditcard, options)
80
+ commit(:put, "customers/#{CGI.escape(token)}", post, options)
81
+ end
82
+
83
+ def supports_scrubbing
84
+ true
85
+ end
86
+
87
+ def scrub(transcript)
88
+ transcript.
89
+ gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]').
90
+ gsub(/(number\\?":\\?")(\d*)/, '\1[FILTERED]').
91
+ gsub(/(cvc\\?":\\?")(\d*)/, '\1[FILTERED]')
92
+ end
93
+
94
+ private
95
+
96
+ def add_amount(post, money, options)
97
+ post[:amount] = amount(money)
98
+ post[:currency] = (options[:currency] || currency(money))
99
+ post[:currency] = post[:currency].upcase if post[:currency]
100
+ end
101
+
102
+ def add_customer_data(post, options)
103
+ post[:email] = options[:email] if options[:email]
104
+ post[:ip_address] = options[:ip] if options[:ip]
105
+ end
106
+
107
+ def add_address(post, creditcard, options)
108
+ return if creditcard.kind_of?(String)
109
+ address = (options[:billing_address] || options[:address])
110
+ return unless address
111
+
112
+ post[:card] ||= {}
113
+ post[:card].merge!(
114
+ address_line1: address[:address1],
115
+ address_line2: address[:address_line2],
116
+ address_city: address[:city],
117
+ address_postcode: address[:zip],
118
+ address_state: address[:state],
119
+ address_country: address[:country]
120
+ )
121
+ end
122
+
123
+ def add_invoice(post, options)
124
+ post[:description] = options[:description] || 'Active Merchant Purchase'
125
+ end
126
+
127
+ def add_creditcard(post, creditcard)
128
+ if creditcard.respond_to?(:number)
129
+ post[:card] ||= {}
130
+
131
+ post[:card].merge!(
132
+ number: creditcard.number,
133
+ expiry_month: creditcard.month,
134
+ expiry_year: creditcard.year,
135
+ cvc: creditcard.verification_value,
136
+ name: creditcard.name
137
+ )
138
+ elsif creditcard.kind_of?(String)
139
+ if creditcard =~ /^token_/
140
+ post[:card_token] = creditcard
141
+ else
142
+ post[:customer_token] = creditcard
143
+ end
144
+ end
145
+ end
146
+
147
+ def headers(params = {})
148
+ result = {
149
+ 'Content-Type' => 'application/json',
150
+ 'Authorization' => "Basic #{Base64.strict_encode64(options[:api_key] + ':').strip}"
151
+ }
152
+
153
+ result['X-Partner-Key'] = params[:partner_key] if params[:partner_key]
154
+ result['X-Safe-Card'] = params[:safe_card] if params[:safe_card]
155
+ result
156
+ end
157
+
158
+ def commit(method, action, params, options)
159
+ url = "#{test? ? test_url : live_url}/#{action}"
160
+ raw_response = ssl_request(method, url, post_data(params), headers(options))
161
+ parsed_response = parse(raw_response)
162
+ success_response(parsed_response)
163
+ rescue ResponseError => e
164
+ error_response(parse(e.response.body))
165
+ rescue JSON::ParserError
166
+ unparsable_response(raw_response)
167
+ end
168
+
169
+ def success_response(body)
170
+ return invalid_response unless body['response']
171
+
172
+ response = body['response']
173
+ Response.new(
174
+ true,
175
+ response['status_message'],
176
+ body,
177
+ authorization: token(response),
178
+ test: test?
179
+ )
180
+ end
181
+
182
+ def error_response(body)
183
+ return invalid_response unless body['error']
184
+ Response.new(
185
+ false,
186
+ body['error'],
187
+ body,
188
+ authorization: nil,
189
+ test: test?
190
+ )
191
+ end
192
+
193
+ def unparsable_response(raw_response)
194
+ message = 'Invalid JSON response received from Trexle. Please contact support@trexle.com if you continue to receive this message.'
195
+ message += " (The raw response returned by the API was #{raw_response.inspect})"
196
+ return Response.new(false, message)
197
+ end
198
+
199
+ def invalid_response
200
+ message = 'Invalid response.'
201
+ return Response.new(false, message)
202
+ end
203
+
204
+ def token(response)
205
+ response['token']
206
+ end
207
+
208
+ def parse(body)
209
+ return {} if body.blank?
210
+ JSON.parse(body)
211
+ end
212
+
213
+ def post_data(parameters = {})
214
+ parameters.to_json
215
+ end
216
+ end
217
+ end
218
+ end
@@ -19,10 +19,10 @@ module ActiveMerchant #:nodoc:
19
19
  # Next, create a credit card object using a TC approved test card.
20
20
  #
21
21
  # creditcard = ActiveMerchant::Billing::CreditCard.new(
22
- # :number => '4111111111111111',
23
- # :month => 8,
24
- # :year => 2006,
25
- # :first_name => 'Longbob',
22
+ # :number => '4111111111111111',
23
+ # :month => 8,
24
+ # :year => 2006,
25
+ # :first_name => 'Longbob',
26
26
  # :last_name => 'Longsen'
27
27
  # )
28
28
  #
@@ -67,38 +67,38 @@ module ActiveMerchant #:nodoc:
67
67
  class TrustCommerceGateway < Gateway
68
68
  self.live_url = self.test_url = 'https://vault.trustcommerce.com/trans/'
69
69
 
70
- SUCCESS_TYPES = ["approved", "accepted"]
70
+ SUCCESS_TYPES = ['approved', 'accepted']
71
71
 
72
72
  DECLINE_CODES = {
73
- "decline" => "The credit card was declined",
74
- "avs" => "AVS failed; the address entered does not match the billing address on file at the bank",
75
- "cvv" => "CVV failed; the number provided is not the correct verification number for the card",
76
- "call" => "The card must be authorized manually over the phone",
77
- "expiredcard" => "Issuer was not certified for card verification",
78
- "carderror" => "Card number is invalid",
79
- "authexpired" => "Attempt to postauth an expired (more than 14 days old) preauth",
80
- "fraud" => "CrediGuard fraud score was below requested threshold",
81
- "blacklist" => "CrediGuard blacklist value was triggered",
82
- "velocity" => "CrediGuard velocity control value was triggered",
83
- "dailylimit" => "Daily limit in transaction count or amount as been reached",
84
- "weeklylimit" => "Weekly limit in transaction count or amount as been reached",
85
- "monthlylimit" => "Monthly limit in transaction count or amount as been reached"
73
+ 'decline' => 'The credit card was declined',
74
+ 'avs' => 'AVS failed; the address entered does not match the billing address on file at the bank',
75
+ 'cvv' => 'CVV failed; the number provided is not the correct verification number for the card',
76
+ 'call' => 'The card must be authorized manually over the phone',
77
+ 'expiredcard' => 'Issuer was not certified for card verification',
78
+ 'carderror' => 'Card number is invalid',
79
+ 'authexpired' => 'Attempt to postauth an expired (more than 14 days old) preauth',
80
+ 'fraud' => 'CrediGuard fraud score was below requested threshold',
81
+ 'blacklist' => 'CrediGuard blacklist value was triggered',
82
+ 'velocity' => 'CrediGuard velocity control value was triggered',
83
+ 'dailylimit' => 'Daily limit in transaction count or amount as been reached',
84
+ 'weeklylimit' => 'Weekly limit in transaction count or amount as been reached',
85
+ 'monthlylimit' => 'Monthly limit in transaction count or amount as been reached'
86
86
  }
87
87
 
88
88
  BADDATA_CODES = {
89
- "missingfields" => "One or more parameters required for this transaction type were not sent",
90
- "extrafields" => "Parameters not allowed for this transaction type were sent",
91
- "badformat" => "A field was improperly formatted, such as non-digit characters in a number field",
92
- "badlength" => "A field was longer or shorter than the server allows",
93
- "merchantcantaccept" => "The merchant can't accept data passed in this field",
94
- "mismatch" => "Data in one of the offending fields did not cross-check with the other offending field"
89
+ 'missingfields' => 'One or more parameters required for this transaction type were not sent',
90
+ 'extrafields' => 'Parameters not allowed for this transaction type were sent',
91
+ 'badformat' => 'A field was improperly formatted, such as non-digit characters in a number field',
92
+ 'badlength' => 'A field was longer or shorter than the server allows',
93
+ 'merchantcantaccept' => "The merchant can't accept data passed in this field",
94
+ 'mismatch' => 'Data in one of the offending fields did not cross-check with the other offending field'
95
95
  }
96
96
 
97
97
  ERROR_CODES = {
98
- "cantconnect" => "Couldn't connect to the TrustCommerce gateway",
99
- "dnsfailure" => "The TCLink software was unable to resolve DNS hostnames",
100
- "linkfailure" => "The connection was established, but was severed before the transaction could complete",
101
- "failtoprocess" => "The bank servers are offline and unable to authorize transactions"
98
+ 'cantconnect' => "Couldn't connect to the TrustCommerce gateway",
99
+ 'dnsfailure' => 'The TCLink software was unable to resolve DNS hostnames',
100
+ 'linkfailure' => 'The connection was established, but was severed before the transaction could complete',
101
+ 'failtoprocess' => 'The bank servers are offline and unable to authorize transactions'
102
102
  }
103
103
 
104
104
  TEST_LOGIN = 'TestMerchant'
@@ -153,6 +153,7 @@ module ActiveMerchant #:nodoc:
153
153
  }
154
154
 
155
155
  add_order_id(parameters, options)
156
+ add_aggregator(parameters, options)
156
157
  add_customer_data(parameters, options)
157
158
  add_payment_source(parameters, creditcard_or_billing_id)
158
159
  add_addresses(parameters, options)
@@ -167,6 +168,7 @@ module ActiveMerchant #:nodoc:
167
168
  }
168
169
 
169
170
  add_order_id(parameters, options)
171
+ add_aggregator(parameters, options)
170
172
  add_customer_data(parameters, options)
171
173
  add_payment_source(parameters, creditcard_or_billing_id)
172
174
  add_addresses(parameters, options)
@@ -181,6 +183,7 @@ module ActiveMerchant #:nodoc:
181
183
  :amount => amount(money),
182
184
  :transid => authorization,
183
185
  }
186
+ add_aggregator(parameters, options)
184
187
 
185
188
  commit('postauth', parameters)
186
189
  end
@@ -192,12 +195,13 @@ module ActiveMerchant #:nodoc:
192
195
  :amount => amount(money),
193
196
  :transid => identification
194
197
  }
198
+ add_aggregator(parameters, options)
195
199
 
196
200
  commit('credit', parameters)
197
201
  end
198
202
 
199
203
  def credit(money, identification, options = {})
200
- deprecated CREDIT_DEPRECATION_MESSAGE
204
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
201
205
  refund(money, identification, options)
202
206
  end
203
207
 
@@ -219,11 +223,12 @@ module ActiveMerchant #:nodoc:
219
223
  parameters = {
220
224
  :transid => authorization,
221
225
  }
226
+ add_aggregator(parameters, options)
222
227
 
223
228
  commit('reversal', parameters)
224
229
  end
225
230
 
226
- # recurring() a TrustCommerce account that is activated for Citatdel, TrustCommerce's
231
+ # recurring() a TrustCommerce account that is activated for Citadel, TrustCommerce's
227
232
  # hosted customer billing info database.
228
233
  #
229
234
  # Recurring billing uses the same TC action as a plain-vanilla 'store', but we have a separate method for clarity. It can be called
@@ -235,7 +240,9 @@ module ActiveMerchant #:nodoc:
235
240
  #
236
241
  # You can optionally specify how long you want payments to continue using 'payments'
237
242
  def recurring(money, creditcard, options = {})
238
- requires!(options, [:periodicity, :bimonthly, :monthly, :biweekly, :weekly, :yearly, :daily] )
243
+ ActiveMerchant.deprecated RECURRING_DEPRECATION_MESSAGE
244
+
245
+ requires!(options, [:periodicity, :bimonthly, :monthly, :biweekly, :weekly, :yearly, :daily])
239
246
 
240
247
  cycle = case options[:periodicity]
241
248
  when :monthly
@@ -265,7 +272,7 @@ module ActiveMerchant #:nodoc:
265
272
  commit('store', parameters)
266
273
  end
267
274
 
268
- # store() requires a TrustCommerce account that is activated for Citatdel. You can call it with a credit card and a billing ID
275
+ # store() requires a TrustCommerce account that is activated for Citadel. You can call it with a credit card and a billing ID
269
276
  # you would like to use to reference the stored credit card info for future captures. Use 'verify' to specify whether you want
270
277
  # to simply store the card in the DB, or you want TC to verify the data first.
271
278
 
@@ -290,24 +297,46 @@ module ActiveMerchant #:nodoc:
290
297
  commit('unstore', parameters)
291
298
  end
292
299
 
300
+ def supports_scrubbing
301
+ true
302
+ end
303
+
304
+ def scrub(transcript)
305
+ transcript.
306
+ gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]').
307
+ gsub(%r((&?cc=)\d*(&?)), '\1[FILTERED]\2').
308
+ gsub(%r((&?password=)[^&]+(&?)), '\1[FILTERED]\2').
309
+ gsub(%r((&?cvv=)\d*(&?)), '\1[FILTERED]\2')
310
+ end
311
+
293
312
  private
313
+
314
+ def add_aggregator(params, options)
315
+ if @options[:aggregator_id] || application_id != Gateway.application_id
316
+ params[:aggregators] = 1
317
+ params[:aggregator1] = @options[:aggregator_id] || application_id
318
+ end
319
+ end
320
+
294
321
  def add_payment_source(params, source)
295
322
  if source.is_a?(String)
296
323
  add_billing_id(params, source)
324
+ elsif card_brand(source) == 'check'
325
+ add_check(params, source)
297
326
  else
298
327
  add_creditcard(params, source)
299
328
  end
300
329
  end
301
330
 
302
- def expdate(creditcard)
303
- year = sprintf("%.4i", creditcard.year)
304
- month = sprintf("%.2i", creditcard.month)
305
-
306
- "#{month}#{year[-2..-1]}"
331
+ def add_check(params, check)
332
+ params[:media] = 'ach'
333
+ params[:routing] = check.routing_number
334
+ params[:account] = check.account_number
335
+ params[:savings] = 'y' if check.account_type == 'savings'
307
336
  end
308
337
 
309
338
  def add_creditcard(params, creditcard)
310
- params[:media] = "cc"
339
+ params[:media] = 'cc'
311
340
  params[:name] = creditcard.name
312
341
  params[:cc] = creditcard.number
313
342
  params[:exp] = expdate(creditcard)
@@ -346,7 +375,7 @@ module ActiveMerchant #:nodoc:
346
375
  params[:shipto_address2] = shipping_address[:address2] unless shipping_address[:address2].blank?
347
376
  params[:shipto_city] = shipping_address[:city] unless shipping_address[:city].blank?
348
377
  params[:shipto_state] = shipping_address[:state] unless shipping_address[:state].blank?
349
- params[:shipto_zip] = shipping_address[:zip] unless shipping_address[:zip].blank?
378
+ params[:shipto_zip] = shipping_address[:zip] unless shipping_address[:zip].blank?
350
379
  params[:shipto_country] = shipping_address[:country] unless shipping_address[:country].blank?
351
380
  end
352
381
  end
@@ -355,7 +384,7 @@ module ActiveMerchant #:nodoc:
355
384
  # TCLink wants us to send a hash with string keys, and activemerchant pushes everything around with
356
385
  # symbol keys. Before sending our input to TCLink, we convert all our keys to strings and dump the symbol keys.
357
386
  # We also remove any pairs with nil values, as these confuse TCLink.
358
- parameters.keys.reverse.each do |key|
387
+ parameters.keys.reverse_each do |key|
359
388
  if parameters[key]
360
389
  parameters[key.to_s] = parameters[key]
361
390
  end
@@ -364,7 +393,7 @@ module ActiveMerchant #:nodoc:
364
393
  end
365
394
 
366
395
  def post_data(parameters)
367
- parameters.collect { |key, value| "#{key}=#{ CGI.escape(value.to_s)}" }.join("&")
396
+ parameters.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
368
397
  end
369
398
 
370
399
  def commit(action, parameters)
@@ -376,19 +405,19 @@ module ActiveMerchant #:nodoc:
376
405
  clean_and_stringify_params(parameters)
377
406
 
378
407
  data = if tclink?
379
- TCLink.send(parameters)
380
- else
381
- parse( ssl_post(self.live_url, post_data(parameters)) )
408
+ TCLink.send(parameters)
409
+ else
410
+ parse(ssl_post(self.live_url, post_data(parameters)))
382
411
  end
383
412
 
384
413
  # to be considered successful, transaction status must be either "approved" or "accepted"
385
- success = SUCCESS_TYPES.include?(data["status"])
414
+ success = SUCCESS_TYPES.include?(data['status'])
386
415
  message = message_from(data)
387
416
  Response.new(success, message, data,
388
417
  :test => test?,
389
- :authorization => data["transid"],
390
- :cvv_result => data["cvv"],
391
- :avs_result => { :code => data["avs"] }
418
+ :authorization => data['transid'],
419
+ :cvv_result => data['cvv'],
420
+ :avs_result => { :code => data['avs'] }
392
421
  )
393
422
  end
394
423
 
@@ -396,7 +425,7 @@ module ActiveMerchant #:nodoc:
396
425
  results = {}
397
426
 
398
427
  body.split(/\n/).each do |pair|
399
- key,val = pair.split(/=/)
428
+ key, val = pair.split(/=/)
400
429
  results[key] = val
401
430
  end
402
431
 
@@ -404,15 +433,15 @@ module ActiveMerchant #:nodoc:
404
433
  end
405
434
 
406
435
  def message_from(data)
407
- status = case data["status"]
408
- when "decline"
409
- return DECLINE_CODES[data["declinetype"]]
410
- when "baddata"
411
- return BADDATA_CODES[data["error"]]
412
- when "error"
413
- return ERROR_CODES[data["errortype"]]
436
+ case data['status']
437
+ when 'decline'
438
+ return DECLINE_CODES[data['declinetype']]
439
+ when 'baddata'
440
+ return BADDATA_CODES[data['error']]
441
+ when 'error'
442
+ return ERROR_CODES[data['errortype']]
414
443
  else
415
- return "The transaction was successful"
444
+ return 'The transaction was successful'
416
445
  end
417
446
  end
418
447
 
@@ -9,15 +9,15 @@ module ActiveMerchant #:nodoc:
9
9
  self.abstract_class = true
10
10
 
11
11
  ##
12
- # Creates an instance of UsaEpayTransactionGateway by default, but if
12
+ # Creates an instance of UsaEpayTransactionGateway by default, but if
13
13
  # :software id or :live_url are passed in the options hash it will
14
14
  # create an instance of UsaEpayAdvancedGateway.
15
15
  #
16
16
  def self.new(options={})
17
- unless options.has_key?(:software_id) || options.has_key?(:live_url)
18
- UsaEpayTransactionGateway.new(options)
19
- else
17
+ if options.has_key?(:software_id) || options.has_key?(:live_url)
20
18
  UsaEpayAdvancedGateway.new(options)
19
+ else
20
+ UsaEpayTransactionGateway.new(options)
21
21
  end
22
22
  end
23
23
  end