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
@@ -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]