activemerchant 1.42.6 → 1.90.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. checksums.yaml +5 -13
  2. data/CHANGELOG +1420 -2
  3. data/CONTRIBUTORS +106 -0
  4. data/README.md +107 -103
  5. data/lib/active_merchant/billing/apple_pay_payment_token.rb +22 -0
  6. data/lib/active_merchant/billing/avs_result.rb +12 -13
  7. data/lib/active_merchant/billing/base.rb +13 -16
  8. data/lib/active_merchant/billing/check.rb +35 -24
  9. data/lib/active_merchant/billing/compatibility.rb +117 -0
  10. data/lib/active_merchant/billing/credit_card.rb +196 -81
  11. data/lib/active_merchant/billing/credit_card_formatting.rb +6 -4
  12. data/lib/active_merchant/billing/credit_card_methods.rb +199 -75
  13. data/lib/active_merchant/billing/cvv_result.rb +15 -15
  14. data/lib/active_merchant/billing/gateway.rb +171 -39
  15. data/lib/active_merchant/billing/gateways/adyen.rb +380 -0
  16. data/lib/active_merchant/billing/gateways/allied_wallet.rb +205 -0
  17. data/lib/active_merchant/billing/gateways/authorize_net.rb +933 -604
  18. data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +417 -0
  19. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +74 -54
  20. data/lib/active_merchant/billing/gateways/axcessms.rb +181 -0
  21. data/lib/active_merchant/billing/gateways/balanced.rb +130 -370
  22. data/lib/active_merchant/billing/gateways/bank_frick.rb +225 -0
  23. data/lib/active_merchant/billing/gateways/banwire.rb +23 -12
  24. data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +351 -0
  25. data/lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb +6 -6
  26. data/lib/active_merchant/billing/gateways/be2bill.rb +2 -2
  27. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +109 -32
  28. data/lib/active_merchant/billing/gateways/beanstream.rb +59 -13
  29. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +12 -9
  30. data/lib/active_merchant/billing/gateways/blue_pay.rb +520 -498
  31. data/lib/active_merchant/billing/gateways/blue_snap.rb +347 -0
  32. data/lib/active_merchant/billing/gateways/bogus.rb +80 -46
  33. data/lib/active_merchant/billing/gateways/borgun.rb +220 -0
  34. data/lib/active_merchant/billing/gateways/bpoint.rb +277 -0
  35. data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +15 -2
  36. data/lib/active_merchant/billing/gateways/braintree.rb +2 -2
  37. data/lib/active_merchant/billing/gateways/braintree_blue.rb +311 -121
  38. data/lib/active_merchant/billing/gateways/braintree_orange.rb +4 -4
  39. data/lib/active_merchant/billing/gateways/bridge_pay.rb +244 -0
  40. data/lib/active_merchant/billing/gateways/cams.rb +230 -0
  41. data/lib/active_merchant/billing/gateways/card_connect.rb +311 -0
  42. data/lib/active_merchant/billing/gateways/card_save.rb +6 -7
  43. data/lib/active_merchant/billing/gateways/card_stream.rb +235 -89
  44. data/lib/active_merchant/billing/gateways/cardknox.rb +327 -0
  45. data/lib/active_merchant/billing/gateways/cardprocess.rb +254 -0
  46. data/lib/active_merchant/billing/gateways/cashnet.rb +219 -0
  47. data/lib/active_merchant/billing/gateways/cc5.rb +50 -8
  48. data/lib/active_merchant/billing/gateways/cecabank.rb +27 -14
  49. data/lib/active_merchant/billing/gateways/cenpos.rb +327 -0
  50. data/lib/active_merchant/billing/gateways/checkout.rb +214 -0
  51. data/lib/active_merchant/billing/gateways/checkout_v2.rb +233 -0
  52. data/lib/active_merchant/billing/gateways/citrus_pay.rb +22 -0
  53. data/lib/active_merchant/billing/gateways/clearhaus.rb +220 -0
  54. data/lib/active_merchant/billing/gateways/commercegate.rb +142 -0
  55. data/lib/active_merchant/billing/gateways/conekta.rb +91 -97
  56. data/lib/active_merchant/billing/gateways/creditcall.rb +271 -0
  57. data/lib/active_merchant/billing/gateways/credorax.rb +356 -0
  58. data/lib/active_merchant/billing/gateways/ct_payment.rb +268 -0
  59. data/lib/active_merchant/billing/gateways/culqi.rb +277 -0
  60. data/lib/active_merchant/billing/gateways/cyber_source.rb +294 -158
  61. data/lib/active_merchant/billing/gateways/d_local.rb +226 -0
  62. data/lib/active_merchant/billing/gateways/data_cash.rb +59 -347
  63. data/lib/active_merchant/billing/gateways/dibs.rb +199 -0
  64. data/lib/active_merchant/billing/gateways/digitzs.rb +292 -0
  65. data/lib/active_merchant/billing/gateways/ebanx.rb +296 -0
  66. data/lib/active_merchant/billing/gateways/efsnet.rb +24 -39
  67. data/lib/active_merchant/billing/gateways/elavon.rb +146 -147
  68. data/lib/active_merchant/billing/gateways/element.rb +356 -0
  69. data/lib/active_merchant/billing/gateways/epay.rb +41 -31
  70. data/lib/active_merchant/billing/gateways/evo_ca.rb +1 -1
  71. data/lib/active_merchant/billing/gateways/eway.rb +79 -78
  72. data/lib/active_merchant/billing/gateways/eway_managed.rb +35 -36
  73. data/lib/active_merchant/billing/gateways/eway_rapid.rb +369 -228
  74. data/lib/active_merchant/billing/gateways/exact.rb +32 -26
  75. data/lib/active_merchant/billing/gateways/ezic.rb +195 -0
  76. data/lib/active_merchant/billing/gateways/fat_zebra.rb +90 -64
  77. data/lib/active_merchant/billing/gateways/federated_canada.rb +6 -14
  78. data/lib/active_merchant/billing/gateways/finansbank.rb +3 -3
  79. data/lib/active_merchant/billing/gateways/first_giving.rb +142 -0
  80. data/lib/active_merchant/billing/gateways/first_pay.rb +128 -122
  81. data/lib/active_merchant/billing/gateways/firstdata_e4.rb +190 -64
  82. data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +446 -0
  83. data/lib/active_merchant/billing/gateways/flo2cash.rb +215 -0
  84. data/lib/active_merchant/billing/gateways/flo2cash_simple.rb +20 -0
  85. data/lib/active_merchant/billing/gateways/forte.rb +270 -0
  86. data/lib/active_merchant/billing/gateways/garanti.rb +29 -27
  87. data/lib/active_merchant/billing/gateways/global_collect.rb +340 -0
  88. data/lib/active_merchant/billing/gateways/global_transport.rb +194 -0
  89. data/lib/active_merchant/billing/gateways/hdfc.rb +35 -36
  90. data/lib/active_merchant/billing/gateways/hps.rb +305 -0
  91. data/lib/active_merchant/billing/gateways/iats_payments.rb +271 -16
  92. data/lib/active_merchant/billing/gateways/in_context_paypal_express.rb +15 -0
  93. data/lib/active_merchant/billing/gateways/inspire.rb +29 -32
  94. data/lib/active_merchant/billing/gateways/instapay.rb +5 -6
  95. data/lib/active_merchant/billing/gateways/ipp.rb +175 -0
  96. data/lib/active_merchant/billing/gateways/iridium.rb +247 -41
  97. data/lib/active_merchant/billing/gateways/itransact.rb +4 -5
  98. data/lib/active_merchant/billing/gateways/iveri.rb +251 -0
  99. data/lib/active_merchant/billing/gateways/jetpay.rb +198 -71
  100. data/lib/active_merchant/billing/gateways/jetpay_v2.rb +437 -0
  101. data/lib/active_merchant/billing/gateways/komoju.rb +115 -0
  102. data/lib/active_merchant/billing/gateways/kushki.rb +219 -0
  103. data/lib/active_merchant/billing/gateways/latitude19.rb +411 -0
  104. data/lib/active_merchant/billing/gateways/linkpoint.rb +45 -43
  105. data/lib/active_merchant/billing/gateways/litle.rb +328 -444
  106. data/lib/active_merchant/billing/gateways/mastercard.rb +267 -0
  107. data/lib/active_merchant/billing/gateways/maxipago.rb +145 -115
  108. data/lib/active_merchant/billing/gateways/mercado_pago.rb +277 -0
  109. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +37 -19
  110. data/lib/active_merchant/billing/gateways/merchant_one.rb +13 -15
  111. data/lib/active_merchant/billing/gateways/merchant_partners.rb +245 -0
  112. data/lib/active_merchant/billing/gateways/merchant_ware.rb +57 -60
  113. data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +59 -48
  114. data/lib/active_merchant/billing/gateways/merchant_warrior.rb +38 -19
  115. data/lib/active_merchant/billing/gateways/mercury.rb +77 -54
  116. data/lib/active_merchant/billing/gateways/metrics_global.rb +11 -30
  117. data/lib/active_merchant/billing/gateways/micropayment.rb +183 -0
  118. data/lib/active_merchant/billing/gateways/migs.rb +81 -22
  119. data/lib/active_merchant/billing/gateways/modern_payments.rb +3 -3
  120. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +23 -25
  121. data/lib/active_merchant/billing/gateways/monei.rb +307 -0
  122. data/lib/active_merchant/billing/gateways/moneris.rb +146 -64
  123. data/lib/active_merchant/billing/gateways/moneris_us.rb +197 -53
  124. data/lib/active_merchant/billing/gateways/money_movers.rb +6 -15
  125. data/lib/active_merchant/billing/gateways/mundipagg.rb +292 -0
  126. data/lib/active_merchant/billing/gateways/nab_transact.rb +86 -64
  127. data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +165 -0
  128. data/lib/active_merchant/billing/gateways/net_registry.rb +11 -5
  129. data/lib/active_merchant/billing/gateways/netaxept.rb +21 -22
  130. data/lib/active_merchant/billing/gateways/netbanx.rb +290 -0
  131. data/lib/active_merchant/billing/gateways/netbilling.rb +70 -35
  132. data/lib/active_merchant/billing/gateways/netpay.rb +5 -6
  133. data/lib/active_merchant/billing/gateways/network_merchants.rb +241 -0
  134. data/lib/active_merchant/billing/gateways/nmi.rb +274 -10
  135. data/lib/active_merchant/billing/gateways/ogone.rb +90 -47
  136. data/lib/active_merchant/billing/gateways/omise.rb +324 -0
  137. data/lib/active_merchant/billing/gateways/openpay.rb +48 -20
  138. data/lib/active_merchant/billing/gateways/opp.rb +369 -0
  139. data/lib/active_merchant/billing/gateways/optimal_payment.rb +79 -44
  140. data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +22 -21
  141. data/lib/active_merchant/billing/gateways/orbital.rb +346 -102
  142. data/lib/active_merchant/billing/gateways/pac_net_raven.rb +48 -29
  143. data/lib/active_merchant/billing/gateways/pagarme.rb +246 -0
  144. data/lib/active_merchant/billing/gateways/pago_facil.rb +122 -0
  145. data/lib/active_merchant/billing/gateways/pay_conex.rb +245 -0
  146. data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +67 -48
  147. data/lib/active_merchant/billing/gateways/pay_hub.rb +213 -0
  148. data/lib/active_merchant/billing/gateways/pay_junction.rb +20 -26
  149. data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +188 -0
  150. data/lib/active_merchant/billing/gateways/pay_secure.rb +7 -15
  151. data/lib/active_merchant/billing/gateways/paybox_direct.rb +40 -36
  152. data/lib/active_merchant/billing/gateways/payeezy.rb +410 -0
  153. data/lib/active_merchant/billing/gateways/payex.rb +38 -30
  154. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +62 -36
  155. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +11 -7
  156. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +3 -3
  157. data/lib/active_merchant/billing/gateways/payflow.rb +74 -27
  158. data/lib/active_merchant/billing/gateways/payflow_express.rb +77 -81
  159. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +2 -3
  160. data/lib/active_merchant/billing/gateways/payflow_uk.rb +5 -6
  161. data/lib/active_merchant/billing/gateways/payment_express.rb +54 -45
  162. data/lib/active_merchant/billing/gateways/paymentez.rb +304 -0
  163. data/lib/active_merchant/billing/gateways/paymill.rb +160 -66
  164. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +54 -7
  165. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +4 -0
  166. data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +17 -3
  167. data/lib/active_merchant/billing/gateways/paypal.rb +36 -27
  168. data/lib/active_merchant/billing/gateways/paypal_ca.rb +1 -1
  169. data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +7 -6
  170. data/lib/active_merchant/billing/gateways/paypal_express.rb +32 -4
  171. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +3 -3
  172. data/lib/active_merchant/billing/gateways/payscout.rb +2 -13
  173. data/lib/active_merchant/billing/gateways/paystation.rb +96 -88
  174. data/lib/active_merchant/billing/gateways/payu_in.rb +248 -0
  175. data/lib/active_merchant/billing/gateways/payu_latam.rb +445 -0
  176. data/lib/active_merchant/billing/gateways/payway.rb +8 -8
  177. data/lib/active_merchant/billing/gateways/pin.rb +74 -18
  178. data/lib/active_merchant/billing/gateways/plugnpay.rb +66 -76
  179. data/lib/active_merchant/billing/gateways/pro_pay.rb +326 -0
  180. data/lib/active_merchant/billing/gateways/psigate.rb +30 -30
  181. data/lib/active_merchant/billing/gateways/psl_card.rb +27 -34
  182. data/lib/active_merchant/billing/gateways/qbms.rb +65 -54
  183. data/lib/active_merchant/billing/gateways/quantum.rb +18 -18
  184. data/lib/active_merchant/billing/gateways/quickbooks.rb +290 -0
  185. data/lib/active_merchant/billing/gateways/quickpay/quickpay_common.rb +184 -0
  186. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +295 -0
  187. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +226 -0
  188. data/lib/active_merchant/billing/gateways/quickpay.rb +10 -350
  189. data/lib/active_merchant/billing/gateways/qvalent.rb +236 -0
  190. data/lib/active_merchant/billing/gateways/realex.rb +78 -48
  191. data/lib/active_merchant/billing/gateways/redsys.rb +310 -170
  192. data/lib/active_merchant/billing/gateways/s5.rb +246 -0
  193. data/lib/active_merchant/billing/gateways/safe_charge.rb +262 -0
  194. data/lib/active_merchant/billing/gateways/sage.rb +415 -119
  195. data/lib/active_merchant/billing/gateways/sage_pay.rb +195 -90
  196. data/lib/active_merchant/billing/gateways/sallie_mae.rb +11 -12
  197. data/lib/active_merchant/billing/gateways/secure_net.rb +51 -43
  198. data/lib/active_merchant/billing/gateways/secure_pay.rb +182 -10
  199. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +25 -14
  200. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +10 -18
  201. data/lib/active_merchant/billing/gateways/securion_pay.rb +264 -0
  202. data/lib/active_merchant/billing/gateways/skip_jack.rb +35 -38
  203. data/lib/active_merchant/billing/gateways/smart_ps.rb +50 -42
  204. data/lib/active_merchant/billing/gateways/so_easy_pay.rb +9 -9
  205. data/lib/active_merchant/billing/gateways/spreedly_core.rb +62 -12
  206. data/lib/active_merchant/billing/gateways/stripe.rb +536 -103
  207. data/lib/active_merchant/billing/gateways/swipe_checkout.rb +12 -18
  208. data/lib/active_merchant/billing/gateways/telr.rb +274 -0
  209. data/lib/active_merchant/billing/gateways/tns.rb +22 -0
  210. data/lib/active_merchant/billing/gateways/trans_first.rb +143 -30
  211. data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +608 -0
  212. data/lib/active_merchant/billing/gateways/transact_pro.rb +224 -0
  213. data/lib/active_merchant/billing/gateways/transax.rb +5 -6
  214. data/lib/active_merchant/billing/gateways/transnational.rb +2 -232
  215. data/lib/active_merchant/billing/gateways/trexle.rb +218 -0
  216. data/lib/active_merchant/billing/gateways/trust_commerce.rb +86 -57
  217. data/lib/active_merchant/billing/gateways/usa_epay.rb +4 -4
  218. data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +196 -89
  219. data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +157 -32
  220. data/lib/active_merchant/billing/gateways/vanco.rb +294 -0
  221. data/lib/active_merchant/billing/gateways/verifi.rb +42 -49
  222. data/lib/active_merchant/billing/gateways/viaklix.rb +11 -24
  223. data/lib/active_merchant/billing/gateways/visanet_peru.rb +233 -0
  224. data/lib/active_merchant/billing/gateways/webpay.rb +26 -28
  225. data/lib/active_merchant/billing/gateways/wepay.rb +237 -0
  226. data/lib/active_merchant/billing/gateways/wirecard.rb +153 -31
  227. data/lib/active_merchant/billing/gateways/world_net.rb +344 -0
  228. data/lib/active_merchant/billing/gateways/worldpay.rb +207 -63
  229. data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +215 -0
  230. data/lib/active_merchant/billing/gateways/worldpay_us.rb +221 -0
  231. data/lib/active_merchant/billing/gateways.rb +8 -11
  232. data/lib/active_merchant/billing/model.rb +30 -0
  233. data/lib/active_merchant/billing/network_tokenization_credit_card.rb +39 -0
  234. data/lib/active_merchant/billing/payment_token.rb +21 -0
  235. data/lib/active_merchant/billing/rails.rb +3 -0
  236. data/lib/active_merchant/billing/response.rb +31 -24
  237. data/lib/active_merchant/billing.rb +7 -1
  238. data/lib/active_merchant/connection.rb +195 -0
  239. data/lib/active_merchant/country.rb +335 -0
  240. data/lib/active_merchant/empty.rb +20 -0
  241. data/lib/active_merchant/errors.rb +35 -0
  242. data/lib/active_merchant/net_http_ssl_connection.rb +10 -0
  243. data/lib/active_merchant/network_connection_retries.rb +80 -0
  244. data/lib/active_merchant/post_data.rb +25 -0
  245. data/lib/active_merchant/posts_data.rb +92 -0
  246. data/lib/active_merchant/version.rb +1 -1
  247. data/lib/active_merchant.rb +23 -27
  248. data/lib/activemerchant.rb +1 -1
  249. data/lib/certs/cacert.pem +3988 -0
  250. data/lib/support/gateway_support.rb +7 -9
  251. data/lib/support/outbound_hosts.rb +13 -10
  252. data/lib/support/ssl_verify.rb +6 -7
  253. data/lib/support/ssl_version.rb +87 -0
  254. metadata +148 -323
  255. checksums.yaml.gz.sig +0 -0
  256. data/gem-public_cert.pem +0 -21
  257. data/lib/active_merchant/billing/expiry_date.rb +0 -34
  258. data/lib/active_merchant/billing/gateways/app55.rb +0 -185
  259. data/lib/active_merchant/billing/gateways/barclays_epdq.rb +0 -314
  260. data/lib/active_merchant/billing/gateways/certo_direct.rb +0 -277
  261. data/lib/active_merchant/billing/gateways/ideal/ideal_base.rb +0 -249
  262. data/lib/active_merchant/billing/gateways/ideal/ideal_rabobank.pem +0 -13
  263. data/lib/active_merchant/billing/gateways/ideal/ideal_response.rb +0 -29
  264. data/lib/active_merchant/billing/gateways/ideal_rabobank.rb +0 -66
  265. data/lib/active_merchant/billing/gateways/orbital/avs_result.rb +0 -93
  266. data/lib/active_merchant/billing/gateways/orbital/cvv_result.rb +0 -34
  267. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +0 -93
  268. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +0 -114
  269. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +0 -102
  270. data/lib/active_merchant/billing/gateways/samurai.rb +0 -118
  271. data/lib/active_merchant/billing/gateways/vindicia.rb +0 -361
  272. data/lib/active_merchant/billing/integrations/a1agregator/helper.rb +0 -31
  273. data/lib/active_merchant/billing/integrations/a1agregator/notification.rb +0 -186
  274. data/lib/active_merchant/billing/integrations/a1agregator/status.rb +0 -38
  275. data/lib/active_merchant/billing/integrations/a1agregator.rb +0 -26
  276. data/lib/active_merchant/billing/integrations/action_view_helper.rb +0 -74
  277. data/lib/active_merchant/billing/integrations/alipay/helper.rb +0 -34
  278. data/lib/active_merchant/billing/integrations/alipay/notification.rb +0 -101
  279. data/lib/active_merchant/billing/integrations/alipay.rb +0 -18
  280. data/lib/active_merchant/billing/integrations/authorize_net_sim/helper.rb +0 -229
  281. data/lib/active_merchant/billing/integrations/authorize_net_sim/notification.rb +0 -340
  282. data/lib/active_merchant/billing/integrations/authorize_net_sim.rb +0 -38
  283. data/lib/active_merchant/billing/integrations/bit_pay/helper.rb +0 -64
  284. data/lib/active_merchant/billing/integrations/bit_pay/notification.rb +0 -74
  285. data/lib/active_merchant/billing/integrations/bit_pay/return.rb +0 -10
  286. data/lib/active_merchant/billing/integrations/bit_pay.rb +0 -30
  287. data/lib/active_merchant/billing/integrations/bogus/helper.rb +0 -17
  288. data/lib/active_merchant/billing/integrations/bogus/notification.rb +0 -11
  289. data/lib/active_merchant/billing/integrations/bogus/return.rb +0 -10
  290. data/lib/active_merchant/billing/integrations/bogus.rb +0 -23
  291. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +0 -120
  292. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +0 -158
  293. data/lib/active_merchant/billing/integrations/chronopay/return.rb +0 -10
  294. data/lib/active_merchant/billing/integrations/chronopay.rb +0 -23
  295. data/lib/active_merchant/billing/integrations/citrus/helper.rb +0 -40
  296. data/lib/active_merchant/billing/integrations/citrus/notification.rb +0 -133
  297. data/lib/active_merchant/billing/integrations/citrus/return.rb +0 -40
  298. data/lib/active_merchant/billing/integrations/citrus.rb +0 -51
  299. data/lib/active_merchant/billing/integrations/direc_pay/helper.rb +0 -200
  300. data/lib/active_merchant/billing/integrations/direc_pay/notification.rb +0 -76
  301. data/lib/active_merchant/billing/integrations/direc_pay/return.rb +0 -32
  302. data/lib/active_merchant/billing/integrations/direc_pay/status.rb +0 -37
  303. data/lib/active_merchant/billing/integrations/direc_pay.rb +0 -41
  304. data/lib/active_merchant/billing/integrations/directebanking/helper.rb +0 -90
  305. data/lib/active_merchant/billing/integrations/directebanking/notification.rb +0 -120
  306. data/lib/active_merchant/billing/integrations/directebanking/return.rb +0 -11
  307. data/lib/active_merchant/billing/integrations/directebanking.rb +0 -47
  308. data/lib/active_merchant/billing/integrations/doku/helper.rb +0 -102
  309. data/lib/active_merchant/billing/integrations/doku/notification.rb +0 -69
  310. data/lib/active_merchant/billing/integrations/doku/return.rb +0 -10
  311. data/lib/active_merchant/billing/integrations/doku.rb +0 -24
  312. data/lib/active_merchant/billing/integrations/dotpay/helper.rb +0 -77
  313. data/lib/active_merchant/billing/integrations/dotpay/notification.rb +0 -86
  314. data/lib/active_merchant/billing/integrations/dotpay/return.rb +0 -11
  315. data/lib/active_merchant/billing/integrations/dotpay.rb +0 -22
  316. data/lib/active_merchant/billing/integrations/dwolla/common.rb +0 -23
  317. data/lib/active_merchant/billing/integrations/dwolla/helper.rb +0 -43
  318. data/lib/active_merchant/billing/integrations/dwolla/notification.rb +0 -64
  319. data/lib/active_merchant/billing/integrations/dwolla/return.rb +0 -49
  320. data/lib/active_merchant/billing/integrations/dwolla.rb +0 -23
  321. data/lib/active_merchant/billing/integrations/e_payment_plans/helper.rb +0 -34
  322. data/lib/active_merchant/billing/integrations/e_payment_plans/notification.rb +0 -84
  323. data/lib/active_merchant/billing/integrations/e_payment_plans.rb +0 -48
  324. data/lib/active_merchant/billing/integrations/easy_pay/common.rb +0 -40
  325. data/lib/active_merchant/billing/integrations/easy_pay/helper.rb +0 -36
  326. data/lib/active_merchant/billing/integrations/easy_pay/notification.rb +0 -59
  327. data/lib/active_merchant/billing/integrations/easy_pay.rb +0 -30
  328. data/lib/active_merchant/billing/integrations/epay/helper.rb +0 -55
  329. data/lib/active_merchant/billing/integrations/epay/notification.rb +0 -110
  330. data/lib/active_merchant/billing/integrations/epay.rb +0 -21
  331. data/lib/active_merchant/billing/integrations/first_data/helper.rb +0 -61
  332. data/lib/active_merchant/billing/integrations/first_data/notification.rb +0 -56
  333. data/lib/active_merchant/billing/integrations/first_data.rb +0 -38
  334. data/lib/active_merchant/billing/integrations/gestpay/common.rb +0 -42
  335. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +0 -70
  336. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +0 -85
  337. data/lib/active_merchant/billing/integrations/gestpay/return.rb +0 -10
  338. data/lib/active_merchant/billing/integrations/gestpay.rb +0 -25
  339. data/lib/active_merchant/billing/integrations/helper.rb +0 -117
  340. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +0 -58
  341. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +0 -59
  342. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +0 -68
  343. data/lib/active_merchant/billing/integrations/hi_trust.rb +0 -27
  344. data/lib/active_merchant/billing/integrations/ipay88/helper.rb +0 -118
  345. data/lib/active_merchant/billing/integrations/ipay88/notification.rb +0 -103
  346. data/lib/active_merchant/billing/integrations/ipay88/return.rb +0 -29
  347. data/lib/active_merchant/billing/integrations/ipay88.rb +0 -23
  348. data/lib/active_merchant/billing/integrations/liqpay/helper.rb +0 -43
  349. data/lib/active_merchant/billing/integrations/liqpay/notification.rb +0 -89
  350. data/lib/active_merchant/billing/integrations/liqpay/return.rb +0 -83
  351. data/lib/active_merchant/billing/integrations/liqpay.rb +0 -30
  352. data/lib/active_merchant/billing/integrations/maksuturva/helper.rb +0 -119
  353. data/lib/active_merchant/billing/integrations/maksuturva/notification.rb +0 -48
  354. data/lib/active_merchant/billing/integrations/maksuturva.rb +0 -86
  355. data/lib/active_merchant/billing/integrations/moneybookers/helper.rb +0 -75
  356. data/lib/active_merchant/billing/integrations/moneybookers/notification.rb +0 -123
  357. data/lib/active_merchant/billing/integrations/moneybookers.rb +0 -26
  358. data/lib/active_merchant/billing/integrations/nochex/helper.rb +0 -68
  359. data/lib/active_merchant/billing/integrations/nochex/notification.rb +0 -94
  360. data/lib/active_merchant/billing/integrations/nochex/return.rb +0 -10
  361. data/lib/active_merchant/billing/integrations/nochex.rb +0 -88
  362. data/lib/active_merchant/billing/integrations/notification.rb +0 -71
  363. data/lib/active_merchant/billing/integrations/paxum/common.rb +0 -24
  364. data/lib/active_merchant/billing/integrations/paxum/helper.rb +0 -42
  365. data/lib/active_merchant/billing/integrations/paxum/notification.rb +0 -33
  366. data/lib/active_merchant/billing/integrations/paxum.rb +0 -44
  367. data/lib/active_merchant/billing/integrations/pay_fast/common.rb +0 -42
  368. data/lib/active_merchant/billing/integrations/pay_fast/helper.rb +0 -50
  369. data/lib/active_merchant/billing/integrations/pay_fast/notification.rb +0 -134
  370. data/lib/active_merchant/billing/integrations/pay_fast/return.rb +0 -10
  371. data/lib/active_merchant/billing/integrations/pay_fast.rb +0 -70
  372. data/lib/active_merchant/billing/integrations/paydollar/helper.rb +0 -41
  373. data/lib/active_merchant/billing/integrations/paydollar/notification.rb +0 -60
  374. data/lib/active_merchant/billing/integrations/paydollar/return.rb +0 -15
  375. data/lib/active_merchant/billing/integrations/paydollar.rb +0 -59
  376. data/lib/active_merchant/billing/integrations/payflow_link/helper.rb +0 -116
  377. data/lib/active_merchant/billing/integrations/payflow_link/notification.rb +0 -78
  378. data/lib/active_merchant/billing/integrations/payflow_link.rb +0 -21
  379. data/lib/active_merchant/billing/integrations/paypal/helper.rb +0 -119
  380. data/lib/active_merchant/billing/integrations/paypal/notification.rb +0 -227
  381. data/lib/active_merchant/billing/integrations/paypal/return.rb +0 -10
  382. data/lib/active_merchant/billing/integrations/paypal.rb +0 -39
  383. data/lib/active_merchant/billing/integrations/paypal_payments_advanced/helper.rb +0 -15
  384. data/lib/active_merchant/billing/integrations/paypal_payments_advanced.rb +0 -20
  385. data/lib/active_merchant/billing/integrations/paysbuy/helper.rb +0 -15
  386. data/lib/active_merchant/billing/integrations/paysbuy/notification.rb +0 -39
  387. data/lib/active_merchant/billing/integrations/paysbuy.rb +0 -36
  388. data/lib/active_merchant/billing/integrations/payu_in/helper.rb +0 -76
  389. data/lib/active_merchant/billing/integrations/payu_in/notification.rb +0 -154
  390. data/lib/active_merchant/billing/integrations/payu_in/return.rb +0 -36
  391. data/lib/active_merchant/billing/integrations/payu_in.rb +0 -36
  392. data/lib/active_merchant/billing/integrations/payu_in_paisa/helper.rb +0 -19
  393. data/lib/active_merchant/billing/integrations/payu_in_paisa/notification.rb +0 -13
  394. data/lib/active_merchant/billing/integrations/payu_in_paisa/return.rb +0 -16
  395. data/lib/active_merchant/billing/integrations/payu_in_paisa.rb +0 -30
  396. data/lib/active_merchant/billing/integrations/platron/helper.rb +0 -32
  397. data/lib/active_merchant/billing/integrations/platron/notification.rb +0 -113
  398. data/lib/active_merchant/billing/integrations/platron.rb +0 -28
  399. data/lib/active_merchant/billing/integrations/pxpay/helper.rb +0 -112
  400. data/lib/active_merchant/billing/integrations/pxpay/notification.rb +0 -157
  401. data/lib/active_merchant/billing/integrations/pxpay/return.rb +0 -25
  402. data/lib/active_merchant/billing/integrations/pxpay.rb +0 -31
  403. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +0 -96
  404. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +0 -137
  405. data/lib/active_merchant/billing/integrations/quickpay.rb +0 -21
  406. data/lib/active_merchant/billing/integrations/rbkmoney/helper.rb +0 -23
  407. data/lib/active_merchant/billing/integrations/rbkmoney/notification.rb +0 -91
  408. data/lib/active_merchant/billing/integrations/rbkmoney.rb +0 -17
  409. data/lib/active_merchant/billing/integrations/return.rb +0 -42
  410. data/lib/active_merchant/billing/integrations/robokassa/common.rb +0 -19
  411. data/lib/active_merchant/billing/integrations/robokassa/helper.rb +0 -50
  412. data/lib/active_merchant/billing/integrations/robokassa/notification.rb +0 -55
  413. data/lib/active_merchant/billing/integrations/robokassa/return.rb +0 -17
  414. data/lib/active_merchant/billing/integrations/robokassa.rb +0 -49
  415. data/lib/active_merchant/billing/integrations/sage_pay_form/encryption.rb +0 -33
  416. data/lib/active_merchant/billing/integrations/sage_pay_form/helper.rb +0 -136
  417. data/lib/active_merchant/billing/integrations/sage_pay_form/notification.rb +0 -210
  418. data/lib/active_merchant/billing/integrations/sage_pay_form/return.rb +0 -31
  419. data/lib/active_merchant/billing/integrations/sage_pay_form.rb +0 -37
  420. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +0 -107
  421. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +0 -171
  422. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +0 -58
  423. data/lib/active_merchant/billing/integrations/two_checkout.rb +0 -44
  424. data/lib/active_merchant/billing/integrations/valitor/helper.rb +0 -86
  425. data/lib/active_merchant/billing/integrations/valitor/notification.rb +0 -13
  426. data/lib/active_merchant/billing/integrations/valitor/response_fields.rb +0 -97
  427. data/lib/active_merchant/billing/integrations/valitor/return.rb +0 -13
  428. data/lib/active_merchant/billing/integrations/valitor.rb +0 -33
  429. data/lib/active_merchant/billing/integrations/verkkomaksut/helper.rb +0 -88
  430. data/lib/active_merchant/billing/integrations/verkkomaksut/notification.rb +0 -59
  431. data/lib/active_merchant/billing/integrations/verkkomaksut.rb +0 -20
  432. data/lib/active_merchant/billing/integrations/web_pay/common.rb +0 -50
  433. data/lib/active_merchant/billing/integrations/web_pay/helper.rb +0 -68
  434. data/lib/active_merchant/billing/integrations/web_pay/notification.rb +0 -51
  435. data/lib/active_merchant/billing/integrations/web_pay.rb +0 -45
  436. data/lib/active_merchant/billing/integrations/webmoney/common.rb +0 -17
  437. data/lib/active_merchant/billing/integrations/webmoney/helper.rb +0 -40
  438. data/lib/active_merchant/billing/integrations/webmoney/notification.rb +0 -47
  439. data/lib/active_merchant/billing/integrations/webmoney.rb +0 -43
  440. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/common.rb +0 -104
  441. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/helper.rb +0 -145
  442. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/notification.rb +0 -101
  443. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/return.rb +0 -35
  444. data/lib/active_merchant/billing/integrations/wirecard_checkout_page.rb +0 -39
  445. data/lib/active_merchant/billing/integrations/world_pay/helper.rb +0 -101
  446. data/lib/active_merchant/billing/integrations/world_pay/notification.rb +0 -160
  447. data/lib/active_merchant/billing/integrations/world_pay.rb +0 -34
  448. data/lib/active_merchant/billing/integrations.rb +0 -17
  449. data.tar.gz.sig +0 -0
  450. metadata.gz.sig +0 -1
@@ -1,361 +0,0 @@
1
- begin
2
- require "vindicia-api"
3
- rescue LoadError
4
- raise "Could not load the vindicia-api gem. Use `gem install vindicia-api` to install it."
5
- end
6
-
7
- require 'i18n/core_ext/string/interpolate'
8
-
9
- module ActiveMerchant #:nodoc:
10
- module Billing #:nodoc:
11
-
12
- # For more information on the Vindicia Gateway please visit their {website}[http://vindicia.com/]
13
- #
14
- # The login and password are not the username and password you use to
15
- # login to the Vindicia Merchant Portal.
16
- #
17
- # ==== Recurring Billing
18
- #
19
- # AutoBills are an feature of Vindicia's API that allows for creating and managing subscriptions.
20
- #
21
- # For more information about Vindicia's API and various other services visit their {Resource Center}[http://www.vindicia.com/resources/index.html]
22
- class VindiciaGateway < Gateway
23
- self.supported_countries = %w{US CA GB AU MX BR DE KR CN HK}
24
- self.supported_cardtypes = [:visa, :master, :american_express, :discover]
25
- self.homepage_url = 'http://www.vindicia.com/'
26
- self.display_name = 'Vindicia'
27
-
28
- class_attribute :test_url, :live_url
29
-
30
- self.test_url = "https://soap.prodtest.sj.vindicia.com/soap.pl"
31
- self.live_url = "http://soap.vindicia.com/soap.pl"
32
-
33
- # Creates a new VindiciaGateway
34
- #
35
- # The gateway requires that a valid login and password be passed
36
- # in the +options+ hash.
37
- #
38
- # ==== Options
39
- #
40
- # * <tt>:login</tt> -- Vindicia SOAP login (REQUIRED)
41
- # * <tt>:password</tt> -- Vindicia SOAP password (REQUIRED)
42
- # * <tt>:api_version</tt> -- Vindicia API Version - defaults to 3.6 (OPTIONAL)
43
- # * <tt>:account_id</tt> -- Account Id which all transactions will be run against. (REQUIRED)
44
- # * <tt>:transaction_prefix</tt> -- Prefix to order id for one-time transactions - defaults to 'X' (OPTIONAL
45
- # * <tt>:min_chargeback_probability</tt> -- Minimum score for chargebacks - defaults to 65 (OPTIONAL)
46
- # * <tt>:cvn_success</tt> -- Array of valid CVN Check return values - defaults to [M, P] (OPTIONAL)
47
- # * <tt>:avs_success</tt> -- Array of valid AVS Check return values - defaults to [X, Y, A, W, Z] (OPTIONAL)
48
- def initialize(options = {})
49
- requires!(options, :login, :password)
50
- super
51
-
52
- config = lambda do |config|
53
- config.login = options[:login]
54
- config.password = options[:password]
55
- config.api_version = options[:api_version] || "3.6"
56
- config.endpoint = test? ? self.test_url : self.live_url
57
- config.namespace = "http://soap.vindicia.com"
58
- end
59
-
60
- if Vindicia.config.is_configured?
61
- config.call(Vindicia.config)
62
- else
63
- Vindicia.configure(&config)
64
- end
65
-
66
- requires!(options, :account_id)
67
- @account_id = options[:account_id]
68
-
69
- @transaction_prefix = options[:transaction_prefix] || "X"
70
-
71
- @min_chargeback_probability = options[:min_chargeback_probability] || 65
72
- @cvn_success = options[:cvn_success] || %w{M P}
73
- @avs_success = options[:avs_success] || %w{X Y A W Z}
74
-
75
- @allowed_authorization_statuses = %w{Authorized}
76
- end
77
-
78
- # Perform a purchase, which is essentially an authorization and capture in a single operation.
79
- #
80
- # ==== Parameters
81
- #
82
- # * <tt>money</tt> -- The amount to be purchased as an Integer value in cents.
83
- # * <tt>creditcard</tt> -- The CreditCard details for the transaction.
84
- # * <tt>options</tt> -- A hash of optional parameters.
85
- def purchase(money, creditcard, options = {})
86
- response = authorize(money, creditcard, options)
87
- return response if !response.success? || response.fraud_review?
88
-
89
- capture(money, response.authorization, options)
90
- end
91
-
92
- # Performs an authorization, which reserves the funds on the customer's credit card, but does not
93
- # charge the card.
94
- #
95
- # ==== Parameters
96
- #
97
- # * <tt>money</tt> -- The amount to be authorized as an Integer value in cents.
98
- # * <tt>creditcard</tt> -- The CreditCard details for the transaction.
99
- # * <tt>options</tt> -- A hash of optional parameters.
100
- def authorize(money, creditcard, options = {})
101
- vindicia_transaction = authorize_transaction(money, creditcard, options)
102
- response = check_transaction(vindicia_transaction)
103
-
104
- # if this response is under fraud review because of our AVS/CVV checks void the transaction
105
- if !response.success? && response.fraud_review? && !response.authorization.blank?
106
- void_response = void([vindicia_transaction[:transaction][:merchantTransactionId]], options)
107
- if void_response.success?
108
- return response
109
- else
110
- return void_response
111
- end
112
- end
113
-
114
- response
115
- end
116
-
117
- # Captures the funds from an authorized transaction.
118
- #
119
- # ==== Parameters
120
- #
121
- # * <tt>money</tt> -- The amount to be captured as an Integer value in cents.
122
- # * <tt>identification</tt> -- The authorization returned from the previous authorize request.
123
- def capture(money, identification, options = {})
124
- response = post(Vindicia::Transaction.capture({
125
- :transactions => [{ :merchantTransactionId => identification }]
126
- }))
127
-
128
- if response[:return][:returnCode] != '200' || response[:qtyFail].to_i > 0
129
- return fail(response)
130
- end
131
-
132
- success(response, identification)
133
- end
134
-
135
- # Void a previous transaction
136
- #
137
- # ==== Parameters
138
- #
139
- # * <tt>identification</tt> - The authorization returned from the previous authorize request.
140
- # * <tt>options</tt> - Extra options (currently only :ip used)
141
- def void(identification, options = {})
142
- response = post(Vindicia::Transaction.cancel({
143
- :transactions => [{
144
- :account => { :merchantAccountId => @account_id },
145
- :merchantTransactionId => identification,
146
- :sourceIp => options[:ip]
147
- }]
148
- }))
149
-
150
- if response[:return][:returnCode] == '200' && response[:qtyFail].to_i == 0
151
- success(response, identification)
152
- else
153
- fail(response)
154
- end
155
- end
156
-
157
- # Perform a recurring billing, which is essentially a purchase and autobill setup in a single operation.
158
- #
159
- # ==== Parameters
160
- #
161
- # * <tt>money</tt> -- The amount to be purchased as an Integer value in cents.
162
- # * <tt>creditcard</tt> -- The CreditCard details for the transaction.
163
- # * <tt>options</tt> -- A hash of parameters.
164
- #
165
- # ==== Options
166
- #
167
- # * <tt>:product_sku</tt> -- The subscription product's sku
168
- # * <tt>:autobill_prefix</tt> -- Prefix to order id for subscriptions - defaults to 'A' (OPTIONAL)
169
- def recurring(money, creditcard, options={})
170
- options[:recurring] = true
171
- @autobill_prefix = options[:autobill_prefix] || "A"
172
-
173
- response = authorize(money, creditcard, options)
174
- return response if !response.success? || response.fraud_review?
175
-
176
- capture_resp = capture(money, response.authorization, options)
177
- return capture_resp if !response.success?
178
-
179
- # Setting up a recurring AutoBill requires an associated product
180
- requires!(options, :product_sku)
181
- autobill_response = check_subscription(authorize_subscription(options.merge(:product_sku => options[:product_sku])))
182
-
183
- if autobill_response.success?
184
- autobill_response
185
- else
186
- # If the AutoBill fails to set-up, void the transaction and return it as the response
187
- void_response = void(capture_resp.authorization, options)
188
- if void_response.success?
189
- return autobill_response
190
- else
191
- return void_response
192
- end
193
- end
194
- end
195
-
196
- protected
197
-
198
- def post(body)
199
- parse(ssl_post(Vindicia.config.endpoint, body, "Content-Type" => "text/xml"))
200
- end
201
-
202
- def parse(response)
203
- # Vindicia always returns in the form of request_type_response => { actual_response }
204
- Hash.from_xml(response)["Envelope"]["Body"].values.first.with_indifferent_access
205
- end
206
-
207
- def check_transaction(vindicia_transaction)
208
- if vindicia_transaction[:return][:returnCode] == '200'
209
- status_log = vindicia_transaction[:transaction][:statusLog].first
210
- if status_log[:creditCardStatus]
211
- avs = status_log[:creditCardStatus][:avsCode]
212
- cvn = status_log[:creditCardStatus][:cvnCode]
213
- end
214
-
215
- if @allowed_authorization_statuses.include?(status_log[:status]) &&
216
- check_cvn(cvn) && check_avs(avs)
217
-
218
- success(vindicia_transaction,
219
- vindicia_transaction[:transaction][:merchantTransactionId],
220
- avs, cvn)
221
- else
222
- # If the transaction is authorized, but it didn't pass our AVS/CVV checks send the authorization along so
223
- # that is gets voided. Otherwise, send no authorization.
224
- fail(vindicia_transaction, avs, cvn, false,
225
- @allowed_authorization_statuses.include?(status_log[:status]) ? vindicia_transaction[:transaction][:merchantTransactionId] : "")
226
- end
227
- else
228
- # 406 = Chargeback risk score is higher than minChargebackProbability, transaction not authorized.
229
- fail(vindicia_transaction, nil, nil, vindicia_transaction[:return][:return_code] == '406')
230
- end
231
- end
232
-
233
- def authorize_transaction(money, creditcard, options)
234
- parameters = {
235
- :amount => amount(money),
236
- :currency => options[:currency] || currency(money)
237
- }
238
-
239
- add_account_data(parameters, options)
240
- add_customer_data(parameters, options)
241
- add_payment_source(parameters, creditcard, options)
242
-
243
- post(Vindicia::Transaction.auth({
244
- :transaction => parameters,
245
- :minChargebackProbability => @min_chargeback_probability
246
- }))
247
- end
248
-
249
- def add_account_data(parameters, options)
250
- parameters[:account] = { :merchantAccountId => @account_id }
251
- parameters[:sourceIp] = options[:ip] if options[:ip]
252
- end
253
-
254
- def add_customer_data(parameters, options)
255
- parameters[:merchantTransactionId] = transaction_id(options[:order_id])
256
- parameters[:shippingAddress] = convert_am_address_to_vindicia(options[:shipping_address])
257
-
258
- # Transaction items must be provided for tax purposes
259
- requires!(options, :line_items)
260
- parameters[:transactionItems] = options[:line_items]
261
-
262
- if options[:recurring]
263
- parameters[:nameValues] = [{:name => 'merchantAutoBillIdentifier', :value => autobill_id(options[:order_id])}]
264
- end
265
- end
266
-
267
- def add_payment_source(parameters, creditcard, options)
268
- parameters[:sourcePaymentMethod] = {
269
- :type => 'CreditCard',
270
- :creditCard => { :account => creditcard.number, :expirationDate => "%4d%02d" % [creditcard.year, creditcard.month] },
271
- :accountHolderName => creditcard.name,
272
- :nameValues => [{ :name => 'CVN', :value => creditcard.verification_value }],
273
- :billingAddress => convert_am_address_to_vindicia(options[:billing_address] || options[:address]),
274
- :customerSpecifiedType => creditcard.brand.capitalize,
275
- :active => !!options[:recurring]
276
- }
277
- end
278
-
279
- def authorize_subscription(options)
280
- parameters = {}
281
-
282
- add_account_data(parameters, options)
283
- add_subscription_information(parameters, options)
284
-
285
- post(Vindicia::AutoBill.update({
286
- :autobill => parameters,
287
- :validatePaymentMethod => false,
288
- :minChargebackProbability => 100
289
- }))
290
- end
291
-
292
- def check_subscription(vindicia_transaction)
293
- if vindicia_transaction[:return][:returnCode] == '200'
294
- if vindicia_transaction[:autobill] && vindicia_transaction[:autobill][:status] == "Active"
295
- success(vindicia_transaction,
296
- vindicia_transaction[:autobill][:merchantAutoBillId])
297
- else
298
- fail(vindicia_transaction)
299
- end
300
- else
301
- fail(vindicia_transaction)
302
- end
303
- end
304
-
305
- def add_subscription_information(parameters, options)
306
- requires!(options, :product_sku)
307
-
308
- if options[:shipping_address]
309
- parameters[:account][:shipping_address] = options[:shipping_address]
310
- end
311
-
312
- parameters[:merchantAutoBillId] = autobill_id(options[:order_id])
313
- parameters[:product] = { :merchantProductId => options[:product_sku] }
314
- end
315
-
316
- def check_avs(avs)
317
- avs.blank? || @avs_success.include?(avs)
318
- end
319
-
320
- def check_cvn(cvn)
321
- cvn.blank? || @cvn_success.include?(cvn)
322
- end
323
-
324
- def success(response, authorization, avs_code = nil, cvn_code = nil)
325
- ActiveMerchant::Billing::Response.new(true, response[:return][:returnString], response,
326
- { :fraud_review => false, :authorization => authorization, :test => test?,
327
- :avs_result => { :code => avs_code }, :cvv_result => cvn_code })
328
- end
329
-
330
- def fail(response, avs_code = nil, cvn_code = nil, fraud_review = false, authorization = "")
331
- ActiveMerchant::Billing::Response.new(false, response[:return][:returnString], response,
332
- { :fraud_review => fraud_review || !authorization.blank?,
333
- :authorization => authorization, :test => test?,
334
- :avs_result => { :code => avs_code }, :cvv_result => cvn_code })
335
-
336
- end
337
-
338
- def autobill_id(order_id)
339
- "#{@autobill_prefix}#{order_id}"
340
- end
341
-
342
- def transaction_id(order_id)
343
- "#{@transaction_prefix}#{order_id}"
344
- end
345
-
346
- # Converts valid ActiveMerchant address hash to proper Vindicia format
347
- def convert_am_address_to_vindicia(address)
348
- return if address.nil?
349
-
350
- convs = { :address1 => :addr1, :address2 => :addr2,
351
- :state => :district, :zip => :postalCode }
352
-
353
- vindicia_address = {}
354
- address.each do |key, val|
355
- vindicia_address[convs[key] || key] = val
356
- end
357
- vindicia_address
358
- end
359
- end
360
- end
361
- end
@@ -1,31 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- module Integrations #:nodoc:
4
- module A1agregator
5
- class Helper < ActiveMerchant::Billing::Integrations::Helper
6
-
7
- # public key
8
- mapping :account, 'key'
9
-
10
- mapping :amount, 'cost'
11
-
12
- mapping :order, 'order_id'
13
-
14
- mapping :customer, :email => 'email',
15
- :phone => 'phone_number'
16
-
17
- # payment description
18
- mapping :credential2, 'name'
19
-
20
- mapping :credential3, 'comment'
21
-
22
- # on error
23
- # 1 - raise error
24
- # 0 - redirect
25
- mapping :credential4, 'verbose'
26
-
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,186 +0,0 @@
1
- require 'net/http'
2
-
3
- module ActiveMerchant #:nodoc:
4
- module Billing #:nodoc:
5
- module Integrations #:nodoc:
6
- module A1agregator
7
- class Notification < ActiveMerchant::Billing::Integrations::Notification
8
-
9
- self.production_ips = [
10
- '78.108.178.206',
11
- '79.137.235.129',
12
- '95.163.96.79',
13
- '212.24.38.100'
14
- ]
15
-
16
- def initialize(*args)
17
- super
18
- guess_notification_type
19
- end
20
-
21
- # Simple notification request params:
22
- # tid
23
- # name
24
- # comment
25
- # partner_id
26
- # service_id
27
- # order_id
28
- # type
29
- # partner_income
30
- # system_income
31
-
32
- def complete?
33
- true
34
- end
35
-
36
- def transaction_id
37
- params['tid']
38
- end
39
-
40
- def title
41
- params['name']
42
- end
43
-
44
- def comment
45
- params['comment']
46
- end
47
-
48
- def partner_id
49
- params['partner_id']
50
- end
51
-
52
- def service_id
53
- params['service_id']
54
- end
55
-
56
- def item_id
57
- params['order_id']
58
- end
59
-
60
- def type
61
- params['type']
62
- end
63
-
64
- def partner_income
65
- params['partner_income']
66
- end
67
-
68
- def system_income
69
- params['system_income']
70
- end
71
-
72
- # Additional notification request params:
73
- # tid
74
- # name
75
- # comment
76
- # partner_id
77
- # service_id
78
- # order_id
79
- # type
80
- # cost
81
- # income_total
82
- # income
83
- # partner_income
84
- # system_income
85
- # command
86
- # phone_number
87
- # email
88
- # resultStr
89
- # date_created
90
- # version
91
- # check
92
-
93
- def inclome_total
94
- params['income_total']
95
- end
96
-
97
- def income
98
- params['income']
99
- end
100
-
101
- def partner_income
102
- params['partner_income']
103
- end
104
-
105
- def system_income
106
- params['system_income']
107
- end
108
-
109
- def command
110
- params['command']
111
- end
112
-
113
- def phone_number
114
- params['phone_number']
115
- end
116
-
117
- def payer_email
118
- params['email']
119
- end
120
-
121
- def result_string
122
- params['resultStr']
123
- end
124
-
125
- def received_at
126
- params['date_created']
127
- end
128
-
129
- def version
130
- params['version']
131
- end
132
-
133
- def security_key
134
- params[A1agregator.signature_parameter_name].to_s.downcase
135
- end
136
-
137
- # the money amount we received in X.2 decimal.
138
- alias_method :gross, :system_income
139
-
140
- def currency
141
- 'RUB'
142
- end
143
-
144
- # Was this a test transaction?
145
- def test?
146
- params['test'] == '1'
147
- end
148
-
149
- def simple_notification?
150
- @notification_type == :simple
151
- end
152
-
153
- def additional_notification?
154
- @notification_type == :additional
155
- end
156
-
157
- def acknowledge(authcode = nil)
158
- security_key == signature
159
- end
160
-
161
- private
162
-
163
- def signature
164
- data = "#{params['tid']}\
165
- #{params['name']}\
166
- #{params['comment']}\
167
- #{params['partner_id']}\
168
- #{params['service_id']}\
169
- #{params['order_id']}\
170
- #{params['type']}\
171
- #{params['partner_income']}\
172
- #{params['system_income']}\
173
- #{params['test']}\
174
- #{@options[:secret]}"
175
- Digest::MD5.hexdigest(data)
176
- end
177
-
178
- def guess_notification_type
179
- @notification_type = params['version'] ? :additional : :simple
180
- end
181
-
182
- end
183
- end
184
- end
185
- end
186
- end
@@ -1,38 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- module Integrations #:nodoc:
4
- module A1agregator
5
-
6
- class Status
7
- include PostsData
8
-
9
- STATUS_TEST_URL = 'https://partner.a1pay.ru/a1lite/info/'
10
-
11
- attr_accessor :login, :password
12
-
13
- def initialize(login, password)
14
- @login, @password = login, password
15
- end
16
-
17
- # agregator provides two methods:
18
- # by tid - transaction id
19
- # by order_id & service_id
20
- def update(options = {})
21
- data = PostData.new
22
- data[:user] = @login
23
- data[:pass] = @password
24
- if options[:tid]
25
- data[:tid] = options[:tid]
26
- else
27
- data[:ord_id] = options[:ord_id]
28
- data[:service_id] = options[:service_id]
29
- end
30
-
31
- ssl_post(STATUS_TEST_URL, data.to_post_data)
32
- end
33
-
34
- end
35
- end
36
- end
37
- end
38
- end
@@ -1,26 +0,0 @@
1
- require File.dirname(__FILE__) + '/a1agregator/helper.rb'
2
- require File.dirname(__FILE__) + '/a1agregator/notification.rb'
3
- require File.dirname(__FILE__) + '/a1agregator/status.rb'
4
-
5
- module ActiveMerchant #:nodoc:
6
- module Billing #:nodoc:
7
- module Integrations #:nodoc:
8
- module A1agregator
9
-
10
- mattr_accessor :service_url
11
- self.service_url = 'https://partner.a1agregator.ru/a1lite/input/'
12
-
13
- mattr_accessor :signature_parameter_name
14
- self.signature_parameter_name = 'check'
15
-
16
- def self.notification(*args)
17
- Notification.new(*args)
18
- end
19
-
20
- def self.status(login, password)
21
- Status.new(login, password)
22
- end
23
- end
24
- end
25
- end
26
- end