activemerchant 1.43.3 → 1.44.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 (326) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/CHANGELOG +133 -3
  5. data/CONTRIBUTORS +25 -0
  6. data/README.md +14 -39
  7. data/lib/active_merchant.rb +43 -2
  8. data/lib/active_merchant/billing.rb +3 -1
  9. data/lib/active_merchant/billing/base.rb +10 -2
  10. data/lib/active_merchant/billing/check.rb +29 -22
  11. data/lib/active_merchant/billing/compatibility.rb +120 -0
  12. data/lib/active_merchant/billing/credit_card.rb +129 -60
  13. data/lib/active_merchant/billing/credit_card_formatting.rb +4 -1
  14. data/lib/active_merchant/billing/credit_card_methods.rb +60 -43
  15. data/lib/active_merchant/billing/cvv_result.rb +15 -15
  16. data/lib/active_merchant/billing/gateway.rb +46 -11
  17. data/lib/active_merchant/billing/gateways/adyen.rb +205 -0
  18. data/lib/active_merchant/billing/gateways/app55.rb +1 -9
  19. data/lib/active_merchant/billing/gateways/authorize_net.rb +7 -391
  20. data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +417 -0
  21. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +20 -4
  22. data/lib/active_merchant/billing/gateways/balanced.rb +127 -367
  23. data/lib/active_merchant/billing/gateways/barclays_epdq.rb +1 -1
  24. data/lib/active_merchant/billing/gateways/beanstream.rb +25 -6
  25. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +3 -3
  26. data/lib/active_merchant/billing/gateways/blue_pay.rb +11 -3
  27. data/lib/active_merchant/billing/gateways/bogus.rb +1 -13
  28. data/lib/active_merchant/billing/gateways/borgun.rb +211 -0
  29. data/lib/active_merchant/billing/gateways/braintree_blue.rb +31 -13
  30. data/lib/active_merchant/billing/gateways/bridge_pay.rb +7 -0
  31. data/lib/active_merchant/billing/gateways/cashnet.rb +184 -0
  32. data/lib/active_merchant/billing/gateways/cc5.rb +45 -0
  33. data/lib/active_merchant/billing/gateways/certo_direct.rb +3 -2
  34. data/lib/active_merchant/billing/gateways/commercegate.rb +143 -0
  35. data/lib/active_merchant/billing/gateways/conekta.rb +56 -81
  36. data/lib/active_merchant/billing/gateways/cyber_source.rb +1 -0
  37. data/lib/active_merchant/billing/gateways/data_cash.rb +3 -1
  38. data/lib/active_merchant/billing/gateways/efsnet.rb +3 -14
  39. data/lib/active_merchant/billing/gateways/elavon.rb +45 -9
  40. data/lib/active_merchant/billing/gateways/epay.rb +2 -2
  41. data/lib/active_merchant/billing/gateways/eway.rb +1 -12
  42. data/lib/active_merchant/billing/gateways/eway_managed.rb +1 -1
  43. data/lib/active_merchant/billing/gateways/eway_rapid.rb +233 -202
  44. data/lib/active_merchant/billing/gateways/exact.rb +1 -1
  45. data/lib/active_merchant/billing/gateways/fat_zebra.rb +1 -1
  46. data/lib/active_merchant/billing/gateways/federated_canada.rb +1 -8
  47. data/lib/active_merchant/billing/gateways/finansbank.rb +2 -1
  48. data/lib/active_merchant/billing/gateways/first_pay.rb +108 -124
  49. data/lib/active_merchant/billing/gateways/firstdata_e4.rb +43 -13
  50. data/lib/active_merchant/billing/gateways/garanti.rb +2 -2
  51. data/lib/active_merchant/billing/gateways/hps.rb +281 -0
  52. data/lib/active_merchant/billing/gateways/iats_payments.rb +2 -2
  53. data/lib/active_merchant/billing/gateways/ideal/ideal_base.rb +1 -4
  54. data/lib/active_merchant/billing/gateways/inspire.rb +0 -8
  55. data/lib/active_merchant/billing/gateways/iridium.rb +25 -3
  56. data/lib/active_merchant/billing/gateways/jetpay.rb +1 -1
  57. data/lib/active_merchant/billing/gateways/linkpoint.rb +4 -13
  58. data/lib/active_merchant/billing/gateways/litle.rb +10 -4
  59. data/lib/active_merchant/billing/gateways/maxipago.rb +7 -0
  60. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +0 -6
  61. data/lib/active_merchant/billing/gateways/merchant_ware.rb +4 -11
  62. data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +3 -10
  63. data/lib/active_merchant/billing/gateways/mercury.rb +0 -7
  64. data/lib/active_merchant/billing/gateways/metrics_global.rb +1 -20
  65. data/lib/active_merchant/billing/gateways/migs.rb +1 -1
  66. data/lib/active_merchant/billing/gateways/moneris.rb +29 -21
  67. data/lib/active_merchant/billing/gateways/moneris_us.rb +1 -11
  68. data/lib/active_merchant/billing/gateways/money_movers.rb +1 -8
  69. data/lib/active_merchant/billing/gateways/nab_transact.rb +16 -15
  70. data/lib/active_merchant/billing/gateways/net_registry.rb +1 -1
  71. data/lib/active_merchant/billing/gateways/netbilling.rb +0 -7
  72. data/lib/active_merchant/billing/gateways/network_merchants.rb +21 -18
  73. data/lib/active_merchant/billing/gateways/ogone.rb +3 -3
  74. data/lib/active_merchant/billing/gateways/openpay.rb +1 -8
  75. data/lib/active_merchant/billing/gateways/optimal_payment.rb +34 -23
  76. data/lib/active_merchant/billing/gateways/orbital.rb +121 -4
  77. data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +22 -21
  78. data/lib/active_merchant/billing/gateways/pac_net_raven.rb +2 -9
  79. data/lib/active_merchant/billing/gateways/pago_facil.rb +122 -0
  80. data/lib/active_merchant/billing/gateways/pay_junction.rb +3 -13
  81. data/lib/active_merchant/billing/gateways/pay_secure.rb +0 -7
  82. data/lib/active_merchant/billing/gateways/paybox_direct.rb +1 -9
  83. data/lib/active_merchant/billing/gateways/payex.rb +1 -1
  84. data/lib/active_merchant/billing/gateways/payflow.rb +7 -1
  85. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +15 -15
  86. data/lib/active_merchant/billing/gateways/payflow_express.rb +19 -19
  87. data/lib/active_merchant/billing/gateways/payment_express.rb +1 -1
  88. data/lib/active_merchant/billing/gateways/paymill.rb +7 -2
  89. data/lib/active_merchant/billing/gateways/paypal.rb +25 -14
  90. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +1 -1
  91. data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +16 -2
  92. data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +3 -2
  93. data/lib/active_merchant/billing/gateways/paypal_express.rb +25 -0
  94. data/lib/active_merchant/billing/gateways/payscout.rb +1 -8
  95. data/lib/active_merchant/billing/gateways/pin.rb +39 -7
  96. data/lib/active_merchant/billing/gateways/plugnpay.rb +1 -12
  97. data/lib/active_merchant/billing/gateways/psigate.rb +1 -12
  98. data/lib/active_merchant/billing/gateways/qbms.rb +1 -1
  99. data/lib/active_merchant/billing/gateways/quantum.rb +2 -2
  100. data/lib/active_merchant/billing/gateways/quickpay.rb +17 -15
  101. data/lib/active_merchant/billing/gateways/realex.rb +3 -12
  102. data/lib/active_merchant/billing/gateways/sage.rb +1 -1
  103. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +2 -8
  104. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +1 -1
  105. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +1 -1
  106. data/lib/active_merchant/billing/gateways/sage_pay.rb +93 -28
  107. data/lib/active_merchant/billing/gateways/secure_net.rb +1 -8
  108. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +3 -3
  109. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +0 -7
  110. data/lib/active_merchant/billing/gateways/skip_jack.rb +1 -2
  111. data/lib/active_merchant/billing/gateways/smart_ps.rb +8 -2
  112. data/lib/active_merchant/billing/gateways/spreedly_core.rb +2 -1
  113. data/lib/active_merchant/billing/gateways/stripe.rb +14 -15
  114. data/lib/active_merchant/billing/gateways/swipe_checkout.rb +0 -1
  115. data/lib/active_merchant/billing/gateways/trust_commerce.rb +4 -9
  116. data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +46 -43
  117. data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +7 -0
  118. data/lib/active_merchant/billing/gateways/verifi.rb +1 -8
  119. data/lib/active_merchant/billing/gateways/viaklix.rb +0 -6
  120. data/lib/active_merchant/billing/gateways/vindicia.rb +68 -44
  121. data/lib/active_merchant/billing/gateways/webpay.rb +1 -9
  122. data/lib/active_merchant/billing/gateways/wirecard.rb +117 -11
  123. data/lib/active_merchant/billing/gateways/worldpay.rb +50 -22
  124. data/lib/active_merchant/billing/gateways/worldpay_us.rb +181 -0
  125. data/lib/active_merchant/billing/model.rb +30 -0
  126. data/lib/active_merchant/billing/rails.rb +3 -0
  127. data/lib/active_merchant/billing/response.rb +20 -15
  128. data/lib/active_merchant/country.rb +327 -0
  129. data/lib/active_merchant/empty.rb +20 -0
  130. data/lib/active_merchant/errors.rb +29 -0
  131. data/lib/active_merchant/offsite_payments_shim.rb +19 -0
  132. data/lib/active_merchant/version.rb +1 -1
  133. metadata +60 -243
  134. metadata.gz.sig +0 -0
  135. data/gem-public_cert.pem +0 -21
  136. data/lib/active_merchant/billing/expiry_date.rb +0 -34
  137. data/lib/active_merchant/billing/gateways/orbital/avs_result.rb +0 -93
  138. data/lib/active_merchant/billing/gateways/orbital/cvv_result.rb +0 -34
  139. data/lib/active_merchant/billing/integrations.rb +0 -17
  140. data/lib/active_merchant/billing/integrations/a1agregator.rb +0 -26
  141. data/lib/active_merchant/billing/integrations/a1agregator/helper.rb +0 -31
  142. data/lib/active_merchant/billing/integrations/a1agregator/notification.rb +0 -186
  143. data/lib/active_merchant/billing/integrations/a1agregator/status.rb +0 -38
  144. data/lib/active_merchant/billing/integrations/action_view_helper.rb +0 -78
  145. data/lib/active_merchant/billing/integrations/authorize_net_sim.rb +0 -38
  146. data/lib/active_merchant/billing/integrations/authorize_net_sim/helper.rb +0 -229
  147. data/lib/active_merchant/billing/integrations/authorize_net_sim/notification.rb +0 -340
  148. data/lib/active_merchant/billing/integrations/bit_pay.rb +0 -30
  149. data/lib/active_merchant/billing/integrations/bit_pay/helper.rb +0 -66
  150. data/lib/active_merchant/billing/integrations/bit_pay/notification.rb +0 -74
  151. data/lib/active_merchant/billing/integrations/bit_pay/return.rb +0 -10
  152. data/lib/active_merchant/billing/integrations/bogus.rb +0 -23
  153. data/lib/active_merchant/billing/integrations/bogus/helper.rb +0 -17
  154. data/lib/active_merchant/billing/integrations/bogus/notification.rb +0 -11
  155. data/lib/active_merchant/billing/integrations/bogus/return.rb +0 -10
  156. data/lib/active_merchant/billing/integrations/chronopay.rb +0 -23
  157. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +0 -120
  158. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +0 -158
  159. data/lib/active_merchant/billing/integrations/chronopay/return.rb +0 -10
  160. data/lib/active_merchant/billing/integrations/citrus.rb +0 -28
  161. data/lib/active_merchant/billing/integrations/citrus/helper.rb +0 -57
  162. data/lib/active_merchant/billing/integrations/citrus/notification.rb +0 -133
  163. data/lib/active_merchant/billing/integrations/citrus/return.rb +0 -40
  164. data/lib/active_merchant/billing/integrations/direc_pay.rb +0 -41
  165. data/lib/active_merchant/billing/integrations/direc_pay/helper.rb +0 -200
  166. data/lib/active_merchant/billing/integrations/direc_pay/notification.rb +0 -76
  167. data/lib/active_merchant/billing/integrations/direc_pay/return.rb +0 -32
  168. data/lib/active_merchant/billing/integrations/direc_pay/status.rb +0 -37
  169. data/lib/active_merchant/billing/integrations/directebanking.rb +0 -47
  170. data/lib/active_merchant/billing/integrations/directebanking/helper.rb +0 -90
  171. data/lib/active_merchant/billing/integrations/directebanking/notification.rb +0 -120
  172. data/lib/active_merchant/billing/integrations/directebanking/return.rb +0 -11
  173. data/lib/active_merchant/billing/integrations/doku.rb +0 -24
  174. data/lib/active_merchant/billing/integrations/doku/helper.rb +0 -102
  175. data/lib/active_merchant/billing/integrations/doku/notification.rb +0 -69
  176. data/lib/active_merchant/billing/integrations/doku/return.rb +0 -10
  177. data/lib/active_merchant/billing/integrations/dotpay.rb +0 -22
  178. data/lib/active_merchant/billing/integrations/dotpay/helper.rb +0 -77
  179. data/lib/active_merchant/billing/integrations/dotpay/notification.rb +0 -86
  180. data/lib/active_merchant/billing/integrations/dotpay/return.rb +0 -11
  181. data/lib/active_merchant/billing/integrations/dwolla.rb +0 -23
  182. data/lib/active_merchant/billing/integrations/dwolla/common.rb +0 -23
  183. data/lib/active_merchant/billing/integrations/dwolla/helper.rb +0 -43
  184. data/lib/active_merchant/billing/integrations/dwolla/notification.rb +0 -64
  185. data/lib/active_merchant/billing/integrations/dwolla/return.rb +0 -49
  186. data/lib/active_merchant/billing/integrations/e_payment_plans.rb +0 -48
  187. data/lib/active_merchant/billing/integrations/e_payment_plans/helper.rb +0 -34
  188. data/lib/active_merchant/billing/integrations/e_payment_plans/notification.rb +0 -84
  189. data/lib/active_merchant/billing/integrations/easy_pay.rb +0 -30
  190. data/lib/active_merchant/billing/integrations/easy_pay/common.rb +0 -40
  191. data/lib/active_merchant/billing/integrations/easy_pay/helper.rb +0 -36
  192. data/lib/active_merchant/billing/integrations/easy_pay/notification.rb +0 -59
  193. data/lib/active_merchant/billing/integrations/epay.rb +0 -21
  194. data/lib/active_merchant/billing/integrations/epay/helper.rb +0 -55
  195. data/lib/active_merchant/billing/integrations/epay/notification.rb +0 -110
  196. data/lib/active_merchant/billing/integrations/first_data.rb +0 -38
  197. data/lib/active_merchant/billing/integrations/first_data/helper.rb +0 -61
  198. data/lib/active_merchant/billing/integrations/first_data/notification.rb +0 -56
  199. data/lib/active_merchant/billing/integrations/gestpay.rb +0 -25
  200. data/lib/active_merchant/billing/integrations/gestpay/common.rb +0 -42
  201. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +0 -70
  202. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +0 -85
  203. data/lib/active_merchant/billing/integrations/gestpay/return.rb +0 -10
  204. data/lib/active_merchant/billing/integrations/helper.rb +0 -123
  205. data/lib/active_merchant/billing/integrations/hi_trust.rb +0 -27
  206. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +0 -58
  207. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +0 -59
  208. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +0 -68
  209. data/lib/active_merchant/billing/integrations/ipay88.rb +0 -23
  210. data/lib/active_merchant/billing/integrations/ipay88/helper.rb +0 -118
  211. data/lib/active_merchant/billing/integrations/ipay88/notification.rb +0 -103
  212. data/lib/active_merchant/billing/integrations/ipay88/return.rb +0 -29
  213. data/lib/active_merchant/billing/integrations/klarna.rb +0 -71
  214. data/lib/active_merchant/billing/integrations/klarna/helper.rb +0 -123
  215. data/lib/active_merchant/billing/integrations/klarna/notification.rb +0 -103
  216. data/lib/active_merchant/billing/integrations/liqpay.rb +0 -30
  217. data/lib/active_merchant/billing/integrations/liqpay/helper.rb +0 -43
  218. data/lib/active_merchant/billing/integrations/liqpay/notification.rb +0 -89
  219. data/lib/active_merchant/billing/integrations/liqpay/return.rb +0 -83
  220. data/lib/active_merchant/billing/integrations/maksuturva.rb +0 -86
  221. data/lib/active_merchant/billing/integrations/maksuturva/helper.rb +0 -119
  222. data/lib/active_merchant/billing/integrations/maksuturva/notification.rb +0 -48
  223. data/lib/active_merchant/billing/integrations/mollie_ideal.rb +0 -98
  224. data/lib/active_merchant/billing/integrations/mollie_ideal/helper.rb +0 -67
  225. data/lib/active_merchant/billing/integrations/mollie_ideal/notification.rb +0 -69
  226. data/lib/active_merchant/billing/integrations/mollie_ideal/return.rb +0 -10
  227. data/lib/active_merchant/billing/integrations/moneybookers.rb +0 -26
  228. data/lib/active_merchant/billing/integrations/moneybookers/helper.rb +0 -75
  229. data/lib/active_merchant/billing/integrations/moneybookers/notification.rb +0 -123
  230. data/lib/active_merchant/billing/integrations/nochex.rb +0 -88
  231. data/lib/active_merchant/billing/integrations/nochex/helper.rb +0 -68
  232. data/lib/active_merchant/billing/integrations/nochex/notification.rb +0 -94
  233. data/lib/active_merchant/billing/integrations/nochex/return.rb +0 -10
  234. data/lib/active_merchant/billing/integrations/notification.rb +0 -71
  235. data/lib/active_merchant/billing/integrations/pag_seguro.rb +0 -53
  236. data/lib/active_merchant/billing/integrations/pag_seguro/helper.rb +0 -121
  237. data/lib/active_merchant/billing/integrations/pag_seguro/notification.rb +0 -104
  238. data/lib/active_merchant/billing/integrations/paxum.rb +0 -44
  239. data/lib/active_merchant/billing/integrations/paxum/common.rb +0 -24
  240. data/lib/active_merchant/billing/integrations/paxum/helper.rb +0 -42
  241. data/lib/active_merchant/billing/integrations/paxum/notification.rb +0 -33
  242. data/lib/active_merchant/billing/integrations/pay_fast.rb +0 -70
  243. data/lib/active_merchant/billing/integrations/pay_fast/common.rb +0 -42
  244. data/lib/active_merchant/billing/integrations/pay_fast/helper.rb +0 -50
  245. data/lib/active_merchant/billing/integrations/pay_fast/notification.rb +0 -134
  246. data/lib/active_merchant/billing/integrations/pay_fast/return.rb +0 -10
  247. data/lib/active_merchant/billing/integrations/paydollar.rb +0 -59
  248. data/lib/active_merchant/billing/integrations/paydollar/helper.rb +0 -41
  249. data/lib/active_merchant/billing/integrations/paydollar/notification.rb +0 -64
  250. data/lib/active_merchant/billing/integrations/paydollar/return.rb +0 -15
  251. data/lib/active_merchant/billing/integrations/payflow_link.rb +0 -21
  252. data/lib/active_merchant/billing/integrations/payflow_link/helper.rb +0 -116
  253. data/lib/active_merchant/billing/integrations/payflow_link/notification.rb +0 -78
  254. data/lib/active_merchant/billing/integrations/paypal.rb +0 -39
  255. data/lib/active_merchant/billing/integrations/paypal/helper.rb +0 -119
  256. data/lib/active_merchant/billing/integrations/paypal/notification.rb +0 -227
  257. data/lib/active_merchant/billing/integrations/paypal/return.rb +0 -10
  258. data/lib/active_merchant/billing/integrations/paypal_payments_advanced.rb +0 -20
  259. data/lib/active_merchant/billing/integrations/paypal_payments_advanced/helper.rb +0 -15
  260. data/lib/active_merchant/billing/integrations/paysbuy.rb +0 -36
  261. data/lib/active_merchant/billing/integrations/paysbuy/helper.rb +0 -15
  262. data/lib/active_merchant/billing/integrations/paysbuy/notification.rb +0 -39
  263. data/lib/active_merchant/billing/integrations/payu_in.rb +0 -36
  264. data/lib/active_merchant/billing/integrations/payu_in/helper.rb +0 -76
  265. data/lib/active_merchant/billing/integrations/payu_in/notification.rb +0 -154
  266. data/lib/active_merchant/billing/integrations/payu_in/return.rb +0 -36
  267. data/lib/active_merchant/billing/integrations/payu_in_paisa.rb +0 -30
  268. data/lib/active_merchant/billing/integrations/payu_in_paisa/helper.rb +0 -19
  269. data/lib/active_merchant/billing/integrations/payu_in_paisa/notification.rb +0 -13
  270. data/lib/active_merchant/billing/integrations/payu_in_paisa/return.rb +0 -16
  271. data/lib/active_merchant/billing/integrations/platron.rb +0 -28
  272. data/lib/active_merchant/billing/integrations/platron/helper.rb +0 -32
  273. data/lib/active_merchant/billing/integrations/platron/notification.rb +0 -113
  274. data/lib/active_merchant/billing/integrations/pxpay.rb +0 -31
  275. data/lib/active_merchant/billing/integrations/pxpay/helper.rb +0 -113
  276. data/lib/active_merchant/billing/integrations/pxpay/notification.rb +0 -157
  277. data/lib/active_merchant/billing/integrations/pxpay/return.rb +0 -25
  278. data/lib/active_merchant/billing/integrations/quickpay.rb +0 -21
  279. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +0 -96
  280. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +0 -137
  281. data/lib/active_merchant/billing/integrations/rbkmoney.rb +0 -17
  282. data/lib/active_merchant/billing/integrations/rbkmoney/helper.rb +0 -23
  283. data/lib/active_merchant/billing/integrations/rbkmoney/notification.rb +0 -91
  284. data/lib/active_merchant/billing/integrations/return.rb +0 -42
  285. data/lib/active_merchant/billing/integrations/robokassa.rb +0 -49
  286. data/lib/active_merchant/billing/integrations/robokassa/common.rb +0 -19
  287. data/lib/active_merchant/billing/integrations/robokassa/helper.rb +0 -50
  288. data/lib/active_merchant/billing/integrations/robokassa/notification.rb +0 -55
  289. data/lib/active_merchant/billing/integrations/robokassa/return.rb +0 -17
  290. data/lib/active_merchant/billing/integrations/sage_pay_form.rb +0 -37
  291. data/lib/active_merchant/billing/integrations/sage_pay_form/encryption.rb +0 -33
  292. data/lib/active_merchant/billing/integrations/sage_pay_form/helper.rb +0 -136
  293. data/lib/active_merchant/billing/integrations/sage_pay_form/notification.rb +0 -210
  294. data/lib/active_merchant/billing/integrations/sage_pay_form/return.rb +0 -31
  295. data/lib/active_merchant/billing/integrations/two_checkout.rb +0 -44
  296. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +0 -107
  297. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +0 -171
  298. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +0 -58
  299. data/lib/active_merchant/billing/integrations/universal.rb +0 -23
  300. data/lib/active_merchant/billing/integrations/universal/helper.rb +0 -76
  301. data/lib/active_merchant/billing/integrations/universal/notification.rb +0 -52
  302. data/lib/active_merchant/billing/integrations/universal/return.rb +0 -18
  303. data/lib/active_merchant/billing/integrations/valitor.rb +0 -33
  304. data/lib/active_merchant/billing/integrations/valitor/helper.rb +0 -86
  305. data/lib/active_merchant/billing/integrations/valitor/notification.rb +0 -13
  306. data/lib/active_merchant/billing/integrations/valitor/response_fields.rb +0 -97
  307. data/lib/active_merchant/billing/integrations/valitor/return.rb +0 -13
  308. data/lib/active_merchant/billing/integrations/verkkomaksut.rb +0 -20
  309. data/lib/active_merchant/billing/integrations/verkkomaksut/helper.rb +0 -88
  310. data/lib/active_merchant/billing/integrations/verkkomaksut/notification.rb +0 -59
  311. data/lib/active_merchant/billing/integrations/web_pay.rb +0 -45
  312. data/lib/active_merchant/billing/integrations/web_pay/common.rb +0 -50
  313. data/lib/active_merchant/billing/integrations/web_pay/helper.rb +0 -68
  314. data/lib/active_merchant/billing/integrations/web_pay/notification.rb +0 -51
  315. data/lib/active_merchant/billing/integrations/webmoney.rb +0 -43
  316. data/lib/active_merchant/billing/integrations/webmoney/common.rb +0 -17
  317. data/lib/active_merchant/billing/integrations/webmoney/helper.rb +0 -40
  318. data/lib/active_merchant/billing/integrations/webmoney/notification.rb +0 -47
  319. data/lib/active_merchant/billing/integrations/wirecard_checkout_page.rb +0 -39
  320. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/common.rb +0 -104
  321. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/helper.rb +0 -145
  322. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/notification.rb +0 -101
  323. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/return.rb +0 -35
  324. data/lib/active_merchant/billing/integrations/world_pay.rb +0 -34
  325. data/lib/active_merchant/billing/integrations/world_pay/helper.rb +0 -101
  326. data/lib/active_merchant/billing/integrations/world_pay/notification.rb +0 -160
@@ -91,7 +91,7 @@ module ActiveMerchant #:nodoc:
91
91
  def build_sale_request(money, credit_card, options)
92
92
  build_xml_request(money, credit_card, options) do |xml|
93
93
  add_customer_data(xml, options)
94
- add_order_data(xml, options) do |xml|
94
+ add_order_data(xml, options) do
95
95
  add_addresses(xml, options)
96
96
  end
97
97
  add_credit_card(xml, credit_card)
@@ -104,7 +104,7 @@ module ActiveMerchant #:nodoc:
104
104
  def build_authorize_request(money, credit_card, options)
105
105
  build_xml_request(money, credit_card, options) do |xml|
106
106
  add_customer_data(xml, options)
107
- add_order_data(xml, options) do |xml|
107
+ add_order_data(xml, options) do
108
108
  add_addresses(xml, options)
109
109
  end
110
110
  add_credit_card(xml, credit_card)
@@ -0,0 +1,281 @@
1
+ require "nokogiri"
2
+
3
+ module ActiveMerchant #:nodoc:
4
+ module Billing #:nodoc:
5
+ class HpsGateway < Gateway
6
+ self.live_url = 'https://posgateway.secureexchange.net/Hps.Exchange.PosGateway/PosGatewayService.asmx?wsdl'
7
+ self.test_url = 'https://posgateway.cert.secureexchange.net/Hps.Exchange.PosGateway/PosGatewayService.asmx?wsdl'
8
+
9
+ self.supported_countries = ['US']
10
+ self.default_currency = 'USD'
11
+ self.supported_cardtypes = [:visa, :master, :american_express, :discover, :jbc, :diners_club]
12
+
13
+ self.homepage_url = 'http://developer.heartlandpaymentsystems.com/SecureSubmit/'
14
+ self.display_name = 'Heartland Payment Systems'
15
+
16
+ self.money_format = :dollars
17
+
18
+ def initialize(options={})
19
+ requires!(options, :secret_api_key)
20
+ super
21
+ end
22
+
23
+ def authorize(money, card_or_token, options={})
24
+ commit('CreditAuth') do |xml|
25
+ add_amount(xml, money)
26
+ add_allow_dup(xml)
27
+ add_customer_data(xml, card_or_token, options)
28
+ add_details(xml, options)
29
+ add_payment(xml, card_or_token, options)
30
+ end
31
+ end
32
+
33
+ def capture(money, transaction_id, options={})
34
+ commit('CreditAddToBatch') do |xml|
35
+ add_amount(xml, money)
36
+ add_reference(xml, transaction_id)
37
+ end
38
+ end
39
+
40
+ def purchase(money, card_or_token, options={})
41
+ commit('CreditSale') do |xml|
42
+ add_amount(xml, money)
43
+ add_allow_dup(xml)
44
+ add_customer_data(xml, card_or_token,options)
45
+ add_details(xml, options)
46
+ add_payment(xml, card_or_token, options)
47
+ end
48
+ end
49
+
50
+ def refund(money, transaction_id, options={})
51
+ commit('CreditReturn') do |xml|
52
+ add_amount(xml, money)
53
+ add_allow_dup(xml)
54
+ add_reference(xml, transaction_id)
55
+ add_customer_data(xml, transaction_id,options)
56
+ add_details(xml, options)
57
+ end
58
+ end
59
+
60
+ def void(transaction_id, options={})
61
+ commit('CreditVoid') do |xml|
62
+ add_reference(xml, transaction_id)
63
+ end
64
+ end
65
+
66
+ private
67
+
68
+ def add_reference(xml, transaction_id)
69
+ xml.hps :GatewayTxnId, transaction_id
70
+ end
71
+
72
+ def add_amount(xml, money)
73
+ xml.hps :Amt, amount(money) if money
74
+ end
75
+
76
+ def add_customer_data(xml, credit_card, options)
77
+ return unless credit_card.respond_to?(:number)
78
+
79
+ first_name = credit_card.first_name
80
+ last_name = credit_card.last_name
81
+
82
+ if(first_name || last_name)
83
+ xml.hps :CardHolderData do
84
+ xml.hps :CardHolderFirstName, first_name if first_name
85
+ xml.hps :CardHolderLastName, last_name if last_name
86
+ xml.hps :CardHolderEmail, options[:email] if options[:email]
87
+ xml.hps :CardHolderPhone, options[:phone] if options[:phone]
88
+
89
+ if(billing_address = (options[:billing_address] || options[:address]))
90
+ xml.hps :CardHolderAddr, billing_address[:address1] if billing_address[:address1]
91
+ xml.hps :CardHolderCity, billing_address[:city] if billing_address[:city]
92
+ xml.hps :CardHolderState, billing_address[:state] if billing_address[:state]
93
+ xml.hps :CardHolderZip, billing_address[:zip] if billing_address[:zip]
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ def add_payment(xml, card_or_token, options)
100
+ xml.hps :CardData do
101
+ if card_or_token.respond_to?(:number)
102
+ if card_or_token.track_data
103
+ xml.tag!("hps:TrackData", 'method'=>'swipe') do
104
+ xml.text! card_or_token.track_data
105
+ end
106
+ if options[:encryption_type]
107
+ xml.hps :EncryptionData do
108
+ xml.hps :Version, options[:encryption_type]
109
+ if options[:encryption_type] == '02'
110
+ xml.hps :EncryptedTrackNumber, options[:encrypted_track_number]
111
+ xml.hps :KTB, options[:ktb]
112
+ end
113
+ end
114
+ end
115
+ else
116
+ xml.hps :ManualEntry do
117
+ xml.hps :CardNbr, card_or_token.number
118
+ xml.hps :ExpMonth, card_or_token.month
119
+ xml.hps :ExpYear, card_or_token.year
120
+ xml.hps :CVV2, card_or_token.verification_value if card_or_token.verification_value
121
+ xml.hps :CardPresent, 'N'
122
+ xml.hps :ReaderPresent, 'N'
123
+ end
124
+ end
125
+ else
126
+ xml.hps :TokenData do
127
+ xml.hps :TokenValue, card_or_token
128
+ end
129
+ end
130
+ xml.hps :TokenRequest, (options[:store] ? 'Y' : 'N')
131
+ end
132
+ end
133
+
134
+ def add_details(xml, options)
135
+ xml.hps :AdditionalTxnFields do
136
+ xml.hps :Description, options[:description] if options[:description]
137
+ xml.hps :InvoiceNbr, options[:order_id] if options[:order_id]
138
+ xml.hps :CustomerID, options[:customer_id] if options[:customer_id]
139
+ end
140
+ end
141
+
142
+ def add_allow_dup(xml)
143
+ xml.hps :AllowDup, 'Y'
144
+ end
145
+
146
+ def build_request(action)
147
+ xml = Builder::XmlMarkup.new(encoding: 'UTF-8')
148
+ xml.instruct!(:xml, encoding: 'UTF-8')
149
+ xml.SOAP :Envelope, {
150
+ 'xmlns:SOAP' => 'http://schemas.xmlsoap.org/soap/envelope/',
151
+ 'xmlns:hps' => 'http://Hps.Exchange.PosGateway' } do
152
+ xml.SOAP :Body do
153
+ xml.hps :PosRequest do
154
+ xml.hps 'Ver1.0'.to_sym do
155
+ xml.hps :Header do
156
+ xml.hps :SecretAPIKey, @options[:secret_api_key]
157
+ xml.hps :DeveloperID, @options[:developer_id] if @options[:developer_id]
158
+ xml.hps :VersionNbr, @options[:version_number] if @options[:version_number]
159
+ xml.hps :SiteTrace, @options[:site_trace] if @options[:site_trace]
160
+ end
161
+ xml.hps :Transaction do
162
+ xml.hps action.to_sym do
163
+ if %w(CreditVoid CreditAddToBatch).include?(action)
164
+ yield(xml)
165
+ else
166
+ xml.hps :Block1 do
167
+ yield(xml)
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end
176
+ xml.target!
177
+ end
178
+
179
+ def parse(raw)
180
+ response = {}
181
+
182
+ doc = Nokogiri::XML(raw)
183
+ doc.remove_namespaces!
184
+ if(header = doc.xpath("//Header").first)
185
+ header.elements.each do |node|
186
+ if (node.elements.size == 0)
187
+ response[node.name] = node.text
188
+ else
189
+ node.elements.each do |childnode|
190
+ response[childnode.name] = childnode.text
191
+ end
192
+ end
193
+ end
194
+ end
195
+ if(transaction = doc.xpath("//Transaction/*[1]").first)
196
+ transaction.elements.each do |node|
197
+ response[node.name] = node.text
198
+ end
199
+ end
200
+ if(fault = doc.xpath("//Fault/Reason/Text").first)
201
+ response["Fault"] = fault.text
202
+ end
203
+
204
+ response
205
+ end
206
+
207
+ def commit(action, &request)
208
+ data = build_request(action, &request)
209
+
210
+ response = begin
211
+ parse(ssl_post((test? ? test_url : live_url), data, 'Content-type' => 'text/xml'))
212
+ rescue ResponseError => e
213
+ parse(e.response.body)
214
+ end
215
+
216
+ ActiveMerchant::Billing::Response.new(
217
+ successful?(response),
218
+ message_from(response),
219
+ response,
220
+ test: test?,
221
+ authorization: authorization_from(response),
222
+ avs_result: {
223
+ code: response['AVSRsltCode'],
224
+ message: response['AVSRsltText']
225
+ },
226
+ cvv_result: response['CVVRsltCode']
227
+ )
228
+ end
229
+
230
+ def successful?(response)
231
+ (
232
+ (response["GatewayRspCode"] == "0") &&
233
+ ((response["RspCode"] || "00") == "00")
234
+ )
235
+ end
236
+
237
+ def message_from(response)
238
+ if(response["Fault"])
239
+ response["Fault"]
240
+ elsif(response["GatewayRspCode"] == "0")
241
+ if(response["RspCode"] != "00")
242
+ issuer_message(response["RspCode"])
243
+ else
244
+ response['GatewayRspMsg']
245
+ end
246
+ else
247
+ (GATEWAY_MESSAGES[response["GatewayRspCode"]] || response["GatewayRspMsg"])
248
+ end
249
+ end
250
+
251
+ def authorization_from(response)
252
+ response['GatewayTxnId']
253
+ end
254
+
255
+ ISSUER_MESSAGES = {
256
+ "13" => "Must be greater than or equal 0.",
257
+ "14" => "The card number is incorrect.",
258
+ "54" => "The card has expired.",
259
+ "55" => "The 4-digit pin is invalid.",
260
+ "75" => "Maximum number of pin retries exceeded.",
261
+ "80" => "Card expiration date is invalid.",
262
+ "80" => "Card expiration date is invalid.",
263
+ "86" => "Can't verify card pin number."
264
+ }
265
+ def issuer_message(code)
266
+ return "The card was declined." if %w(02 03 04 05 41 43 44 51 56 61 62 63 65 78).include?(code)
267
+ return "An error occurred while processing the card." if %w(06 07 12 15 19 12 52 53 57 58 76 77 91 96 EC).include?(code)
268
+ return "The card's security code is incorrect." if %w(EB N7).include?(code)
269
+ ISSUER_MESSAGES[code]
270
+ end
271
+
272
+ GATEWAY_MESSAGES = {
273
+ "-2" => "Authentication error. Please double check your service configuration.",
274
+ "12" => "Invalid CPC data.",
275
+ "13" => "Invalid card data.",
276
+ "14" => "The card number is not a valid credit card number.",
277
+ "30" => "Gateway timed out."
278
+ }
279
+ end
280
+ end
281
+ end
@@ -6,7 +6,7 @@ module ActiveMerchant #:nodoc:
6
6
  self.live_na_url = 'https://www.iatspayments.com/NetGate/ProcessLink.asmx'
7
7
  self.live_uk_url = 'https://www.uk.iatspayments.com/NetGate/ProcessLink.asmx'
8
8
 
9
- self.supported_countries = %w(AU CA CH DE DK ES FI FR GR HK IE IT JP NL NO NZ PT SE SG TR GB US)
9
+ self.supported_countries = %w(AU BR CA CH DE DK ES FI FR GR HK IE IT NL NO PT SE SG TR GB US)
10
10
  self.default_currency = 'USD'
11
11
  self.supported_cardtypes = [:visa, :master, :american_express, :discover]
12
12
 
@@ -15,7 +15,7 @@ module ActiveMerchant #:nodoc:
15
15
 
16
16
  def initialize(options={})
17
17
  if(options[:login])
18
- deprecated("The 'login' option is deprecated in favor of 'agent_code' and will be removed in a future version.")
18
+ ActiveMerchant.deprecated("The 'login' option is deprecated in favor of 'agent_code' and will be removed in a future version.")
19
19
  options[:agent_code] = options[:login]
20
20
  end
21
21
 
@@ -52,10 +52,7 @@ module ActiveMerchant #:nodoc:
52
52
  end
53
53
 
54
54
  def token
55
- if @token.nil?
56
- @token = create_fingerprint(@options[:pem])
57
- end
58
- @token
55
+ @token ||= create_fingerprint(@options[:pem])
59
56
  end
60
57
 
61
58
  # <?xml version="1.0" encoding="UTF-8"?>
@@ -178,14 +178,6 @@ module ActiveMerchant #:nodoc:
178
178
 
179
179
  end
180
180
 
181
- def expdate(creditcard)
182
- year = sprintf("%.4i", creditcard.year)
183
- month = sprintf("%.2i", creditcard.month)
184
-
185
- "#{month}#{year[-2..-1]}"
186
- end
187
-
188
-
189
181
  def message_from(response)
190
182
  case response["responsetext"]
191
183
  when "SUCCESS","Approved"
@@ -206,6 +206,22 @@ module ActiveMerchant #:nodoc:
206
206
  "ZWD" => '716',
207
207
  }
208
208
 
209
+ AVS_CODE = {
210
+ "PASSED" => "Y",
211
+ "FAILED" => "N",
212
+ "PARTIAL" => "X",
213
+ "NOT_CHECKED" => "X",
214
+ "UNKNOWN" => "X"
215
+ }
216
+
217
+ CVV_CODE = {
218
+ "PASSED" => "M",
219
+ "FAILED" => "N",
220
+ "PARTIAL" => "I",
221
+ "NOT_CHECKED" => "P",
222
+ "UNKNOWN" => "U"
223
+ }
224
+
209
225
  def initialize(options = {})
210
226
  requires!(options, :login, :password)
211
227
  super
@@ -236,7 +252,7 @@ module ActiveMerchant #:nodoc:
236
252
  end
237
253
 
238
254
  def credit(money, authorization, options={})
239
- deprecated CREDIT_DEPRECATION_MESSAGE
255
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
240
256
  refund(money, authorization, options)
241
257
  end
242
258
 
@@ -261,7 +277,7 @@ module ActiveMerchant #:nodoc:
261
277
 
262
278
  def build_reference_request(type, money, authorization, options)
263
279
  options.merge!(:action => 'CrossReferenceTransaction')
264
- order_id, cross_reference, auth_id = authorization.split(";")
280
+ order_id, cross_reference, _ = authorization.split(";")
265
281
  build_request(options) do |xml|
266
282
  if money
267
283
  details = {'CurrencyCode' => currency_code(options[:currency] || default_currency), 'Amount' => amount(money)}
@@ -359,7 +375,13 @@ module ActiveMerchant #:nodoc:
359
375
 
360
376
  Response.new(success, message, response,
361
377
  :test => test?,
362
- :authorization => authorization)
378
+ :authorization => authorization,
379
+ :avs_result => {
380
+ :street_match => AVS_CODE[ response[:transaction_output_data][:address_numeric_check_result] ],
381
+ :postal_match => AVS_CODE[ response[:transaction_output_data][:post_code_check_result] ],
382
+ },
383
+ :cvv_result => CVV_CODE[ response[:transaction_output_data][:cv2_check_result] ]
384
+ )
363
385
  end
364
386
 
365
387
  def parse(xml)
@@ -86,7 +86,7 @@ module ActiveMerchant #:nodoc:
86
86
 
87
87
  def credit(money, transaction_id_or_card, options = {})
88
88
  if transaction_id_or_card.is_a?(String)
89
- deprecated CREDIT_DEPRECATION_MESSAGE
89
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
90
90
  refund(money, transaction_id_or_card, options)
91
91
  else
92
92
  commit(money, build_credit_request('CREDIT', money, nil, transaction_id_or_card))
@@ -166,6 +166,8 @@ module ActiveMerchant #:nodoc:
166
166
  # :comments Uh... comments
167
167
  #
168
168
  def recurring(money, creditcard, options={})
169
+ ActiveMerchant.deprecated RECURRING_DEPRECATION_MESSAGE
170
+
169
171
  requires!(options, [:periodicity, :bimonthly, :monthly, :biweekly, :weekly, :yearly, :daily], :installments, :order_id )
170
172
 
171
173
  options.update(
@@ -239,7 +241,7 @@ module ActiveMerchant #:nodoc:
239
241
  end
240
242
 
241
243
  def credit(money, identification, options = {})
242
- deprecated CREDIT_DEPRECATION_MESSAGE
244
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
243
245
  refund(money, identification, options)
244
246
  end
245
247
 
@@ -277,7 +279,7 @@ module ActiveMerchant #:nodoc:
277
279
  if key == :items
278
280
  build_items(elem, value)
279
281
  else
280
- for k, v in params[key]
282
+ for k, _ in params[key]
281
283
  elem.add_element(k.to_s).text = params[key][k].to_s if params[key][k]
282
284
  end
283
285
  end
@@ -428,17 +430,6 @@ module ActiveMerchant #:nodoc:
428
430
  response
429
431
  end
430
432
 
431
- # Make a ruby type out of the response string
432
- def normalize(field)
433
- case field
434
- when "true" then true
435
- when "false" then false
436
- when "" then nil
437
- when "null" then nil
438
- else field
439
- end
440
- end
441
-
442
433
  def format_creditcard_expiry_year(year)
443
434
  sprintf("%.4i", year)[-2..-1]
444
435
  end