activemerchant 1.43.3 → 1.44.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -9,9 +9,9 @@ module ActiveMerchant #:nodoc:
9
9
  self.default_currency = 'DKK'
10
10
  self.money_format = :cents
11
11
  self.supported_cardtypes = [:dankort, :forbrugsforeningen, :visa, :master, :american_express, :diners_club, :jcb, :maestro]
12
- self.supported_countries = ['DK', 'SE']
13
- self.homepage_url = 'http://quickpay.dk/'
14
- self.display_name = 'Quickpay'
12
+ self.supported_countries = ['DE', 'DK', 'ES', 'FI', 'FR', 'FO', 'GB', 'IS', 'NO', 'SE']
13
+ self.homepage_url = 'http://quickpay.net/'
14
+ self.display_name = 'QuickPay'
15
15
 
16
16
  MD5_CHECK_FIELDS = {
17
17
  3 => {
@@ -120,11 +120,11 @@ module ActiveMerchant #:nodoc:
120
120
 
121
121
  :chstatus => %w(protocol msgtype merchant apikey)
122
122
  },
123
-
123
+
124
124
  7 => {
125
125
  :authorize => %w(protocol msgtype merchant ordernumber amount
126
126
  currency autocapture cardnumber expirationdate cvd
127
- acquirer cardtypelock testmode fraud_remote_addr
127
+ acquirers cardtypelock testmode fraud_remote_addr
128
128
  fraud_http_accept fraud_http_accept_language
129
129
  fraud_http_accept_encoding fraud_http_accept_charset
130
130
  fraud_http_referer fraud_http_user_agent apikey),
@@ -136,11 +136,12 @@ module ActiveMerchant #:nodoc:
136
136
 
137
137
  :refund => %w(protocol msgtype merchant amount transaction apikey),
138
138
 
139
- :subscribe => %w(protocol msgtype merchant ordernumber cardnumber
140
- expirationdate cvd acquirer cardtypelock description testmode
141
- fraud_remote_addr fraud_http_accept fraud_http_accept_language
142
- fraud_http_accept_encoding fraud_http_accept_charset
143
- fraud_http_referer fraud_http_user_agent apikey),
139
+ :subscribe => %w(protocol msgtype merchant ordernumber amount currency
140
+ cardnumber expirationdate cvd acquirers cardtypelock
141
+ description testmode fraud_remote_addr fraud_http_accept
142
+ fraud_http_accept_language fraud_http_accept_encoding
143
+ fraud_http_accept_charset fraud_http_referer
144
+ fraud_http_user_agent apikey),
144
145
 
145
146
  :recurring => %w(protocol msgtype merchant ordernumber amount currency
146
147
  autocapture transaction apikey),
@@ -148,7 +149,7 @@ module ActiveMerchant #:nodoc:
148
149
  :status => %w(protocol msgtype merchant transaction apikey),
149
150
 
150
151
  :chstatus => %w(protocol msgtype merchant apikey)
151
- }
152
+ }
152
153
  }
153
154
 
154
155
  APPROVED = '000'
@@ -218,7 +219,7 @@ module ActiveMerchant #:nodoc:
218
219
  end
219
220
 
220
221
  def credit(money, identification, options = {})
221
- deprecated CREDIT_DEPRECATION_MESSAGE
222
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
222
223
  refund(money, identification, options)
223
224
  end
224
225
 
@@ -226,6 +227,7 @@ module ActiveMerchant #:nodoc:
226
227
  post = {}
227
228
 
228
229
  add_creditcard(post, creditcard, options)
230
+ add_amount(post, 0, options) if @protocol >= 7
229
231
  add_invoice(post, options)
230
232
  add_description(post, options)
231
233
  add_fraud_parameters(post, options)
@@ -254,7 +256,7 @@ module ActiveMerchant #:nodoc:
254
256
  post[:cvd] = credit_card.verification_value
255
257
  post[:expirationdate] = expdate(credit_card)
256
258
  post[:cardtypelock] = options[:cardtypelock] unless options[:cardtypelock].blank?
257
- post[:acquirer] = options[:acquirer] unless options[:acquirer].blank?
259
+ post[:acquirers] = options[:acquirers] unless options[:acquirers].blank?
258
260
  end
259
261
 
260
262
  def add_reference(post, identification)
@@ -288,7 +290,7 @@ module ActiveMerchant #:nodoc:
288
290
 
289
291
  def add_fraud_parameters(post, options)
290
292
  if @protocol >= 4
291
- post[:fraud_remote_addr] = options[:fraud_remote_addr] if options[:fraud_remote_addr]
293
+ post[:fraud_remote_addr] = options[:ip] if options[:ip]
292
294
  post[:fraud_http_accept] = options[:fraud_http_accept] if options[:fraud_http_accept]
293
295
  post[:fraud_http_accept_language] = options[:fraud_http_accept_language] if options[:fraud_http_accept_language]
294
296
  post[:fraud_http_accept_encoding] = options[:fraud_http_accept_encoding] if options[:fraud_http_accept_encoding]
@@ -357,7 +359,7 @@ module ActiveMerchant #:nodoc:
357
359
 
358
360
  # Limited to 20 digits max
359
361
  def format_order_number(number)
360
- number.to_s.gsub(/[^\w_]/, '').rjust(4, "0")[0...20]
362
+ number.to_s.gsub(/[^\w]/, '').rjust(4, "0")[0...20]
361
363
  end
362
364
  end
363
365
  end
@@ -28,7 +28,8 @@ module ActiveMerchant
28
28
  'diners_club' => 'DINERS',
29
29
  'switch' => 'SWITCH',
30
30
  'solo' => 'SWITCH',
31
- 'laser' => 'LASER'
31
+ 'laser' => 'LASER',
32
+ 'maestro' => 'MC'
32
33
  }
33
34
 
34
35
  self.money_format = :cents
@@ -73,7 +74,7 @@ module ActiveMerchant
73
74
  end
74
75
 
75
76
  def credit(money, authorization, options = {})
76
- deprecated CREDIT_DEPRECATION_MESSAGE
77
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
77
78
  refund(money, authorization, options)
78
79
  end
79
80
 
@@ -265,16 +266,6 @@ module ActiveMerchant
265
266
  "#{format(credit_card.month, :two_digits)}#{format(credit_card.year, :two_digits)}"
266
267
  end
267
268
 
268
- def normalize(field)
269
- case field
270
- when "true" then true
271
- when "false" then false
272
- when "" then nil
273
- when "null" then nil
274
- else field
275
- end
276
- end
277
-
278
269
  def message_from(response)
279
270
  message = nil
280
271
  case response[:result]
@@ -121,7 +121,7 @@ module ActiveMerchant #:nodoc:
121
121
  end
122
122
 
123
123
  def credit(money, source, options = {})
124
- deprecated CREDIT_DEPRECATION_MESSAGE
124
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
125
125
  refund(money, source, options)
126
126
  end
127
127
 
@@ -47,7 +47,7 @@ module ActiveMerchant #:nodoc:
47
47
  end
48
48
 
49
49
  def credit(money, credit_card, options = {})
50
- deprecated CREDIT_DEPRECATION_MESSAGE
50
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
51
51
  refund(money, credit_card, options)
52
52
  end
53
53
 
@@ -59,17 +59,11 @@ module ActiveMerchant #:nodoc:
59
59
  end
60
60
 
61
61
  private
62
- def exp_date(credit_card)
63
- year = sprintf("%.4i", credit_card.year)
64
- month = sprintf("%.2i", credit_card.month)
65
-
66
- "#{month}#{year[-2..-1]}"
67
- end
68
62
 
69
63
  def add_credit_card(post, credit_card)
70
64
  post[:C_name] = credit_card.name
71
65
  post[:C_cardnumber] = credit_card.number
72
- post[:C_exp] = exp_date(credit_card)
66
+ post[:C_exp] = expdate(credit_card)
73
67
  post[:C_cvv] = credit_card.verification_value if credit_card.verification_value?
74
68
  end
75
69
 
@@ -36,7 +36,7 @@ module ActiveMerchant #:nodoc:
36
36
  end
37
37
 
38
38
  def add_reference(post, reference)
39
- ref, source = reference.to_s.split(";")
39
+ ref, _ = reference.to_s.split(";")
40
40
  post[:T_reference] = ref
41
41
  end
42
42
 
@@ -22,7 +22,7 @@ module ActiveMerchant #:nodoc:
22
22
  end
23
23
 
24
24
  def credit(money, credit_card, options = {})
25
- deprecated CREDIT_DEPRECATION_MESSAGE
25
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
26
26
  refund(money, source, options)
27
27
  end
28
28
 
@@ -18,7 +18,9 @@ module ActiveMerchant #:nodoc:
18
18
  :authorization => 'DEFERRED',
19
19
  :capture => 'RELEASE',
20
20
  :void => 'VOID',
21
- :abort => 'ABORT'
21
+ :abort => 'ABORT',
22
+ :store => 'TOKEN',
23
+ :unstore => 'REMOVETOKEN'
22
24
  }
23
25
 
24
26
  CREDIT_CARDS = {
@@ -55,14 +57,14 @@ module ActiveMerchant #:nodoc:
55
57
  super
56
58
  end
57
59
 
58
- def purchase(money, credit_card, options = {})
60
+ def purchase(money, payment_method, options = {})
59
61
  requires!(options, :order_id)
60
62
 
61
63
  post = {}
62
64
 
63
65
  add_amount(post, money, options)
64
66
  add_invoice(post, options)
65
- add_credit_card(post, credit_card)
67
+ add_payment_method(post, payment_method, options)
66
68
  add_address(post, options)
67
69
  add_customer_data(post, options)
68
70
  add_optional_data(post, options)
@@ -70,14 +72,14 @@ module ActiveMerchant #:nodoc:
70
72
  commit(:purchase, post)
71
73
  end
72
74
 
73
- def authorize(money, credit_card, options = {})
75
+ def authorize(money, payment_method, options = {})
74
76
  requires!(options, :order_id)
75
77
 
76
78
  post = {}
77
79
 
78
80
  add_amount(post, money, options)
79
81
  add_invoice(post, options)
80
- add_credit_card(post, credit_card)
82
+ add_payment_method(post, payment_method, options)
81
83
  add_address(post, options)
82
84
  add_customer_data(post, options)
83
85
  add_optional_data(post, options)
@@ -118,10 +120,24 @@ module ActiveMerchant #:nodoc:
118
120
  end
119
121
 
120
122
  def credit(money, identification, options = {})
121
- deprecated CREDIT_DEPRECATION_MESSAGE
123
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
122
124
  refund(money, identification, options)
123
125
  end
124
126
 
127
+ def store(credit_card, options = {})
128
+ post = {}
129
+ add_credit_card(post, credit_card)
130
+ add_currency(post, 0, options)
131
+
132
+ commit(:store, post)
133
+ end
134
+
135
+ def unstore(token, options = {})
136
+ post = {}
137
+ add_token(post, token)
138
+ commit(:unstore, post)
139
+ end
140
+
125
141
  private
126
142
  def add_reference(post, identification)
127
143
  order_id, transaction_id, authorization, security_key = identification.split(';')
@@ -147,20 +163,29 @@ module ActiveMerchant #:nodoc:
147
163
  add_pair(post, :Currency, currency, :required => true)
148
164
  end
149
165
 
166
+ def add_currency(post, money, options)
167
+ currency = options[:currency] || currency(money)
168
+ add_pair(post, :Currency, currency, :required => true)
169
+ end
170
+
150
171
  # doesn't actually use the currency -- dodgy!
151
172
  def add_release_amount(post, money, options)
152
173
  add_pair(post, :ReleaseAmount, amount(money), :required => true)
153
174
  end
154
175
 
155
176
  def add_customer_data(post, options)
156
- add_pair(post, :CustomerEMail, options[:email][0,255]) unless options[:email].blank?
157
- add_pair(post, :BillingPhone, options[:phone].gsub(/[^0-9+]/, '')[0,20]) unless options[:phone].blank?
177
+ add_pair(post, :CustomerEMail, truncate(options[:email], 255)) unless options[:email].blank?
158
178
  add_pair(post, :ClientIPAddress, options[:ip])
159
179
  end
160
180
 
161
181
  def add_optional_data(post, options)
162
182
  add_pair(post, :GiftAidPayment, options[:gift_aid_payment]) unless options[:gift_aid_payment].blank?
163
183
  add_pair(post, :Apply3DSecure, options[:apply_3d_secure]) unless options[:apply_3d_secure].blank?
184
+ add_pair(post, :CreateToken, 1) unless options[:store].blank?
185
+ add_pair(post, :FIRecipientAcctNumber, options[:recipient_account_number])
186
+ add_pair(post, :FIRecipientSurname, options[:recipient_surname])
187
+ add_pair(post, :FIRecipientPostcode, options[:recipient_postcode])
188
+ add_pair(post, :FIRecipientDoB, options[:recipient_dob])
164
189
  end
165
190
 
166
191
  def add_address(post, options)
@@ -168,34 +193,44 @@ module ActiveMerchant #:nodoc:
168
193
  first_name, last_name = parse_first_and_last_name(billing_address[:name])
169
194
  add_pair(post, :BillingSurname, last_name)
170
195
  add_pair(post, :BillingFirstnames, first_name)
171
- add_pair(post, :BillingAddress1, billing_address[:address1])
172
- add_pair(post, :BillingAddress2, billing_address[:address2])
173
- add_pair(post, :BillingCity, billing_address[:city])
174
- add_pair(post, :BillingState, billing_address[:state]) if billing_address[:country] == 'US'
175
- add_pair(post, :BillingCountry, billing_address[:country])
176
- add_pair(post, :BillingPostCode, billing_address[:zip])
196
+ add_pair(post, :BillingAddress1, truncate(billing_address[:address1], 100))
197
+ add_pair(post, :BillingAddress2, truncate(billing_address[:address2], 100))
198
+ add_pair(post, :BillingCity, truncate(billing_address[:city], 40))
199
+ add_pair(post, :BillingState, truncate(billing_address[:state], 2)) if is_usa(billing_address[:country])
200
+ add_pair(post, :BillingCountry, truncate(billing_address[:country], 2))
201
+ add_pair(post, :BillingPhone, sanitize_phone(billing_address[:phone]))
202
+ add_pair(post, :BillingPostCode, truncate(billing_address[:zip], 10))
177
203
  end
178
204
 
179
205
  if shipping_address = options[:shipping_address] || billing_address
180
206
  first_name, last_name = parse_first_and_last_name(shipping_address[:name])
181
207
  add_pair(post, :DeliverySurname, last_name)
182
208
  add_pair(post, :DeliveryFirstnames, first_name)
183
- add_pair(post, :DeliveryAddress1, shipping_address[:address1])
184
- add_pair(post, :DeliveryAddress2, shipping_address[:address2])
185
- add_pair(post, :DeliveryCity, shipping_address[:city])
186
- add_pair(post, :DeliveryState, shipping_address[:state]) if shipping_address[:country] == 'US'
187
- add_pair(post, :DeliveryCountry, shipping_address[:country])
188
- add_pair(post, :DeliveryPostCode, shipping_address[:zip])
209
+ add_pair(post, :DeliveryAddress1, truncate(shipping_address[:address1], 100))
210
+ add_pair(post, :DeliveryAddress2, truncate(shipping_address[:address2], 100))
211
+ add_pair(post, :DeliveryCity, truncate(shipping_address[:city], 40))
212
+ add_pair(post, :DeliveryState, truncate(shipping_address[:state], 2)) if is_usa(shipping_address[:country])
213
+ add_pair(post, :DeliveryCountry, truncate(shipping_address[:country], 2))
214
+ add_pair(post, :DeliveryPhone, sanitize_phone(shipping_address[:phone]))
215
+ add_pair(post, :DeliveryPostCode, truncate(shipping_address[:zip], 10))
189
216
  end
190
217
  end
191
218
 
192
219
  def add_invoice(post, options)
193
220
  add_pair(post, :VendorTxCode, sanitize_order_id(options[:order_id]), :required => true)
194
- add_pair(post, :Description, truncate_description(options[:description] || options[:order_id]))
221
+ add_pair(post, :Description, truncate(options[:description] || options[:order_id], 100))
222
+ end
223
+
224
+ def add_payment_method(post, payment_method, options)
225
+ if payment_method.respond_to?(:number)
226
+ add_credit_card(post, payment_method)
227
+ else
228
+ add_token_details(post, payment_method, options)
229
+ end
195
230
  end
196
231
 
197
232
  def add_credit_card(post, credit_card)
198
- add_pair(post, :CardHolder, credit_card.name, :required => true)
233
+ add_pair(post, :CardHolder, truncate(credit_card.name, 50), :required => true)
199
234
  add_pair(post, :CardNumber, credit_card.number, :required => true)
200
235
 
201
236
  add_pair(post, :ExpiryDate, format_date(credit_card.month, credit_card.year), :required => true)
@@ -209,13 +244,33 @@ module ActiveMerchant #:nodoc:
209
244
  add_pair(post, :CV2, credit_card.verification_value)
210
245
  end
211
246
 
247
+ def add_token_details(post, token, options)
248
+ add_token(post, token)
249
+ add_pair(post, :StoreToken, options[:customer])
250
+ end
251
+
252
+ def add_token(post, token)
253
+ add_pair(post, :Token, token)
254
+ end
255
+
212
256
  def sanitize_order_id(order_id)
213
- order_id.to_s.gsub(/[^-a-zA-Z0-9._]/, '')
257
+ cleansed = order_id.to_s.gsub(/[^-a-zA-Z0-9._]/, '')
258
+ truncate(cleansed, 40)
214
259
  end
215
260
 
216
- def truncate_description(description)
217
- return nil unless description
218
- description[0, 100]
261
+ def sanitize_phone(phone)
262
+ return nil unless phone
263
+ cleansed = phone.to_s.gsub(/[^0-9+]/, '')
264
+ truncate(cleansed, 20)
265
+ end
266
+
267
+ def truncate(value, max_size)
268
+ return nil unless value
269
+ value[0, max_size]
270
+ end
271
+
272
+ def is_usa(country)
273
+ truncate(country, 2) == 'US'
219
274
  end
220
275
 
221
276
  def map_card_type(credit_card)
@@ -256,11 +311,16 @@ module ActiveMerchant #:nodoc:
256
311
  end
257
312
 
258
313
  def authorization_from(response, params, action)
314
+ case action
315
+ when :store
316
+ response['Token']
317
+ else
259
318
  [ params[:VendorTxCode],
260
319
  response["VPSTxId"],
261
320
  response["TxAuthNo"],
262
321
  response["SecurityKey"],
263
322
  action ].join(";")
323
+ end
264
324
  end
265
325
 
266
326
  def abort_or_void_from(identification)
@@ -273,7 +333,11 @@ module ActiveMerchant #:nodoc:
273
333
  end
274
334
 
275
335
  def build_url(action)
276
- endpoint = [ :purchase, :authorization ].include?(action) ? "vspdirect-register" : TRANSACTIONS[action].downcase
336
+ endpoint = case action
337
+ when :purchase, :authorization then "vspdirect-register"
338
+ when :store then 'directtoken'
339
+ else TRANSACTIONS[action].downcase
340
+ end
277
341
  "#{test? ? self.test_url : self.live_url}/#{endpoint}.vsp"
278
342
  end
279
343
 
@@ -320,7 +384,7 @@ module ActiveMerchant #:nodoc:
320
384
 
321
385
  last_name = name.pop || ''
322
386
  first_name = name.join(' ')
323
- [ first_name[0,20], last_name[0,20] ]
387
+ [ truncate(first_name, 20), truncate(last_name, 20) ]
324
388
  end
325
389
 
326
390
  def localized_amount(money, currency)
@@ -328,6 +392,7 @@ module ActiveMerchant #:nodoc:
328
392
  CURRENCIES_WITHOUT_FRACTIONS.include?(currency.to_s) ? amount.split('.').first : amount
329
393
  end
330
394
  end
395
+
331
396
  end
332
397
  end
333
398
 
@@ -57,7 +57,7 @@ module ActiveMerchant #:nodoc:
57
57
  end
58
58
 
59
59
  def credit(money, authorization, options = {})
60
- deprecated CREDIT_DEPRECATION_MESSAGE
60
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
61
61
  refund(money, authorization, options)
62
62
  end
63
63
 
@@ -125,13 +125,6 @@ module ActiveMerchant #:nodoc:
125
125
  end
126
126
  end
127
127
 
128
- def expdate(creditcard)
129
- year = sprintf("%.4i", creditcard.year)
130
- month = sprintf("%.2i", creditcard.month)
131
-
132
- "#{month}#{year[-2..-1]}"
133
- end
134
-
135
128
  def add_customer_data(xml, options)
136
129
  if options.has_key? :customer
137
130
  xml.tag! 'CUSTOMERID', options[:customer]