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,356 @@
1
+ require 'nokogiri'
2
+ require 'securerandom'
3
+
4
+ module ActiveMerchant #:nodoc:
5
+ module Billing #:nodoc:
6
+ class ElementGateway < Gateway
7
+ self.test_url = 'https://certtransaction.elementexpress.com/express.asmx'
8
+ self.live_url = 'https://transaction.elementexpress.com/express.asmx'
9
+
10
+ self.supported_countries = ['US']
11
+ self.default_currency = 'USD'
12
+ self.supported_cardtypes = [:visa, :master, :american_express, :discover, :diners_club, :jcb]
13
+
14
+ self.homepage_url = 'http://www.elementps.com'
15
+ self.display_name = 'Element'
16
+
17
+ SERVICE_TEST_URL = 'https://certservices.elementexpress.com/express.asmx'
18
+ SERVICE_LIVE_URL = 'https://services.elementexpress.com/express.asmx'
19
+
20
+ def initialize(options={})
21
+ requires!(options, :account_id, :account_token, :application_id, :acceptor_id, :application_name, :application_version)
22
+ super
23
+ end
24
+
25
+ def purchase(money, payment, options={})
26
+ action = payment.is_a?(Check) ? 'CheckSale' : 'CreditCardSale'
27
+
28
+ request = build_soap_request do |xml|
29
+ xml.send(action, xmlns: 'https://transaction.elementexpress.com') do
30
+ add_credentials(xml)
31
+ add_payment_method(xml, payment)
32
+ add_transaction(xml, money, options)
33
+ add_terminal(xml, options)
34
+ add_address(xml, options)
35
+ end
36
+ end
37
+
38
+ commit(action, request, money)
39
+ end
40
+
41
+ def authorize(money, payment, options={})
42
+ request = build_soap_request do |xml|
43
+ xml.CreditCardAuthorization(xmlns: 'https://transaction.elementexpress.com') do
44
+ add_credentials(xml)
45
+ add_payment_method(xml, payment)
46
+ add_transaction(xml, money, options)
47
+ add_terminal(xml, options)
48
+ add_address(xml, options)
49
+ end
50
+ end
51
+
52
+ commit('CreditCardAuthorization', request, money)
53
+ end
54
+
55
+ def capture(money, authorization, options={})
56
+ trans_id, _ = split_authorization(authorization)
57
+ options[:trans_id] = trans_id
58
+
59
+ request = build_soap_request do |xml|
60
+ xml.CreditCardAuthorizationCompletion(xmlns: 'https://transaction.elementexpress.com') do
61
+ add_credentials(xml)
62
+ add_transaction(xml, money, options)
63
+ add_terminal(xml, options)
64
+ end
65
+ end
66
+
67
+ commit('CreditCardAuthorizationCompletion', request, money)
68
+ end
69
+
70
+ def refund(money, authorization, options={})
71
+ trans_id, _ = split_authorization(authorization)
72
+ options[:trans_id] = trans_id
73
+
74
+ request = build_soap_request do |xml|
75
+ xml.CreditCardReturn(xmlns: 'https://transaction.elementexpress.com') do
76
+ add_credentials(xml)
77
+ add_transaction(xml, money, options)
78
+ add_terminal(xml, options)
79
+ end
80
+ end
81
+
82
+ commit('CreditCardReturn', request, money)
83
+ end
84
+
85
+ def void(authorization, options={})
86
+ trans_id, trans_amount = split_authorization(authorization)
87
+ options.merge!({trans_id: trans_id, trans_amount: trans_amount, reversal_type: 'Full'})
88
+
89
+ request = build_soap_request do |xml|
90
+ xml.CreditCardReversal(xmlns: 'https://transaction.elementexpress.com') do
91
+ add_credentials(xml)
92
+ add_transaction(xml, trans_amount, options)
93
+ add_terminal(xml, options)
94
+ end
95
+ end
96
+
97
+ commit('CreditCardReversal', request, trans_amount)
98
+ end
99
+
100
+ def store(payment, options = {})
101
+ request = build_soap_request do |xml|
102
+ xml.PaymentAccountCreate(xmlns: 'https://services.elementexpress.com') do
103
+ add_credentials(xml)
104
+ add_payment_method(xml, payment)
105
+ add_payment_account(xml, payment, options[:payment_account_reference_number] || SecureRandom.hex(20))
106
+ add_address(xml, options)
107
+ end
108
+ end
109
+
110
+ commit('PaymentAccountCreate', request, nil)
111
+ end
112
+
113
+ def verify(credit_card, options={})
114
+ MultiResponse.run(:use_first_response) do |r|
115
+ r.process { authorize(100, credit_card, options) }
116
+ r.process(:ignore_result) { void(r.authorization, options) }
117
+ end
118
+ end
119
+
120
+ def supports_scrubbing?
121
+ true
122
+ end
123
+
124
+ def scrub(transcript)
125
+ transcript.
126
+ gsub(%r((<AccountToken>).+?(</AccountToken>))i, '\1[FILTERED]\2').
127
+ gsub(%r((<CardNumber>).+?(</CardNumber>))i, '\1[FILTERED]\2').
128
+ gsub(%r((<CVV>).+?(</CVV>))i, '\1[FILTERED]\2').
129
+ gsub(%r((<AccountNumber>).+?(</AccountNumber>))i, '\1[FILTERED]\2').
130
+ gsub(%r((<RoutingNumber>).+?(</RoutingNumber>))i, '\1[FILTERED]\2')
131
+ end
132
+
133
+ private
134
+
135
+ def add_credentials(xml)
136
+ xml.credentials do
137
+ xml.AccountID @options[:account_id]
138
+ xml.AccountToken @options[:account_token]
139
+ xml.AcceptorID @options[:acceptor_id]
140
+ end
141
+ xml.application do
142
+ xml.ApplicationID @options[:application_id]
143
+ xml.ApplicationName @options[:application_name]
144
+ xml.ApplicationVersion @options[:application_version]
145
+ end
146
+ end
147
+
148
+ def add_payment_method(xml, payment)
149
+ if payment.is_a?(String)
150
+ add_payment_account_id(xml, payment)
151
+ elsif payment.is_a?(Check)
152
+ add_echeck(xml, payment)
153
+ else
154
+ add_credit_card(xml, payment)
155
+ end
156
+ end
157
+
158
+ def add_payment_account(xml, payment, payment_account_reference_number)
159
+ xml.paymentAccount do
160
+ xml.PaymentAccountType payment_account_type(payment)
161
+ xml.PaymentAccountReferenceNumber payment_account_reference_number
162
+ end
163
+ end
164
+
165
+ def add_payment_account_id(xml, payment)
166
+ xml.extendedParameters do
167
+ xml.ExtendedParameters do
168
+ xml.Key 'PaymentAccount'
169
+ xml.Value('xsi:type' => 'PaymentAccount') do
170
+ xml.PaymentAccountID payment
171
+ end
172
+ end
173
+ end
174
+ end
175
+
176
+ def add_transaction(xml, money, options = {})
177
+ xml.transaction do
178
+ xml.ReversalType options[:reversal_type] if options[:reversal_type]
179
+ xml.TransactionID options[:trans_id] if options[:trans_id]
180
+ xml.TransactionAmount amount(money.to_i) if money
181
+ xml.MarketCode 'Default' if money
182
+ xml.ReferenceNumber options[:order_id] || SecureRandom.hex(20)
183
+ end
184
+ end
185
+
186
+ def add_terminal(xml, options)
187
+ xml.terminal do
188
+ xml.TerminalID '01'
189
+ xml.CardPresentCode 'UseDefault'
190
+ xml.CardholderPresentCode 'UseDefault'
191
+ xml.CardInputCode 'UseDefault'
192
+ xml.CVVPresenceCode 'UseDefault'
193
+ xml.TerminalCapabilityCode 'UseDefault'
194
+ xml.TerminalEnvironmentCode 'UseDefault'
195
+ xml.MotoECICode 'NonAuthenticatedSecureECommerceTransaction'
196
+ end
197
+ end
198
+
199
+ def add_credit_card(xml, payment)
200
+ xml.card do
201
+ xml.CardNumber payment.number
202
+ xml.ExpirationMonth format(payment.month, :two_digits)
203
+ xml.ExpirationYear format(payment.year, :two_digits)
204
+ xml.CardholderName payment.first_name + ' ' + payment.last_name
205
+ xml.CVV payment.verification_value
206
+ end
207
+ end
208
+
209
+ def add_echeck(xml, payment)
210
+ xml.demandDepositAccount do
211
+ xml.AccountNumber payment.account_number
212
+ xml.RoutingNumber payment.routing_number
213
+ xml.DDAAccountType payment.account_type.capitalize
214
+ end
215
+ end
216
+
217
+ def add_address(xml, options)
218
+ if address = options[:billing_address] || options[:address]
219
+ xml.address do
220
+ xml.BillingAddress1 address[:address1] if address[:address1]
221
+ xml.BillingAddress2 address[:address2] if address[:address2]
222
+ xml.BillingCity address[:city] if address[:city]
223
+ xml.BillingState address[:state] if address[:state]
224
+ xml.BillingZipcode address[:zip] if address[:zip]
225
+ xml.BillingEmail address[:email] if address[:email]
226
+ xml.BillingPhone address[:phone_number] if address[:phone_number]
227
+ end
228
+ end
229
+ if shipping_address = options[:shipping_address]
230
+ xml.address do
231
+ xml.ShippingAddress1 shipping_address[:address1] if shipping_address[:address1]
232
+ xml.ShippingAddress2 shipping_address[:address2] if shipping_address[:address2]
233
+ xml.ShippingCity shipping_address[:city] if shipping_address[:city]
234
+ xml.ShippingState shipping_address[:state] if shipping_address[:state]
235
+ xml.ShippingZipcode shipping_address[:zip] if shipping_address[:zip]
236
+ xml.ShippingEmail shipping_address[:email] if shipping_address[:email]
237
+ xml.ShippingPhone shipping_address[:phone_number] if shipping_address[:phone_number]
238
+ end
239
+ end
240
+ end
241
+
242
+ def parse(xml)
243
+ response = {}
244
+
245
+ doc = Nokogiri::XML(xml)
246
+ doc.remove_namespaces!
247
+ root = doc.root.xpath('//response/*')
248
+
249
+ if root.empty?
250
+ root = doc.root.xpath('//Response/*')
251
+ end
252
+
253
+ root.each do |node|
254
+ if node.elements.empty?
255
+ response[node.name.downcase] = node.text
256
+ else
257
+ node_name = node.name.downcase
258
+ response[node_name] = Hash.new
259
+
260
+ node.elements.each do |childnode|
261
+ response[node_name][childnode.name.downcase] = childnode.text
262
+ end
263
+ end
264
+ end
265
+
266
+ response
267
+ end
268
+
269
+ def commit(action, xml, amount)
270
+ response = parse(ssl_post(url(action), xml, headers(action)))
271
+
272
+ Response.new(
273
+ success_from(response),
274
+ message_from(response),
275
+ response,
276
+ authorization: authorization_from(action, response, amount),
277
+ avs_result: success_from(response) ? avs_from(response) : nil,
278
+ cvv_result: success_from(response) ? cvv_from(response) : nil,
279
+ test: test?
280
+ )
281
+ end
282
+
283
+ def authorization_from(action, response, amount)
284
+ if action == 'PaymentAccountCreate'
285
+ response['paymentaccount']['paymentaccountid']
286
+ else
287
+ "#{response['transaction']['transactionid']}|#{amount}" if response['transaction']
288
+ end
289
+ end
290
+
291
+ def success_from(response)
292
+ response['expressresponsecode'] == '0'
293
+ end
294
+
295
+ def message_from(response)
296
+ response['expressresponsemessage']
297
+ end
298
+
299
+ def avs_from(response)
300
+ AVSResult.new(code: response['card']['avsresponsecode']) if response['card']
301
+ end
302
+
303
+ def cvv_from(response)
304
+ CVVResult.new(response['card']['cvvresponsecode']) if response['card']
305
+ end
306
+
307
+ def split_authorization(authorization)
308
+ authorization.split('|')
309
+ end
310
+
311
+ def build_soap_request
312
+ builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
313
+ xml['soap'].Envelope('xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
314
+ 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
315
+ 'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/') do
316
+
317
+ xml['soap'].Body do
318
+ yield(xml)
319
+ end
320
+ end
321
+ end
322
+
323
+ builder.to_xml
324
+ end
325
+
326
+ def payment_account_type(payment)
327
+ if payment.is_a?(Check)
328
+ payment_account_type = payment.account_type
329
+ else
330
+ payment_account_type = 'CreditCard'
331
+ end
332
+ payment_account_type
333
+ end
334
+
335
+ def url(action)
336
+ if action == 'PaymentAccountCreate'
337
+ test? ? SERVICE_TEST_URL : SERVICE_LIVE_URL
338
+ else
339
+ test? ? test_url : live_url
340
+ end
341
+ end
342
+
343
+ def interface(action)
344
+ return 'transaction' if action != 'PaymentAccountCreate'
345
+ return 'services' if action == 'PaymentAccountCreate'
346
+ end
347
+
348
+ def headers(action)
349
+ {
350
+ 'Content-Type' => 'text/xml; charset=utf-8',
351
+ 'SOAPAction' => "https://#{interface(action)}.elementexpress.com/#{action}"
352
+ }
353
+ end
354
+ end
355
+ end
356
+ end
@@ -1,8 +1,7 @@
1
1
  module ActiveMerchant #:nodoc:
2
2
  module Billing #:nodoc:
3
3
  class EpayGateway < Gateway
4
- API_HOST = 'ssl.ditonlinebetalingssystem.dk'
5
- self.live_url = 'https://' + API_HOST + '/remote/payment'
4
+ self.live_url = 'https://ssl.ditonlinebetalingssystem.dk/'
6
5
 
7
6
  self.default_currency = 'DKK'
8
7
  self.money_format = :cents
@@ -106,10 +105,21 @@ module ActiveMerchant #:nodoc:
106
105
  end
107
106
 
108
107
  def credit(money, identification, options = {})
109
- deprecated CREDIT_DEPRECATION_MESSAGE
108
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
110
109
  refund(money, identification, options)
111
110
  end
112
111
 
112
+ def supports_scrubbing
113
+ true
114
+ end
115
+
116
+ def scrub(transcript)
117
+ transcript.
118
+ gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]').
119
+ gsub(%r(((?:\?|&)cardno=)\d*(&?)), '\1[FILTERED]\2').
120
+ gsub(%r((&?cvc=)\d*(&?)), '\1[FILTERED]\2')
121
+ end
122
+
113
123
  private
114
124
 
115
125
  def add_amount(post, money, options)
@@ -153,16 +163,16 @@ module ActiveMerchant #:nodoc:
153
163
 
154
164
  if action == :authorize
155
165
  Response.new response['accept'].to_i == 1,
156
- response['errortext'],
157
- response,
158
- :test => test?,
159
- :authorization => response['tid']
166
+ response['errortext'],
167
+ response,
168
+ :test => test?,
169
+ :authorization => response['tid']
160
170
  else
161
171
  Response.new response['result'] == 'true',
162
- messages(response['epay'], response['pbs']),
163
- response,
164
- :test => test?,
165
- :authorization => params[:transaction]
172
+ messages(response['epay'], response['pbs']),
173
+ response,
174
+ :test => test?,
175
+ :authorization => params[:transaction]
166
176
  end
167
177
  end
168
178
 
@@ -175,19 +185,19 @@ module ActiveMerchant #:nodoc:
175
185
  def soap_post(method, params)
176
186
  data = xml_builder(params, method)
177
187
  headers = make_headers(data, method)
178
- REXML::Document.new(ssl_post('https://' + API_HOST + '/remote/payment.asmx', data, headers))
188
+ REXML::Document.new(ssl_post(live_url + 'remote/payment.asmx', data, headers))
179
189
  end
180
190
 
181
191
  def do_authorize(params)
182
192
  headers = {}
183
- headers['Referer'] = (options[:password] || "activemerchant.org")
193
+ headers['Referer'] = (options[:password] || 'activemerchant.org')
184
194
 
185
- response = raw_ssl_request(:post, 'https://' + API_HOST + '/auth/default.aspx', authorize_post_data(params), headers)
195
+ response = raw_ssl_request(:post, live_url + 'auth/default.aspx', authorize_post_data(params), headers)
186
196
 
187
197
  # Authorize gives the response back by redirecting with the values in
188
198
  # the URL query
189
199
  if location = response['Location']
190
- query = CGI::parse(URI.parse(location.gsub(' ', '%20')).query)
200
+ query = CGI::parse(URI.parse(location.gsub(' ', '%20').gsub('<', '%3C').gsub('>', '%3E')).query)
191
201
  else
192
202
  return {
193
203
  'accept' => '0',
@@ -198,7 +208,7 @@ module ActiveMerchant #:nodoc:
198
208
  end
199
209
 
200
210
  result = {}
201
- query.each_pair do |k,v|
211
+ query.each_pair do |k, v|
202
212
  result[k] = v.is_a?(Array) && v.size == 1 ? v[0] : v # make values like ['v'] into 'v'
203
213
  end
204
214
  result
@@ -233,42 +243,42 @@ module ActiveMerchant #:nodoc:
233
243
  def make_headers(data, soap_call)
234
244
  {
235
245
  'Content-Type' => 'text/xml; charset=utf-8',
236
- 'Host' => API_HOST,
246
+ 'Host' => 'ssl.ditonlinebetalingssystem.dk',
237
247
  'Content-Length' => data.size.to_s,
238
- 'SOAPAction' => self.live_url + '/' + soap_call
248
+ 'SOAPAction' => self.live_url + 'remote/payment/' + soap_call
239
249
  }
240
250
  end
241
251
 
242
252
  def xml_builder(params, soap_call)
243
253
  xml = Builder::XmlMarkup.new(:indent => 2)
244
254
  xml.instruct!
245
- xml.tag! 'soap:Envelope', { 'xmlns:xsi' => 'http://schemas.xmlsoap.org/soap/envelope/',
246
- 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
247
- 'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/' } do
248
- xml.tag! 'soap:Body' do
249
- xml.tag! soap_call, { 'xmlns' => self.live_url } do
250
- xml.tag! 'merchantnumber', @options[:login]
251
- xml.tag! 'transactionid', params[:transaction]
252
- xml.tag! 'amount', params[:amount].to_s if soap_call != 'delete'
253
- end
255
+ xml.tag! 'soap:Envelope', { 'xmlns:xsi' => 'http://schemas.xmlsoap.org/soap/envelope/',
256
+ 'xmlns:xsd' => 'http://www.w3.org/2001/XMLSchema',
257
+ 'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/' } do
258
+ xml.tag! 'soap:Body' do
259
+ xml.tag! soap_call, { 'xmlns' => "#{self.live_url}remote/payment" } do
260
+ xml.tag! 'merchantnumber', @options[:login]
261
+ xml.tag! 'transactionid', params[:transaction]
262
+ xml.tag! 'amount', params[:amount].to_s if soap_call != 'delete'
254
263
  end
255
264
  end
265
+ end
256
266
  xml.target!
257
267
  end
258
268
 
259
269
  def authorize_post_data(params = {})
260
270
  params[:language] = '2'
261
271
  params[:cms] = 'activemerchant'
262
- params[:accepturl] = 'https://ssl.ditonlinebetalingssystem.dk/auth/default.aspx?accept=1'
263
- params[:declineurl] = 'https://ssl.ditonlinebetalingssystem.dk/auth/default.aspx?decline=1'
272
+ params[:accepturl] = live_url + 'auth/default.aspx?accept=1'
273
+ params[:declineurl] = live_url + 'auth/default.aspx?decline=1'
264
274
  params[:merchantnumber] = @options[:login]
265
275
 
266
- params.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join("&")
276
+ params.collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
267
277
  end
268
278
 
269
279
  # Limited to 20 digits max
270
280
  def format_order_number(number)
271
- number.to_s.gsub(/[^\w_]/, '').rjust(4, "0")[0...20]
281
+ number.to_s.gsub(/[^\w]/, '').rjust(4, '0')[0...20]
272
282
  end
273
283
  end
274
284
  end
@@ -301,7 +301,7 @@ module ActiveMerchant #:nodoc:
301
301
  post[:username] = options[:username]
302
302
  post[:password] = options[:password]
303
303
  end
304
- post.merge(parameters).collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" unless value.nil? }.compact.join("&")
304
+ post.merge(parameters).collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" unless value.nil? }.compact.join('&')
305
305
  end
306
306
  end
307
307
  end