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
@@ -3,23 +3,22 @@ module ActiveMerchant #:nodoc:
3
3
  class ExactGateway < Gateway
4
4
  self.live_url = self.test_url = 'https://secure2.e-xact.com/vplug-in/transaction/rpc-enc/service.asmx'
5
5
 
6
- API_VERSION = "8.5"
6
+ API_VERSION = '8.5'
7
7
 
8
- TEST_LOGINS = [ {:login => "A00049-01", :password => "test1"},
9
- {:login => "A00427-01", :password => "testus"} ]
10
-
11
- TRANSACTIONS = { :sale => "00",
12
- :authorization => "01",
13
- :capture => "32",
14
- :credit => "34" }
8
+ TEST_LOGINS = [ {:login => 'A00049-01', :password => 'test1'},
9
+ {:login => 'A00427-01', :password => 'testus'} ]
15
10
 
11
+ TRANSACTIONS = { :sale => '00',
12
+ :authorization => '01',
13
+ :capture => '32',
14
+ :credit => '34' }
16
15
 
17
16
  ENVELOPE_NAMESPACES = { 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
18
17
  'xmlns:env' => 'http://schemas.xmlsoap.org/soap/envelope/',
19
18
  'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance'
20
19
  }
21
20
 
22
- SEND_AND_COMMIT_ATTRIBUTES = { 'xmlns:n1' => "http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/Request",
21
+ SEND_AND_COMMIT_ATTRIBUTES = { 'xmlns:n1' => 'http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/Request',
23
22
  'env:encodingStyle' => 'http://schemas.xmlsoap.org/soap/encoding/'
24
23
  }
25
24
 
@@ -27,11 +26,11 @@ module ActiveMerchant #:nodoc:
27
26
  'xsi:type' => 'n2:Transaction'
28
27
  }
29
28
 
30
- POST_HEADERS = { 'soapAction' => "http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/SendAndCommit",
29
+ POST_HEADERS = { 'soapAction' => 'http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/SendAndCommit',
31
30
  'Content-Type' => 'text/xml'
32
31
  }
33
32
 
34
- SUCCESS = "true"
33
+ SUCCESS = 'true'
35
34
 
36
35
  SENSITIVE_FIELDS = [ :verification_str2, :expiry_date, :card_number ]
37
36
 
@@ -59,7 +58,7 @@ module ActiveMerchant #:nodoc:
59
58
  end
60
59
 
61
60
  def credit(money, authorization, options = {})
62
- deprecated CREDIT_DEPRECATION_MESSAGE
61
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
63
62
  refund(money, authorization, options)
64
63
  end
65
64
 
@@ -68,6 +67,7 @@ module ActiveMerchant #:nodoc:
68
67
  end
69
68
 
70
69
  private
70
+
71
71
  def build_request(action, body)
72
72
  xml = Builder::XmlMarkup.new
73
73
 
@@ -160,14 +160,21 @@ module ActiveMerchant #:nodoc:
160
160
  end
161
161
 
162
162
  def commit(action, request)
163
- response = parse(ssl_post(self.live_url, build_request(action, request), POST_HEADERS))
164
-
165
- Response.new(successful?(response), message_from(response), response,
166
- :test => test?,
167
- :authorization => authorization_from(response),
168
- :avs_result => { :code => response[:avs] },
169
- :cvv_result => response[:cvv2]
170
- )
163
+ response = parse(ssl_post(self.live_url, build_request(action, request), POST_HEADERS))
164
+
165
+ Response.new(successful?(response), message_from(response), response,
166
+ :test => test?,
167
+ :authorization => authorization_from(response),
168
+ :avs_result => { :code => response[:avs] },
169
+ :cvv_result => response[:cvv2]
170
+ )
171
+ rescue ResponseError => e
172
+ case e.response.code
173
+ when '401'
174
+ return Response.new(false, "Invalid Login: #{e.response.body}", {}, :test => test?)
175
+ else
176
+ raise
177
+ end
171
178
  end
172
179
 
173
180
  def successful?(response)
@@ -176,9 +183,9 @@ module ActiveMerchant #:nodoc:
176
183
 
177
184
  def authorization_from(response)
178
185
  if response[:authorization_num] && response[:transaction_tag]
179
- "#{response[:authorization_num]};#{response[:transaction_tag]}"
186
+ "#{response[:authorization_num]};#{response[:transaction_tag]}"
180
187
  else
181
- ''
188
+ ''
182
189
  end
183
190
  end
184
191
 
@@ -198,13 +205,13 @@ module ActiveMerchant #:nodoc:
198
205
  response = {}
199
206
  xml = REXML::Document.new(xml)
200
207
 
201
- if root = REXML::XPath.first(xml, "//types:TransactionResult")
208
+ if root = REXML::XPath.first(xml, '//types:TransactionResult')
202
209
  parse_elements(response, root)
203
- elsif root = REXML::XPath.first(xml, "//soap:Fault")
210
+ elsif root = REXML::XPath.first(xml, '//soap:Fault')
204
211
  parse_elements(response, root)
205
212
  end
206
213
 
207
- response.delete_if{ |k,v| SENSITIVE_FIELDS.include?(k) }
214
+ response.delete_if { |k, v| SENSITIVE_FIELDS.include?(k) }
208
215
  end
209
216
 
210
217
  def parse_elements(response, root)
@@ -215,4 +222,3 @@ module ActiveMerchant #:nodoc:
215
222
  end
216
223
  end
217
224
  end
218
-
@@ -0,0 +1,195 @@
1
+ module ActiveMerchant
2
+ module Billing
3
+ class EzicGateway < Gateway
4
+ self.live_url = 'https://secure-dm3.ezic.com/gw/sas/direct3.2'
5
+
6
+ self.supported_countries = %w(AU CA CN FR DE GI IL MT MU MX NL NZ PA PH RU SG KR ES KN GB US)
7
+ self.default_currency = 'USD'
8
+ self.supported_cardtypes = [:visa, :master, :american_express, :discover, :jcb, :diners_club]
9
+
10
+ self.homepage_url = 'http://www.ezic.com/'
11
+ self.display_name = 'Ezic'
12
+
13
+ def initialize(options={})
14
+ requires!(options, :account_id)
15
+ super
16
+ end
17
+
18
+ def purchase(money, payment, options={})
19
+ post = {}
20
+
21
+ add_account_id(post)
22
+ add_invoice(post, money, options)
23
+ add_payment(post, payment)
24
+ add_customer_data(post, options)
25
+
26
+ commit('S', post)
27
+ end
28
+
29
+ def authorize(money, payment, options={})
30
+ post = {}
31
+
32
+ add_account_id(post)
33
+ add_invoice(post, money, options)
34
+ add_payment(post, payment)
35
+ add_customer_data(post, options)
36
+
37
+ commit('A', post)
38
+ end
39
+
40
+ def capture(money, authorization, options={})
41
+ post = {}
42
+
43
+ add_account_id(post)
44
+ add_invoice(post, money, options)
45
+ add_authorization(post, authorization)
46
+ add_pay_type(post)
47
+
48
+ commit('D', post)
49
+ end
50
+
51
+ def refund(money, authorization, options={})
52
+ post = {}
53
+
54
+ add_account_id(post)
55
+ add_invoice(post, money, options)
56
+ add_authorization(post, authorization)
57
+ add_pay_type(post)
58
+
59
+ commit('R', post)
60
+ end
61
+
62
+ def void(authorization, options={})
63
+ post = {}
64
+
65
+ add_account_id(post)
66
+ add_authorization(post, authorization)
67
+ add_pay_type(post)
68
+
69
+ commit('U', post)
70
+ end
71
+
72
+ def verify(credit_card, options={})
73
+ MultiResponse.run(:use_first_response) do |r|
74
+ r.process { authorize(100, credit_card, options) }
75
+ r.process(:ignore_result) { void(r.authorization, options) }
76
+ end
77
+ end
78
+
79
+ def supports_scrubbing?
80
+ true
81
+ end
82
+
83
+ def scrub(transcript)
84
+ transcript.
85
+ gsub(%r((card_number=)\w+), '\1[FILTERED]').
86
+ gsub(%r((card_cvv2=)\w+), '\1[FILTERED]')
87
+ end
88
+
89
+ private
90
+
91
+ def add_account_id(post)
92
+ post[:account_id] = @options[:account_id]
93
+ end
94
+
95
+ def add_addresses(post, options)
96
+ add_billing_address(post, options)
97
+ add_shipping_address(post, options)
98
+ end
99
+
100
+ def add_billing_address(post, options)
101
+ address = options[:billing_address] || {}
102
+
103
+ post[:bill_name1], post[:bill_name2] = split_names(address[:name])
104
+ post[:bill_street] = address[:address1] if address[:address1]
105
+ post[:bill_city] = address[:city] if address[:city]
106
+ post[:bill_state] = address[:state] if address[:state]
107
+ post[:bill_zip] = address[:zip] if address[:zip]
108
+ post[:bill_country] = address[:country] if address[:country]
109
+ post[:cust_phone] = address[:phone] if address[:phone]
110
+ end
111
+
112
+ def add_shipping_address(post, options)
113
+ address = options[:shipping_address] || {}
114
+
115
+ post[:ship_name1], post[:ship_name2] = split_names(address[:name])
116
+ post[:ship_street] = address[:address1] if address[:address1]
117
+ post[:ship_city] = address[:city] if address[:city]
118
+ post[:ship_state] = address[:state] if address[:state]
119
+ post[:ship_zip] = address[:zip] if address[:zip]
120
+ post[:ship_country] = address[:country] if address[:country]
121
+ end
122
+
123
+ def add_customer_data(post, options)
124
+ post[:cust_ip] = options[:ip] if options[:ip]
125
+ post[:cust_email] = options[:email] if options[:email]
126
+ add_addresses(post, options)
127
+ end
128
+
129
+ def add_invoice(post, money, options)
130
+ post[:amount] = amount(money)
131
+ post[:description] = options[:description] if options[:description]
132
+ end
133
+
134
+ def add_payment(post, payment)
135
+ add_pay_type(post)
136
+ post[:card_number] = payment.number
137
+ post[:card_cvv2] = payment.verification_value
138
+ post[:card_expire] = expdate(payment)
139
+ end
140
+
141
+ def add_authorization(post, authorization)
142
+ post[:orig_id] = authorization
143
+ end
144
+
145
+ def add_pay_type(post)
146
+ post[:pay_type] = 'C'
147
+ end
148
+
149
+ def parse(body)
150
+ CGI::parse(body).inject({}) { |hash, (key, value)| hash[key] = value.first; hash }
151
+ end
152
+
153
+ def commit(transaction_type, parameters)
154
+ parameters[:tran_type] = transaction_type
155
+
156
+ begin
157
+ response = parse(ssl_post(live_url, post_data(parameters), headers))
158
+ Response.new(
159
+ success_from(response),
160
+ message_from(response),
161
+ response,
162
+ authorization: authorization_from(response),
163
+ avs_result: AVSResult.new(code: response['avs_code']),
164
+ cvv_result: CVVResult.new(response['cvv2_code']),
165
+ test: test?
166
+ )
167
+ rescue ResponseError => e
168
+ Response.new(false, e.response.message)
169
+ end
170
+ end
171
+
172
+ def success_from(response)
173
+ response['status_code'] == '1' || response['status_code'] == 'T'
174
+ end
175
+
176
+ def message_from(response)
177
+ response['auth_msg']
178
+ end
179
+
180
+ def authorization_from(response)
181
+ response['trans_id']
182
+ end
183
+
184
+ def post_data(parameters = {})
185
+ parameters.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
186
+ end
187
+
188
+ def headers
189
+ {
190
+ 'User-Agent' => "ActiveMerchantBindings/#{ActiveMerchant::VERSION}",
191
+ }
192
+ end
193
+ end
194
+ end
195
+ end
@@ -3,8 +3,8 @@ require 'json'
3
3
  module ActiveMerchant #:nodoc:
4
4
  module Billing #:nodoc:
5
5
  class FatZebraGateway < Gateway
6
- self.live_url = "https://gateway.fatzebra.com.au/v1.0"
7
- self.test_url = "https://gateway.sandbox.fatzebra.com.au/v1.0"
6
+ self.live_url = 'https://gateway.fatzebra.com.au/v1.0'
7
+ self.test_url = 'https://gateway.sandbox.fatzebra.com.au/v1.0'
8
8
 
9
9
  self.supported_countries = ['AU']
10
10
  self.default_currency = 'AUD'
@@ -14,69 +14,82 @@ module ActiveMerchant #:nodoc:
14
14
  self.homepage_url = 'https://www.fatzebra.com.au/'
15
15
  self.display_name = 'Fat Zebra'
16
16
 
17
- # Setup a new instance of the gateway.
18
- #
19
- # The options hash should include :username and :token
20
- # You can find your username and token at https://dashboard.fatzebra.com.au
21
- # Under the Your Account section
22
17
  def initialize(options = {})
23
18
  requires!(options, :username, :token)
24
- @username = options[:username]
25
- @token = options[:token]
26
19
  super
27
20
  end
28
21
 
29
- # To create a purchase on a credit card use:
30
- #
31
- # purchase(money, creditcard)
32
- #
33
- # To charge a tokenized card
34
- #
35
- # purchase(money, "abzy87u", :cvv => "123")
36
22
  def purchase(money, creditcard, options = {})
37
23
  post = {}
38
24
 
39
25
  add_amount(post, money, options)
40
26
  add_creditcard(post, creditcard, options)
41
- post[:reference] = options[:order_id]
42
- post[:customer_ip] = options[:ip]
27
+ add_extra_options(post, options)
28
+ add_order_id(post, options)
29
+ add_ip(post, options)
43
30
 
44
31
  commit(:post, 'purchases', post)
45
32
  end
46
33
 
47
- # Refund a transaction
48
- #
49
- # amount - Integer - the amount to refund
50
- # txn_id - String - the original transaction to be refunded
51
- # reference - String - your transaction reference
52
- def refund(money, txn_id, reference)
34
+ def authorize(money, creditcard, options = {})
53
35
  post = {}
54
36
 
55
- post[:amount] = money
37
+ add_amount(post, money, options)
38
+ add_creditcard(post, creditcard, options)
39
+ add_extra_options(post, options)
40
+ add_order_id(post, options)
41
+ add_ip(post, options)
42
+
43
+ post[:capture] = false
44
+
45
+ commit(:post, 'purchases', post)
46
+ end
47
+
48
+ def capture(money, authorization, options = {})
49
+ post = {}
50
+ add_amount(post, money, options)
51
+ add_extra_options(post, options)
52
+
53
+ commit(:post, "purchases/#{CGI.escape(authorization)}/capture", post)
54
+ end
55
+
56
+ def refund(money, txn_id, options={})
57
+ post = {}
58
+
59
+ add_extra_options(post, options)
60
+ add_amount(post, money, options)
56
61
  post[:transaction_id] = txn_id
57
- post[:reference] = reference
62
+ add_order_id(post, options)
58
63
 
59
- commit(:post, "refunds", post)
64
+ commit(:post, 'refunds', post)
60
65
  end
61
66
 
62
- # Tokenize a credit card
63
- #
64
- # The token is returned in the Response#authorization
65
- def store(creditcard)
67
+ def store(creditcard, options={})
66
68
  post = {}
67
69
  add_creditcard(post, creditcard)
68
70
 
69
- commit(:post, "credit_cards", post)
71
+ commit(:post, 'credit_cards', post)
72
+ end
73
+
74
+ def supports_scrubbing?
75
+ true
76
+ end
77
+
78
+ def scrub(transcript)
79
+ transcript.
80
+ gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]').
81
+ gsub(%r(("card_number\\?":\\?")[^"\\]*)i, '\1[FILTERED]').
82
+ gsub(%r(("cvv\\?":\\?")\d+), '\1[FILTERED]')
70
83
  end
71
84
 
72
85
  private
73
86
 
74
- # Add the money details to the request
75
87
  def add_amount(post, money, options)
88
+ post[:currency] = (options[:currency] || currency(money))
89
+ post[:currency] = post[:currency].upcase if post[:currency]
76
90
  post[:amount] = money
77
91
  end
78
92
 
79
- # Add the credit card details to the request
80
93
  def add_creditcard(post, creditcard, options = {})
81
94
  if creditcard.respond_to?(:number)
82
95
  post[:card_number] = creditcard.number
@@ -87,7 +100,7 @@ module ActiveMerchant #:nodoc:
87
100
  post[:card_token] = creditcard
88
101
  post[:cvv] = options[:cvv]
89
102
  elsif creditcard.is_a?(Hash)
90
- deprecated "Passing the credit card as a Hash is deprecated. Use a String and put the (optional) CVV in the options hash instead."
103
+ ActiveMerchant.deprecated 'Passing the credit card as a Hash is deprecated. Use a String and put the (optional) CVV in the options hash instead.'
91
104
  post[:card_token] = creditcard[:token]
92
105
  post[:cvv] = creditcard[:cvv]
93
106
  else
@@ -95,12 +108,30 @@ module ActiveMerchant #:nodoc:
95
108
  end
96
109
  end
97
110
 
98
- # Post the data to the gateway
111
+ def add_extra_options(post, options)
112
+ extra = {}
113
+ extra[:ecm] = '32' if options[:recurring]
114
+ extra[:cavv] = options[:cavv] if options[:cavv]
115
+ extra[:xid] = options[:xid] if options[:xid]
116
+ extra[:sli] = options[:sli] if options[:sli]
117
+ extra[:name] = options[:merchant] if options[:merchant]
118
+ extra[:location] = options[:merchant_location] if options[:merchant_location]
119
+ post[:extra] = extra if extra.any?
120
+ end
121
+
122
+ def add_order_id(post, options)
123
+ post[:reference] = options[:order_id] || SecureRandom.hex(15)
124
+ end
125
+
126
+ def add_ip(post, options)
127
+ post[:customer_ip] = options[:ip] || '127.0.0.1'
128
+ end
129
+
99
130
  def commit(method, uri, parameters=nil)
100
131
  response = begin
101
132
  parse(ssl_request(method, get_url(uri), parameters.to_json, headers))
102
133
  rescue ResponseError => e
103
- return Response.new(false, "Invalid Login") if(e.response.code == "401")
134
+ return Response.new(false, 'Invalid Login') if(e.response.code == '401')
104
135
  parse(e.response.body)
105
136
  end
106
137
 
@@ -109,63 +140,58 @@ module ActiveMerchant #:nodoc:
109
140
  success,
110
141
  message_from(response),
111
142
  response,
112
- :test => response["test"],
143
+ :test => response['test'],
113
144
  :authorization => authorization_from(response, success)
114
145
  )
115
146
  end
116
147
 
117
148
  def success_from(response)
118
149
  (
119
- response["successful"] &&
120
- response["response"] &&
121
- (response["response"]["successful"] || response["response"]["token"])
150
+ response['successful'] &&
151
+ response['response'] &&
152
+ (response['response']['successful'] || response['response']['token'])
122
153
  )
123
154
  end
124
155
 
125
156
  def authorization_from(response, success)
126
157
  if success
127
- (response["response"]["id"] || response["response"]["token"])
158
+ (response['response']['id'] || response['response']['token'])
128
159
  else
129
160
  nil
130
161
  end
131
162
  end
132
163
 
133
164
  def message_from(response)
134
- if !response["errors"].empty?
135
- response["errors"].join(", ")
136
- elsif response["response"]["message"]
137
- response["response"]["message"]
165
+ if !response['errors'].empty?
166
+ response['errors'].join(', ')
167
+ elsif response['response']['message']
168
+ response['response']['message']
138
169
  else
139
- "Unknown Error"
170
+ 'Unknown Error'
140
171
  end
141
172
  end
142
173
 
143
- # Parse the returned JSON, if parse errors are raised then return a detailed error.
144
174
  def parse(response)
145
- begin
146
- JSON.parse(response)
147
- rescue JSON::ParserError
148
- msg = 'Invalid JSON response received from Fat Zebra. Please contact support@fatzebra.com.au if you continue to receive this message.'
149
- msg += " (The raw response returned by the API was #{response.inspect})"
150
- {
151
- "successful" => false,
152
- "response" => {},
153
- "errors" => [msg]
154
- }
155
- end
175
+ JSON.parse(response)
176
+ rescue JSON::ParserError
177
+ msg = 'Invalid JSON response received from Fat Zebra. Please contact support@fatzebra.com.au if you continue to receive this message.'
178
+ msg += " (The raw response returned by the API was #{response.inspect})"
179
+ {
180
+ 'successful' => false,
181
+ 'response' => {},
182
+ 'errors' => [msg]
183
+ }
156
184
  end
157
185
 
158
- # Build the URL based on the AM mode and the URI
159
186
  def get_url(uri)
160
187
  base = test? ? self.test_url : self.live_url
161
- base + "/" + uri
188
+ base + '/' + uri
162
189
  end
163
190
 
164
- # Builds the auth and U-A headers for the request
165
191
  def headers
166
192
  {
167
- "Authorization" => "Basic " + Base64.strict_encode64(@username.to_s + ":" + @token.to_s).strip,
168
- "User-Agent" => "Fat Zebra v1.0/ActiveMerchant #{ActiveMerchant::VERSION}"
193
+ 'Authorization' => 'Basic ' + Base64.strict_encode64(@options[:username].to_s + ':' + @options[:token].to_s).strip,
194
+ 'User-Agent' => "Fat Zebra v1.0/ActiveMerchant #{ActiveMerchant::VERSION}"
169
195
  }
170
196
  end
171
197
  end
@@ -58,7 +58,7 @@ module ActiveMerchant #:nodoc:
58
58
  end
59
59
 
60
60
  def credit(money, authorization, options = {})
61
- deprecated CREDIT_DEPRECATION_MESSAGE
61
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
62
62
  refund(money, authorization, options)
63
63
  end
64
64
 
@@ -107,12 +107,6 @@ module ActiveMerchant #:nodoc:
107
107
  post[:cvv] = creditcard.verification_value
108
108
  end
109
109
 
110
- def expdate(creditcard)
111
- year = sprintf("%.4i", creditcard.year)
112
- month = sprintf("%.2i", creditcard.month)
113
- "#{month}#{year[-2..-1]}"
114
- end
115
-
116
110
  def parse(body)
117
111
  body.split('&').inject({}) do |memo, x|
118
112
  k, v = x.split('=')
@@ -126,7 +120,6 @@ module ActiveMerchant #:nodoc:
126
120
  data = ssl_post(self.live_url, post_data(action, parameters))
127
121
  response = parse(data)
128
122
  message = message_from(response)
129
- test_mode = test?
130
123
 
131
124
  Response.new(success?(response), message, response,
132
125
  :test => test?,
@@ -141,17 +134,17 @@ module ActiveMerchant #:nodoc:
141
134
  end
142
135
 
143
136
  def test?
144
- (@options[:login].eql?('demo')) && (@options[:password].eql?('password'))
137
+ @options[:login].eql?('demo') && @options[:password].eql?('password')
145
138
  end
146
139
 
147
140
  def message_from(response)
148
141
  case response['response'].to_i
149
142
  when APPROVED
150
- "Transaction Approved"
143
+ 'Transaction Approved'
151
144
  when DECLINED
152
- "Transaction Declined"
145
+ 'Transaction Declined'
153
146
  else
154
- "Error in transaction data or system error"
147
+ 'Error in transaction data or system error'
155
148
  end
156
149
  end
157
150
 
@@ -159,9 +152,8 @@ module ActiveMerchant #:nodoc:
159
152
  parameters[:type] = action
160
153
  parameters[:username] = @options[:login]
161
154
  parameters[:password] = @options[:password]
162
- parameters.map{|k, v| "#{k}=#{CGI.escape(v.to_s)}"}.join('&')
155
+ parameters.map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }.join('&')
163
156
  end
164
157
  end
165
158
  end
166
159
  end
167
-
@@ -1,9 +1,10 @@
1
- require File.dirname(__FILE__) + '/cc5'
1
+ require 'active_merchant/billing/gateways/cc5'
2
2
 
3
3
  module ActiveMerchant #:nodoc:
4
4
  module Billing #:nodoc:
5
5
  class FinansbankGateway < CC5Gateway
6
- self.live_url = self.test_url = 'https://www.fbwebpos.com/servlet/cc5ApiServer'
6
+ self.live_url = 'https://www.fbwebpos.com/servlet/cc5ApiServer'
7
+ self.test_url = 'https://entegrasyon.asseco-see.com.tr/fim/api'
7
8
 
8
9
  # The countries the gateway supports merchants from as 2 digit ISO country codes
9
10
  self.supported_countries = ['US', 'TR']
@@ -19,4 +20,3 @@ module ActiveMerchant #:nodoc:
19
20
  end
20
21
  end
21
22
  end
22
-