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
@@ -1,49 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- module Integrations #:nodoc:
4
-
5
- # Documentation: http://robokassa.ru/Doc/En/Interface.aspx
6
- module Robokassa
7
- autoload :Helper, File.dirname(__FILE__) + '/robokassa/helper.rb'
8
- autoload :Notification, File.dirname(__FILE__) + '/robokassa/notification.rb'
9
- autoload :Return, File.dirname(__FILE__) + '/robokassa/return.rb'
10
- autoload :Common, File.dirname(__FILE__) + '/robokassa/common.rb'
11
-
12
- # Overwrite this if you want to change the Robokassa test url
13
- mattr_accessor :test_url
14
- self.test_url = 'http://test.robokassa.ru/Index.aspx'
15
-
16
- # Overwrite this if you want to change the Robokassa production url
17
- mattr_accessor :production_url
18
- self.production_url = 'https://merchant.roboxchange.com/Index.aspx'
19
-
20
- mattr_accessor :signature_parameter_name
21
- self.signature_parameter_name = 'SignatureValue'
22
-
23
- def self.service_url
24
- mode = ActiveMerchant::Billing::Base.integration_mode
25
- case mode
26
- when :production
27
- self.production_url
28
- when :test
29
- self.test_url
30
- else
31
- raise StandardError, "Integration mode set to an invalid value: #{mode}"
32
- end
33
- end
34
-
35
- def self.helper(order, account, options = {})
36
- Helper.new(order, account, options)
37
- end
38
-
39
- def self.notification(query_string, options = {})
40
- Notification.new(query_string, options)
41
- end
42
-
43
- def self.return(query_string)
44
- Return.new(query_string)
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,19 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- module Integrations #:nodoc:
4
- module Robokassa
5
- module Common
6
- def generate_signature_string
7
- custom_param_keys = params.keys.select {|key| key =~ /^shp/}.sort
8
- custom_params = custom_param_keys.map {|key| "#{key}=#{params[key]}"}
9
- [main_params, secret, custom_params.compact].flatten.join(':')
10
- end
11
-
12
- def generate_signature
13
- Digest::MD5.hexdigest(generate_signature_string)
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,50 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- module Integrations #:nodoc:
4
- module Robokassa
5
- class Helper < ActiveMerchant::Billing::Integrations::Helper
6
- include Common
7
-
8
- def initialize(order, account, options = {})
9
- @md5secret = options.delete(:secret)
10
- super
11
- end
12
-
13
- def form_fields
14
- @fields.merge(ActiveMerchant::Billing::Integrations::Robokassa.signature_parameter_name => generate_signature)
15
- end
16
-
17
- def main_params
18
- [:account, :amount, :order].map {|key| @fields[mappings[key]]}
19
- end
20
-
21
- def params
22
- @fields
23
- end
24
-
25
- def secret
26
- @md5secret
27
- end
28
-
29
- def method_missing(method_id, *args)
30
- method_id = method_id.to_s.gsub(/=$/, '')
31
-
32
- # support for robokassa custom parameters
33
- if method_id =~ /^shp/
34
- add_field method_id, args.last
35
- end
36
-
37
- super
38
- end
39
-
40
- mapping :account, 'MrchLogin'
41
- mapping :amount, 'OutSum'
42
- mapping :currency, 'IncCurrLabel'
43
- mapping :order, 'InvId'
44
- mapping :description, 'Desc'
45
- mapping :email, 'Email'
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -1,55 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- module Integrations #:nodoc:
4
- module Robokassa
5
- class Notification < ActiveMerchant::Billing::Integrations::Notification
6
- include Common
7
-
8
- def self.recognizes?(params)
9
- params.has_key?('InvId') && params.has_key?('OutSum')
10
- end
11
-
12
- def complete?
13
- true
14
- end
15
-
16
- def amount
17
- BigDecimal.new(gross)
18
- end
19
-
20
- def item_id
21
- params['InvId']
22
- end
23
-
24
- def security_key
25
- params[ActiveMerchant::Billing::Integrations::Robokassa.signature_parameter_name].to_s.downcase
26
- end
27
-
28
- def gross
29
- params['OutSum']
30
- end
31
-
32
- def status
33
- 'success'
34
- end
35
-
36
- def secret
37
- @options[:secret]
38
- end
39
-
40
- def main_params
41
- [gross, item_id]
42
- end
43
-
44
- def acknowledge(authcode = nil)
45
- security_key == generate_signature
46
- end
47
-
48
- def success_response(*args)
49
- "OK#{item_id}"
50
- end
51
- end
52
- end
53
- end
54
- end
55
- end
@@ -1,17 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- module Integrations #:nodoc:
4
- module Robokassa
5
- class Return < ActiveMerchant::Billing::Integrations::Return
6
- def item_id
7
- @params['InvId']
8
- end
9
-
10
- def amount
11
- @params['OutSum']
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,37 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- module Integrations #:nodoc:
4
- module SagePayForm
5
- autoload :Helper, File.dirname(__FILE__) + '/sage_pay_form/helper.rb'
6
- autoload :Return, File.dirname(__FILE__) + '/sage_pay_form/return.rb'
7
- autoload :Notification, File.dirname(__FILE__) + '/sage_pay_form/notification.rb'
8
- autoload :Encryption, File.dirname(__FILE__) + '/sage_pay_form/encryption.rb'
9
-
10
- mattr_accessor :production_url
11
- mattr_accessor :test_url
12
- mattr_accessor :simulate_url
13
- self.production_url = 'https://live.sagepay.com/gateway/service/vspform-register.vsp'
14
- self.test_url = 'https://test.sagepay.com/gateway/service/vspform-register.vsp'
15
- self.simulate_url = 'https://test.sagepay.com/Simulator/VSPFormGateway.asp'
16
-
17
- def self.return(query_string, options = {})
18
- Return.new(query_string, options)
19
- end
20
-
21
- def self.service_url
22
- mode = ActiveMerchant::Billing::Base.integration_mode
23
- case mode
24
- when :production
25
- self.production_url
26
- when :test
27
- self.test_url
28
- when :simulate
29
- self.simulate_url
30
- else
31
- raise StandardError, "Integration mode set to an invalid value: #{mode}"
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,33 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- module Integrations #:nodoc:
4
- module SagePayForm
5
- module Encryption
6
- def sage_encrypt(plaintext, key)
7
- Base64.strict_encode64(sage_encrypt_xor(plaintext, key))
8
- end
9
-
10
- def sage_decrypt(ciphertext, key)
11
- sage_encrypt_xor(Base64.decode64(ciphertext), key)
12
- end
13
-
14
- def sage_encrypt_salt(min, max)
15
- length = rand(max - min + 1) + min
16
- SecureRandom.base64(length + 4)[0, length]
17
- end
18
-
19
- private
20
-
21
- def sage_encrypt_xor(data, key)
22
- raise 'No key provided' if key.blank?
23
-
24
- key *= (data.bytesize.to_f / key.bytesize.to_f).ceil
25
- key = key[0, data.bytesize]
26
-
27
- data.bytes.zip(key.bytes).map { |b1, b2| (b1 ^ b2).chr }.join
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,136 +0,0 @@
1
- require 'uri'
2
-
3
- module ActiveMerchant #:nodoc:
4
- module Billing #:nodoc:
5
- module Integrations #:nodoc:
6
- module SagePayForm
7
- class Helper < ActiveMerchant::Billing::Integrations::Helper
8
- include Encryption
9
-
10
- mapping :credential2, 'EncryptKey'
11
-
12
- mapping :account, 'Vendor'
13
- mapping :amount, 'Amount'
14
- mapping :currency, 'Currency'
15
-
16
- mapping :order, 'VendorTxCode'
17
-
18
- mapping :customer,
19
- :first_name => 'BillingFirstnames',
20
- :last_name => 'BillingSurname',
21
- :email => 'CustomerEMail',
22
- :phone => 'BillingPhone',
23
- :send_email_confirmation => 'SendEmail'
24
-
25
- mapping :billing_address,
26
- :city => 'BillingCity',
27
- :address1 => 'BillingAddress1',
28
- :address2 => 'BillingAddress2',
29
- :state => 'BillingState',
30
- :zip => 'BillingPostCode',
31
- :country => 'BillingCountry'
32
-
33
- mapping :shipping_address,
34
- :city => 'DeliveryCity',
35
- :address1 => 'DeliveryAddress1',
36
- :address2 => 'DeliveryAddress2',
37
- :state => 'DeliveryState',
38
- :zip => 'DeliveryPostCode',
39
- :country => 'DeliveryCountry'
40
-
41
- mapping :return_url, 'SuccessURL'
42
- mapping :description, 'Description'
43
-
44
- class_attribute :referrer_id
45
-
46
- def shipping_address(params = {})
47
- @shipping_address_set = true unless params.empty?
48
-
49
- params.each do |k, v|
50
- field = mappings[:shipping_address][k]
51
- add_field(field, v) unless field.nil?
52
- end
53
- end
54
-
55
- def map_billing_address_to_shipping_address
56
- %w(City Address1 Address2 State PostCode Country).each do |field|
57
- fields["Delivery#{field}"] = fields["Billing#{field}"]
58
- end
59
- end
60
-
61
- def form_fields
62
- map_billing_address_to_shipping_address unless @shipping_address_set
63
-
64
- fields['DeliveryFirstnames'] ||= fields['BillingFirstnames']
65
- fields['DeliverySurname'] ||= fields['BillingSurname']
66
-
67
- fields['FailureURL'] ||= fields['SuccessURL']
68
-
69
- fields['BillingPostCode'] ||= "0000"
70
- fields['DeliveryPostCode'] ||= "0000"
71
-
72
- crypt_skip = ['Vendor', 'EncryptKey', 'SendEmail']
73
- crypt_skip << 'BillingState' unless fields['BillingCountry'] == 'US'
74
- crypt_skip << 'DeliveryState' unless fields['DeliveryCountry'] == 'US'
75
- crypt_skip << 'CustomerEMail' unless fields['SendEmail']
76
- key = fields['EncryptKey']
77
- @crypt ||= create_crypt_field(fields.except(*crypt_skip), key)
78
-
79
- result = {
80
- 'VPSProtocol' => '2.23',
81
- 'TxType' => 'PAYMENT',
82
- 'Vendor' => @fields['Vendor'],
83
- 'Crypt' => @crypt
84
- }
85
- result['ReferrerID'] = referrer_id if referrer_id
86
- result
87
- end
88
-
89
- private
90
-
91
- def create_crypt_field(fields, key)
92
- parts = fields.map { |k, v| "#{k}=#{sanitize(k, v)}" unless v.nil? }.compact.shuffle
93
- parts.unshift(sage_encrypt_salt(key.length, key.length * 2))
94
- sage_encrypt(parts.join('&'), key)
95
- end
96
-
97
- def sanitize(key, value)
98
- reject = exact = nil
99
-
100
- case key
101
- when /URL$/
102
- # allow all
103
- when 'VendorTxCode'
104
- reject = /[^A-Za-z0-9{}._-]+/
105
- when /[Nn]ames?$/
106
- reject = %r{[^[:alpha:] /\\.'-]+}
107
- when /(?:Address[12]|City)$/
108
- reject = %r{[^[:alnum:] +'/\\:,.\n()-]+}
109
- when /PostCode$/
110
- reject = /[^A-Za-z0-9 -]+/
111
- when /Phone$/
112
- reject = /[^0-9A-Za-z+ ()-]+/
113
- when 'Currency'
114
- exact = /^[A-Z]{3}$/
115
- when /State$/
116
- exact = /^[A-Z]{2}$/
117
- when 'Description'
118
- value = value[0...100]
119
- else
120
- reject = /&+/
121
- end
122
-
123
- if exact
124
- raise ArgumentError, "Invalid value for #{key}: #{value.inspect}" unless value =~ exact
125
- value
126
- elsif reject
127
- value.gsub(reject, ' ')
128
- else
129
- value
130
- end
131
- end
132
- end
133
- end
134
- end
135
- end
136
- end
@@ -1,210 +0,0 @@
1
- require 'net/http'
2
-
3
- module ActiveMerchant #:nodoc:
4
- module Billing #:nodoc:
5
- module Integrations #:nodoc:
6
- module SagePayForm
7
- class Notification < ActiveMerchant::Billing::Integrations::Notification
8
- class CryptError < StandardError; end
9
-
10
- include Encryption
11
-
12
- def initialize(post_data, options)
13
- super
14
- load_crypt_params(params['crypt'], options[:credential2])
15
- end
16
-
17
- # Was the transaction complete?
18
- def complete?
19
- status_code == 'OK'
20
- end
21
-
22
- # Was the transaction cancelled?
23
- # Unfortunately, we can't distinguish "user abort" from "idle too long".
24
- def cancelled?
25
- status_code == 'ABORT'
26
- end
27
-
28
- # Text version of #complete?, since we don't support Pending.
29
- def status
30
- complete? ? 'Completed' : 'Failed'
31
- end
32
-
33
- # Status of transaction. List of possible values:
34
- # <tt>OK</tt>:: Transaction completed successfully.
35
- # <tt>NOTAUTHED</tt>:: Incorrect card details / insufficient funds.
36
- # <tt>MALFORMED</tt>:: Invalid input data.
37
- # <tt>INVALID</tt>:: Valid input data, but some fields are incorrect.
38
- # <tt>ABORT</tt>:: User hit cancel button or went idle for 15+ minutes.
39
- # <tt>REJECTED</tt>:: Rejected by account fraud screening rules.
40
- # <tt>AUTHENTICATED</tt>:: Authenticated card details secured at SagePay.
41
- # <tt>REGISTERED</tt>:: Non-authenticated card details secured at SagePay.
42
- # <tt>ERROR</tt>:: Problem internal to SagePay.
43
- def status_code
44
- params['Status']
45
- end
46
-
47
- # Check this if #completed? is false.
48
- def message
49
- params['StatusDetail']
50
- end
51
-
52
- # Vendor-supplied code (:order mapping).
53
- def item_id
54
- params['VendorTxCode']
55
- end
56
-
57
- # Internal SagePay code, typically "{LONG-UUID}".
58
- def transaction_id
59
- params['VPSTxId']
60
- end
61
-
62
- # Authorization number (only if #completed?).
63
- def auth_id
64
- params['TxAuthNo']
65
- end
66
-
67
- # Total amount (no fees).
68
- def gross
69
- params['Amount'].gsub(/,(?=\d{3}\b)/, '')
70
- end
71
-
72
- # AVS and CV2 check results. Possible values:
73
- # <tt>ALL MATCH</tt>::
74
- # <tt>SECURITY CODE MATCH ONLY</tt>::
75
- # <tt>ADDRESS MATCH ONLY</tt>::
76
- # <tt>NO DATA MATCHES</tt>::
77
- # <tt>DATA NOT CHECKED</tt>::
78
- def avs_cv2_result
79
- params['AVSCV2']
80
- end
81
-
82
- # Numeric address check. Possible values:
83
- # <tt>NOTPROVIDED</tt>::
84
- # <tt>NOTCHECKED</tt>::
85
- # <tt>MATCHED</tt>::
86
- # <tt>NOTMATCHED</tt>::
87
- def address_result
88
- params['AddressResult']
89
- end
90
-
91
- # Post code check. Possible values:
92
- # <tt>NOTPROVIDED</tt>::
93
- # <tt>NOTCHECKED</tt>::
94
- # <tt>MATCHED</tt>::
95
- # <tt>NOTMATCHED</tt>::
96
- def post_code_result
97
- params['PostCodeResult']
98
- end
99
-
100
- # CV2 code check. Possible values:
101
- # <tt>NOTPROVIDED</tt>::
102
- # <tt>NOTCHECKED</tt>::
103
- # <tt>MATCHED</tt>::
104
- # <tt>NOTMATCHED</tt>::
105
- def cv2_result
106
- params['CV2Result']
107
- end
108
-
109
- # Was the Gift Aid box checked?
110
- def gift_aid?
111
- params['GiftAid'] == '1'
112
- end
113
-
114
- # Result of 3D Secure checks. Possible values:
115
- # <tt>OK</tt>:: Authenticated correctly.
116
- # <tt>NOTCHECKED</tt>:: Authentication not performed.
117
- # <tt>NOTAVAILABLE</tt>:: Card not auth-capable, or auth is otherwise impossible.
118
- # <tt>NOTAUTHED</tt>:: User failed authentication.
119
- # <tt>INCOMPLETE</tt>:: Authentication unable to complete.
120
- # <tt>ERROR</tt>:: Unable to attempt authentication due to data / service errors.
121
- def buyer_auth_result
122
- params['3DSecureStatus']
123
- end
124
-
125
- # Encoded 3D Secure result code.
126
- def buyer_auth_result_code
127
- params['CAVV']
128
- end
129
-
130
- # Address confirmation status. PayPal only. Possible values:
131
- # <tt>NONE</tt>::
132
- # <tt>CONFIRMED</tt>::
133
- # <tt>UNCONFIRMED</tt>::
134
- def address_status
135
- params['AddressStatus']
136
- end
137
-
138
- # Payer verification. Undocumented.
139
- def payer_verified?
140
- params['PayerStatus'] == 'VERIFIED'
141
- end
142
-
143
- # Credit card type. Possible values:
144
- # <tt>VISA</tt>:: Visa
145
- # <tt>MC</tt>:: MasterCard
146
- # <tt>DELTA</tt>:: Delta
147
- # <tt>SOLO</tt>:: Solo
148
- # <tt>MAESTRO</tt>:: Maestro (UK and International)
149
- # <tt>UKE</tt>:: Visa Electron
150
- # <tt>AMEX</tt>:: American Express
151
- # <tt>DC</tt>:: Diners Club
152
- # <tt>JCB</tt>:: JCB
153
- # <tt>LASER</tt>:: Laser
154
- # <tt>PAYPAL</tt>:: PayPal
155
- def credit_card_type
156
- params['CardType']
157
- end
158
-
159
- # Last four digits of credit card.
160
- def credit_card_last_4_digits
161
- params['Last4Digits']
162
- end
163
-
164
- # Used by composition methods, but not supplied by SagePay.
165
- def currency
166
- nil
167
- end
168
-
169
- def test?
170
- false
171
- end
172
-
173
- def acknowledge
174
- true
175
- end
176
-
177
- private
178
-
179
- def load_crypt_params(crypt, key)
180
- raise MissingCryptData if crypt.blank?
181
- raise MissingCryptKey if key.blank?
182
-
183
- crypt_data = sage_decrypt(crypt.gsub(' ', '+'), key)
184
- raise InvalidCryptData unless crypt_data =~ /(^|&)Status=/
185
-
186
- params.clear
187
- parse(crypt_data)
188
- end
189
-
190
- class MissingCryptKey < CryptError
191
- def message
192
- 'No merchant decryption key supplied'
193
- end
194
- end
195
- class MissingCryptData < CryptError
196
- def message
197
- 'No data received from SagePay'
198
- end
199
- end
200
- class InvalidCryptData < CryptError
201
- def message
202
- 'Invalid data received from SagePay'
203
- end
204
- end
205
-
206
- end
207
- end
208
- end
209
- end
210
- end