swiss-crm-activemerchant 1.0.12

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 (287) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +4033 -0
  3. data/CONTRIBUTORS +568 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README.md +252 -0
  6. data/lib/active_merchant/billing/apple_pay_payment_token.rb +22 -0
  7. data/lib/active_merchant/billing/avs_result.rb +95 -0
  8. data/lib/active_merchant/billing/base.rb +48 -0
  9. data/lib/active_merchant/billing/check.rb +112 -0
  10. data/lib/active_merchant/billing/compatibility.rb +118 -0
  11. data/lib/active_merchant/billing/credit_card.rb +451 -0
  12. data/lib/active_merchant/billing/credit_card_formatting.rb +24 -0
  13. data/lib/active_merchant/billing/credit_card_methods.rb +512 -0
  14. data/lib/active_merchant/billing/cvv_result.rb +37 -0
  15. data/lib/active_merchant/billing/gateway.rb +332 -0
  16. data/lib/active_merchant/billing/gateways/adyen.rb +774 -0
  17. data/lib/active_merchant/billing/gateways/airwallex.rb +370 -0
  18. data/lib/active_merchant/billing/gateways/alelo.rb +256 -0
  19. data/lib/active_merchant/billing/gateways/allied_wallet.rb +205 -0
  20. data/lib/active_merchant/billing/gateways/authorize_net.rb +1125 -0
  21. data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +424 -0
  22. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +977 -0
  23. data/lib/active_merchant/billing/gateways/axcessms.rb +242 -0
  24. data/lib/active_merchant/billing/gateways/balanced.rb +263 -0
  25. data/lib/active_merchant/billing/gateways/bambora_apac.rb +222 -0
  26. data/lib/active_merchant/billing/gateways/bank_frick.rb +225 -0
  27. data/lib/active_merchant/billing/gateways/banwire.rb +116 -0
  28. data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +397 -0
  29. data/lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb +15 -0
  30. data/lib/active_merchant/billing/gateways/be2bill.rb +131 -0
  31. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +474 -0
  32. data/lib/active_merchant/billing/gateways/beanstream.rb +238 -0
  33. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +57 -0
  34. data/lib/active_merchant/billing/gateways/blue_pay.rb +549 -0
  35. data/lib/active_merchant/billing/gateways/blue_snap.rb +644 -0
  36. data/lib/active_merchant/billing/gateways/bogus.rb +190 -0
  37. data/lib/active_merchant/billing/gateways/borgun.rb +272 -0
  38. data/lib/active_merchant/billing/gateways/bpoint.rb +277 -0
  39. data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +28 -0
  40. data/lib/active_merchant/billing/gateways/braintree/token_nonce.rb +113 -0
  41. data/lib/active_merchant/billing/gateways/braintree.rb +19 -0
  42. data/lib/active_merchant/billing/gateways/braintree_blue.rb +952 -0
  43. data/lib/active_merchant/billing/gateways/braintree_orange.rb +19 -0
  44. data/lib/active_merchant/billing/gateways/bridge_pay.rb +244 -0
  45. data/lib/active_merchant/billing/gateways/cams.rb +230 -0
  46. data/lib/active_merchant/billing/gateways/card_connect.rb +338 -0
  47. data/lib/active_merchant/billing/gateways/card_save.rb +21 -0
  48. data/lib/active_merchant/billing/gateways/card_stream.rb +394 -0
  49. data/lib/active_merchant/billing/gateways/cardknox.rb +327 -0
  50. data/lib/active_merchant/billing/gateways/cardprocess.rb +256 -0
  51. data/lib/active_merchant/billing/gateways/cashnet.rb +235 -0
  52. data/lib/active_merchant/billing/gateways/cc5.rb +198 -0
  53. data/lib/active_merchant/billing/gateways/cecabank.rb +249 -0
  54. data/lib/active_merchant/billing/gateways/cenpos.rb +328 -0
  55. data/lib/active_merchant/billing/gateways/checkout.rb +212 -0
  56. data/lib/active_merchant/billing/gateways/checkout_v2.rb +587 -0
  57. data/lib/active_merchant/billing/gateways/citrus_pay.rb +21 -0
  58. data/lib/active_merchant/billing/gateways/clearhaus.rb +219 -0
  59. data/lib/active_merchant/billing/gateways/commerce_hub.rb +366 -0
  60. data/lib/active_merchant/billing/gateways/commercegate.rb +142 -0
  61. data/lib/active_merchant/billing/gateways/conekta.rb +230 -0
  62. data/lib/active_merchant/billing/gateways/creditcall.rb +272 -0
  63. data/lib/active_merchant/billing/gateways/credorax.rb +526 -0
  64. data/lib/active_merchant/billing/gateways/ct_payment.rb +269 -0
  65. data/lib/active_merchant/billing/gateways/culqi.rb +279 -0
  66. data/lib/active_merchant/billing/gateways/cyber_source/cyber_source_common.rb +36 -0
  67. data/lib/active_merchant/billing/gateways/cyber_source.rb +1148 -0
  68. data/lib/active_merchant/billing/gateways/cyber_source_rest.rb +454 -0
  69. data/lib/active_merchant/billing/gateways/d_local.rb +343 -0
  70. data/lib/active_merchant/billing/gateways/data_cash.rb +302 -0
  71. data/lib/active_merchant/billing/gateways/decidir.rb +358 -0
  72. data/lib/active_merchant/billing/gateways/decidir_plus.rb +344 -0
  73. data/lib/active_merchant/billing/gateways/dibs.rb +199 -0
  74. data/lib/active_merchant/billing/gateways/digitzs.rb +295 -0
  75. data/lib/active_merchant/billing/gateways/ebanx.rb +346 -0
  76. data/lib/active_merchant/billing/gateways/efsnet.rb +215 -0
  77. data/lib/active_merchant/billing/gateways/elavon.rb +475 -0
  78. data/lib/active_merchant/billing/gateways/element.rb +406 -0
  79. data/lib/active_merchant/billing/gateways/epay.rb +296 -0
  80. data/lib/active_merchant/billing/gateways/evo_ca.rb +307 -0
  81. data/lib/active_merchant/billing/gateways/eway.rb +226 -0
  82. data/lib/active_merchant/billing/gateways/eway_managed.rb +289 -0
  83. data/lib/active_merchant/billing/gateways/eway_rapid.rb +578 -0
  84. data/lib/active_merchant/billing/gateways/exact.rb +219 -0
  85. data/lib/active_merchant/billing/gateways/ezic.rb +195 -0
  86. data/lib/active_merchant/billing/gateways/fat_zebra.rb +223 -0
  87. data/lib/active_merchant/billing/gateways/federated_canada.rb +158 -0
  88. data/lib/active_merchant/billing/gateways/finansbank.rb +22 -0
  89. data/lib/active_merchant/billing/gateways/first_giving.rb +143 -0
  90. data/lib/active_merchant/billing/gateways/first_pay.rb +182 -0
  91. data/lib/active_merchant/billing/gateways/firstdata_e4.rb +452 -0
  92. data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +505 -0
  93. data/lib/active_merchant/billing/gateways/flo2cash.rb +215 -0
  94. data/lib/active_merchant/billing/gateways/flo2cash_simple.rb +20 -0
  95. data/lib/active_merchant/billing/gateways/fluidpay.rb +275 -0
  96. data/lib/active_merchant/billing/gateways/forte.rb +286 -0
  97. data/lib/active_merchant/billing/gateways/garanti.rb +256 -0
  98. data/lib/active_merchant/billing/gateways/global_collect.rb +580 -0
  99. data/lib/active_merchant/billing/gateways/global_transport.rb +193 -0
  100. data/lib/active_merchant/billing/gateways/hdfc.rb +205 -0
  101. data/lib/active_merchant/billing/gateways/hps.rb +472 -0
  102. data/lib/active_merchant/billing/gateways/iats_payments.rb +312 -0
  103. data/lib/active_merchant/billing/gateways/in_context_paypal_express.rb +15 -0
  104. data/lib/active_merchant/billing/gateways/inspire.rb +213 -0
  105. data/lib/active_merchant/billing/gateways/instapay.rb +159 -0
  106. data/lib/active_merchant/billing/gateways/ipg.rb +420 -0
  107. data/lib/active_merchant/billing/gateways/ipp.rb +176 -0
  108. data/lib/active_merchant/billing/gateways/iridium.rb +467 -0
  109. data/lib/active_merchant/billing/gateways/itransact.rb +448 -0
  110. data/lib/active_merchant/billing/gateways/iveri.rb +290 -0
  111. data/lib/active_merchant/billing/gateways/ixopay.rb +320 -0
  112. data/lib/active_merchant/billing/gateways/jetpay.rb +395 -0
  113. data/lib/active_merchant/billing/gateways/jetpay_v2.rb +432 -0
  114. data/lib/active_merchant/billing/gateways/klarna.rb +317 -0
  115. data/lib/active_merchant/billing/gateways/komoju.rb +115 -0
  116. data/lib/active_merchant/billing/gateways/kushki.rb +297 -0
  117. data/lib/active_merchant/billing/gateways/latitude19.rb +412 -0
  118. data/lib/active_merchant/billing/gateways/linkpoint.rb +448 -0
  119. data/lib/active_merchant/billing/gateways/litle.rb +643 -0
  120. data/lib/active_merchant/billing/gateways/mastercard.rb +286 -0
  121. data/lib/active_merchant/billing/gateways/maxipago.rb +220 -0
  122. data/lib/active_merchant/billing/gateways/mercado_pago.rb +348 -0
  123. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +228 -0
  124. data/lib/active_merchant/billing/gateways/merchant_one.rb +110 -0
  125. data/lib/active_merchant/billing/gateways/merchant_partners.rb +245 -0
  126. data/lib/active_merchant/billing/gateways/merchant_ware.rb +313 -0
  127. data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +284 -0
  128. data/lib/active_merchant/billing/gateways/merchant_warrior.rb +248 -0
  129. data/lib/active_merchant/billing/gateways/mercury.rb +352 -0
  130. data/lib/active_merchant/billing/gateways/metrics_global.rb +293 -0
  131. data/lib/active_merchant/billing/gateways/micropayment.rb +182 -0
  132. data/lib/active_merchant/billing/gateways/migs/migs_codes.rb +100 -0
  133. data/lib/active_merchant/billing/gateways/migs.rb +329 -0
  134. data/lib/active_merchant/billing/gateways/mit.rb +260 -0
  135. data/lib/active_merchant/billing/gateways/modern_payments.rb +37 -0
  136. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +215 -0
  137. data/lib/active_merchant/billing/gateways/moka.rb +290 -0
  138. data/lib/active_merchant/billing/gateways/monei.rb +424 -0
  139. data/lib/active_merchant/billing/gateways/moneris.rb +488 -0
  140. data/lib/active_merchant/billing/gateways/money_movers.rb +150 -0
  141. data/lib/active_merchant/billing/gateways/mundipagg.rb +366 -0
  142. data/lib/active_merchant/billing/gateways/nab_transact.rb +299 -0
  143. data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +163 -0
  144. data/lib/active_merchant/billing/gateways/net_registry.rb +198 -0
  145. data/lib/active_merchant/billing/gateways/netaxept.rb +180 -0
  146. data/lib/active_merchant/billing/gateways/netbanx.rb +376 -0
  147. data/lib/active_merchant/billing/gateways/netbilling.rb +229 -0
  148. data/lib/active_merchant/billing/gateways/netpay.rb +223 -0
  149. data/lib/active_merchant/billing/gateways/network_merchants.rb +238 -0
  150. data/lib/active_merchant/billing/gateways/nmi.rb +396 -0
  151. data/lib/active_merchant/billing/gateways/ogone.rb +509 -0
  152. data/lib/active_merchant/billing/gateways/omise.rb +323 -0
  153. data/lib/active_merchant/billing/gateways/openpay.rb +246 -0
  154. data/lib/active_merchant/billing/gateways/opp.rb +394 -0
  155. data/lib/active_merchant/billing/gateways/optimal_payment.rb +331 -0
  156. data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +45 -0
  157. data/lib/active_merchant/billing/gateways/orbital.rb +1267 -0
  158. data/lib/active_merchant/billing/gateways/pac_net_raven.rb +206 -0
  159. data/lib/active_merchant/billing/gateways/pagarme.rb +239 -0
  160. data/lib/active_merchant/billing/gateways/pago_facil.rb +120 -0
  161. data/lib/active_merchant/billing/gateways/pay_arc.rb +392 -0
  162. data/lib/active_merchant/billing/gateways/pay_conex.rb +245 -0
  163. data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +277 -0
  164. data/lib/active_merchant/billing/gateways/pay_hub.rb +213 -0
  165. data/lib/active_merchant/billing/gateways/pay_junction.rb +390 -0
  166. data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +206 -0
  167. data/lib/active_merchant/billing/gateways/pay_secure.rb +110 -0
  168. data/lib/active_merchant/billing/gateways/pay_trace.rb +450 -0
  169. data/lib/active_merchant/billing/gateways/paybox_direct.rb +224 -0
  170. data/lib/active_merchant/billing/gateways/payeezy.rb +513 -0
  171. data/lib/active_merchant/billing/gateways/payex.rb +409 -0
  172. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +235 -0
  173. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +42 -0
  174. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
  175. data/lib/active_merchant/billing/gateways/payflow.rb +473 -0
  176. data/lib/active_merchant/billing/gateways/payflow_express.rb +220 -0
  177. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +14 -0
  178. data/lib/active_merchant/billing/gateways/payflow_uk.rb +20 -0
  179. data/lib/active_merchant/billing/gateways/payment_express.rb +373 -0
  180. data/lib/active_merchant/billing/gateways/paymentez.rb +365 -0
  181. data/lib/active_merchant/billing/gateways/paymill.rb +369 -0
  182. data/lib/active_merchant/billing/gateways/paynetworx.rb +228 -0
  183. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +718 -0
  184. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +69 -0
  185. data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +262 -0
  186. data/lib/active_merchant/billing/gateways/paypal.rb +136 -0
  187. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  188. data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +44 -0
  189. data/lib/active_merchant/billing/gateways/paypal_express.rb +272 -0
  190. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +30 -0
  191. data/lib/active_merchant/billing/gateways/paypal_standard.rb +281 -0
  192. data/lib/active_merchant/billing/gateways/paysafe.rb +420 -0
  193. data/lib/active_merchant/billing/gateways/payscout.rb +159 -0
  194. data/lib/active_merchant/billing/gateways/paystation.rb +204 -0
  195. data/lib/active_merchant/billing/gateways/payu_in.rb +249 -0
  196. data/lib/active_merchant/billing/gateways/payu_latam.rb +482 -0
  197. data/lib/active_merchant/billing/gateways/payway.rb +207 -0
  198. data/lib/active_merchant/billing/gateways/payway_dot_com.rb +253 -0
  199. data/lib/active_merchant/billing/gateways/pin.rb +273 -0
  200. data/lib/active_merchant/billing/gateways/pixxels.rb +263 -0
  201. data/lib/active_merchant/billing/gateways/plexo.rb +308 -0
  202. data/lib/active_merchant/billing/gateways/plugnpay.rb +283 -0
  203. data/lib/active_merchant/billing/gateways/priority.rb +392 -0
  204. data/lib/active_merchant/billing/gateways/pro_pay.rb +325 -0
  205. data/lib/active_merchant/billing/gateways/psigate.rb +227 -0
  206. data/lib/active_merchant/billing/gateways/psl_card.rb +295 -0
  207. data/lib/active_merchant/billing/gateways/qbms.rb +302 -0
  208. data/lib/active_merchant/billing/gateways/quantum.rb +274 -0
  209. data/lib/active_merchant/billing/gateways/quickbooks.rb +377 -0
  210. data/lib/active_merchant/billing/gateways/quickpay/quickpay_common.rb +184 -0
  211. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +297 -0
  212. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +226 -0
  213. data/lib/active_merchant/billing/gateways/quickpay.rb +24 -0
  214. data/lib/active_merchant/billing/gateways/qvalent.rb +305 -0
  215. data/lib/active_merchant/billing/gateways/rapyd.rb +319 -0
  216. data/lib/active_merchant/billing/gateways/reach.rb +277 -0
  217. data/lib/active_merchant/billing/gateways/realex.rb +400 -0
  218. data/lib/active_merchant/billing/gateways/redsys.rb +723 -0
  219. data/lib/active_merchant/billing/gateways/s5.rb +247 -0
  220. data/lib/active_merchant/billing/gateways/safe_charge.rb +298 -0
  221. data/lib/active_merchant/billing/gateways/sage.rb +446 -0
  222. data/lib/active_merchant/billing/gateways/sage_pay.rb +434 -0
  223. data/lib/active_merchant/billing/gateways/sallie_mae.rb +141 -0
  224. data/lib/active_merchant/billing/gateways/secure_net.rb +260 -0
  225. data/lib/active_merchant/billing/gateways/secure_pay.rb +191 -0
  226. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +290 -0
  227. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +103 -0
  228. data/lib/active_merchant/billing/gateways/securion_pay.rb +305 -0
  229. data/lib/active_merchant/billing/gateways/shift4.rb +345 -0
  230. data/lib/active_merchant/billing/gateways/simetrik.rb +368 -0
  231. data/lib/active_merchant/billing/gateways/skip_jack.rb +450 -0
  232. data/lib/active_merchant/billing/gateways/smart_ps.rb +274 -0
  233. data/lib/active_merchant/billing/gateways/so_easy_pay.rb +194 -0
  234. data/lib/active_merchant/billing/gateways/spreedly_core.rb +354 -0
  235. data/lib/active_merchant/billing/gateways/stripe.rb +866 -0
  236. data/lib/active_merchant/billing/gateways/stripe_payment_intents.rb +602 -0
  237. data/lib/active_merchant/billing/gateways/swipe_checkout.rb +151 -0
  238. data/lib/active_merchant/billing/gateways/telr.rb +273 -0
  239. data/lib/active_merchant/billing/gateways/tns.rb +23 -0
  240. data/lib/active_merchant/billing/gateways/trans_first.rb +240 -0
  241. data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +612 -0
  242. data/lib/active_merchant/billing/gateways/transact_pro.rb +222 -0
  243. data/lib/active_merchant/billing/gateways/transax.rb +21 -0
  244. data/lib/active_merchant/billing/gateways/transnational.rb +9 -0
  245. data/lib/active_merchant/billing/gateways/trexle.rb +221 -0
  246. data/lib/active_merchant/billing/gateways/trust_commerce.rb +500 -0
  247. data/lib/active_merchant/billing/gateways/usa_epay.rb +24 -0
  248. data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +1612 -0
  249. data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +367 -0
  250. data/lib/active_merchant/billing/gateways/vanco.rb +303 -0
  251. data/lib/active_merchant/billing/gateways/verifi.rb +224 -0
  252. data/lib/active_merchant/billing/gateways/viaklix.rb +171 -0
  253. data/lib/active_merchant/billing/gateways/visanet_peru.rb +250 -0
  254. data/lib/active_merchant/billing/gateways/vpos.rb +223 -0
  255. data/lib/active_merchant/billing/gateways/webpay.rb +97 -0
  256. data/lib/active_merchant/billing/gateways/wepay.rb +235 -0
  257. data/lib/active_merchant/billing/gateways/wirecard.rb +430 -0
  258. data/lib/active_merchant/billing/gateways/wompi.rb +197 -0
  259. data/lib/active_merchant/billing/gateways/world_net.rb +345 -0
  260. data/lib/active_merchant/billing/gateways/worldpay.rb +1050 -0
  261. data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +208 -0
  262. data/lib/active_merchant/billing/gateways/worldpay_us.rb +221 -0
  263. data/lib/active_merchant/billing/gateways.rb +14 -0
  264. data/lib/active_merchant/billing/model.rb +30 -0
  265. data/lib/active_merchant/billing/network_tokenization_credit_card.rb +39 -0
  266. data/lib/active_merchant/billing/payment_token.rb +21 -0
  267. data/lib/active_merchant/billing/rails.rb +3 -0
  268. data/lib/active_merchant/billing/response.rb +121 -0
  269. data/lib/active_merchant/billing/three_d_secure_eci_mapper.rb +27 -0
  270. data/lib/active_merchant/billing.rb +16 -0
  271. data/lib/active_merchant/connection.rb +194 -0
  272. data/lib/active_merchant/country.rb +338 -0
  273. data/lib/active_merchant/empty.rb +20 -0
  274. data/lib/active_merchant/errors.rb +38 -0
  275. data/lib/active_merchant/net_http_ssl_connection.rb +11 -0
  276. data/lib/active_merchant/network_connection_retries.rb +78 -0
  277. data/lib/active_merchant/post_data.rb +26 -0
  278. data/lib/active_merchant/posts_data.rb +92 -0
  279. data/lib/active_merchant/version.rb +3 -0
  280. data/lib/active_merchant.rb +63 -0
  281. data/lib/activemerchant.rb +1 -0
  282. data/lib/certs/cacert.pem +3214 -0
  283. data/lib/support/gateway_support.rb +69 -0
  284. data/lib/support/outbound_hosts.rb +28 -0
  285. data/lib/support/ssl_verify.rb +88 -0
  286. data/lib/support/ssl_version.rb +86 -0
  287. metadata +506 -0
@@ -0,0 +1,206 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ class PacNetRavenGateway < Gateway
4
+ AVS_ADDRESS_CODES = {
5
+ 'avs_address_unavailable' => 'X',
6
+ 'avs_address_not_checked' => 'X',
7
+ 'avs_address_matched' => 'Y',
8
+ 'avs_address_not_matched' => 'N',
9
+ 'avs_address_partial_match' => 'N'
10
+ }
11
+
12
+ AVS_POSTAL_CODES = {
13
+ 'avs_postal_unavailable' => 'X',
14
+ 'avs_postal_not_checked' => 'X',
15
+ 'avs_postal_matched' => 'Y',
16
+ 'avs_postal_not_matched' => 'N',
17
+ 'avs_postal_partial_match' => 'N'
18
+ }
19
+
20
+ CVV2_CODES = {
21
+ 'cvv2_matched' => 'Y',
22
+ 'cvv2_not_matched' => 'N',
23
+ 'cvv2_unavailable' => 'X',
24
+ 'cvv2_not_checked' => 'X'
25
+ }
26
+
27
+ self.live_url = 'https://raven.deepcovelabs.net/realtime/'
28
+ self.test_url = self.live_url
29
+
30
+ self.supported_countries = ['US']
31
+ self.supported_cardtypes = %i[visa master]
32
+ self.money_format = :cents
33
+ self.default_currency = 'USD'
34
+ self.homepage_url = 'https://www.deepcovelabs.com/raven'
35
+ self.display_name = 'Raven'
36
+
37
+ def initialize(options = {})
38
+ requires!(options, :user, :secret, :prn)
39
+ super
40
+ end
41
+
42
+ def authorize(money, creditcard, options = {})
43
+ post = {}
44
+ add_creditcard(post, creditcard)
45
+ add_currency_code(post, money, options)
46
+ add_address(post, options)
47
+ post['PRN'] = @options[:prn]
48
+
49
+ commit('cc_preauth', money, post)
50
+ end
51
+
52
+ def purchase(money, creditcard, options = {})
53
+ post = {}
54
+ add_currency_code(post, money, options)
55
+ add_creditcard(post, creditcard)
56
+ add_address(post, options)
57
+ post['PRN'] = @options[:prn]
58
+
59
+ commit('cc_debit', money, post)
60
+ end
61
+
62
+ def void(authorization, options = {})
63
+ post = {}
64
+ post['TrackingNumber'] = authorization
65
+ post['PymtType'] = options[:pymt_type]
66
+
67
+ commit('void', nil, post)
68
+ end
69
+
70
+ def capture(money, authorization, options = {})
71
+ post = {}
72
+ post['PreauthNumber'] = authorization
73
+ post['PRN'] = @options[:prn]
74
+ add_currency_code(post, money, options)
75
+
76
+ commit('cc_settle', money, post)
77
+ end
78
+
79
+ def refund(money, template_number, options = {})
80
+ post = {}
81
+ post['PRN'] = @options[:prn]
82
+ post['TemplateNumber'] = template_number
83
+ add_currency_code(post, money, options)
84
+
85
+ commit('cc_refund', money, post)
86
+ end
87
+
88
+ private
89
+
90
+ def add_creditcard(post, creditcard)
91
+ post['CardNumber'] = creditcard.number
92
+ post['Expiry'] = expdate(creditcard)
93
+ post['CVV2'] = creditcard.verification_value if creditcard.verification_value
94
+ end
95
+
96
+ def add_currency_code(post, money, options)
97
+ post['Currency'] = options[:currency] || currency(money)
98
+ end
99
+
100
+ def add_address(post, options)
101
+ if address = options[:billing_address] || options[:address]
102
+ post['BillingStreetAddressLineOne'] = address[:address1].to_s
103
+ post['BillingStreetAddressLineFour'] = address[:address2].to_s
104
+ post['BillingPostalCode'] = address[:zip].to_s
105
+ end
106
+ end
107
+
108
+ def parse(body)
109
+ Hash[body.split('&').map { |x| x.split('=').map { |y| CGI.unescape(y) } }]
110
+ end
111
+
112
+ def commit(action, money, parameters)
113
+ parameters['Amount'] = amount(money) unless action == 'void'
114
+
115
+ data = ssl_post url(action), post_data(action, parameters)
116
+
117
+ response = parse(data)
118
+ response[:action] = action
119
+
120
+ message = message_from(response)
121
+
122
+ test_mode = test? || message =~ /TESTMODE/
123
+
124
+ Response.new(success?(response), message, response,
125
+ test: test_mode,
126
+ authorization: response['TrackingNumber'],
127
+ fraud_review: fraud_review?(response),
128
+ avs_result: {
129
+ postal_match: AVS_POSTAL_CODES[response['AVSPostalResponseCode']],
130
+ street_match: AVS_ADDRESS_CODES[response['AVSAddressResponseCode']]
131
+ },
132
+ cvv_result: CVV2_CODES[response['CVV2ResponseCode']])
133
+ end
134
+
135
+ def url(action)
136
+ (test? ? self.test_url : self.live_url) + endpoint(action)
137
+ end
138
+
139
+ def endpoint(action)
140
+ return 'void' if action == 'void'
141
+
142
+ 'submit'
143
+ end
144
+
145
+ def fraud_review?(response)
146
+ false
147
+ end
148
+
149
+ def success?(response)
150
+ if %w(cc_settle cc_debit cc_preauth cc_refund).include?(response[:action])
151
+ !response['ApprovalCode'].nil? && response['ErrorCode'].nil? && (response['Status'] == 'Approved')
152
+ elsif response[:action] = 'void'
153
+ !response['ApprovalCode'].nil? && response['ErrorCode'].nil? && (response['Status'] == 'Voided')
154
+ end
155
+ end
156
+
157
+ def message_from(response)
158
+ return response['Message'] if response['Message']
159
+
160
+ if response['Status'] == 'Approved'
161
+ 'This transaction has been approved'
162
+ elsif response['Status'] == 'Declined'
163
+ 'This transaction has been declined'
164
+ elsif response['Status'] == 'Voided'
165
+ 'This transaction has been voided'
166
+ else
167
+ response['Status']
168
+ end
169
+ end
170
+
171
+ def post_data(action, parameters = {})
172
+ post = {}
173
+
174
+ post['PymtType'] = action
175
+ post['RAPIVersion'] = '2'
176
+ post['UserName'] = @options[:user]
177
+ post['Timestamp'] = timestamp
178
+ post['RequestID'] = request_id
179
+ post['Signature'] = signature(action, post, parameters)
180
+
181
+ request = post.merge(parameters).collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
182
+ request
183
+ end
184
+
185
+ def timestamp
186
+ Time.now.strftime('%Y-%m-%dT%H:%M:%S.Z')
187
+ end
188
+
189
+ def request_id
190
+ SecureRandom.uuid
191
+ end
192
+
193
+ def signature(action, post, parameters = {})
194
+ string =
195
+ if %w(cc_settle cc_debit cc_preauth cc_refund).include?(action)
196
+ post['UserName'] + post['Timestamp'] + post['RequestID'] + post['PymtType'] + parameters['Amount'].to_s + parameters['Currency']
197
+ elsif action == 'void'
198
+ post['UserName'] + post['Timestamp'] + post['RequestID'] + parameters['TrackingNumber']
199
+ else
200
+ post['UserName']
201
+ end
202
+ OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA1.new(@options[:secret]), @options[:secret], string)
203
+ end
204
+ end
205
+ end
206
+ end
@@ -0,0 +1,239 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ class PagarmeGateway < Gateway
4
+ self.live_url = 'https://api.pagar.me/1/'
5
+
6
+ self.supported_countries = ['BR']
7
+ self.default_currency = 'BRL'
8
+ self.money_format = :cents
9
+ self.supported_cardtypes = %i[visa master american_express discover diners_club]
10
+
11
+ self.homepage_url = 'https://pagar.me/'
12
+ self.display_name = 'Pagar.me'
13
+
14
+ STANDARD_ERROR_CODE_MAPPING = {
15
+ 'refused' => STANDARD_ERROR_CODE[:card_declined],
16
+ 'processing_error' => STANDARD_ERROR_CODE[:processing_error]
17
+ }
18
+
19
+ def initialize(options = {})
20
+ requires!(options, :api_key)
21
+ @api_key = options[:api_key]
22
+
23
+ super
24
+ end
25
+
26
+ def purchase(money, payment_method, options = {})
27
+ post = {}
28
+ add_amount(post, money)
29
+ add_payment_method(post, payment_method)
30
+ add_metadata(post, options)
31
+
32
+ commit(:post, 'transactions', post)
33
+ end
34
+
35
+ def authorize(money, payment_method, options = {})
36
+ post = {}
37
+ add_amount(post, money)
38
+ add_payment_method(post, payment_method)
39
+ add_metadata(post, options)
40
+
41
+ post[:capture] = false
42
+
43
+ commit(:post, 'transactions', post)
44
+ end
45
+
46
+ def capture(money, authorization, options = {})
47
+ return Response.new(false, 'Não é possível capturar uma transação sem uma prévia autorização.') if authorization.nil?
48
+
49
+ post = {}
50
+ commit(:post, "transactions/#{authorization}/capture", post)
51
+ end
52
+
53
+ def refund(money, authorization, options = {})
54
+ return Response.new(false, 'Não é possível estornar uma transação sem uma prévia captura.') if authorization.nil?
55
+
56
+ void(authorization, options)
57
+ end
58
+
59
+ def void(authorization, options = {})
60
+ return Response.new(false, 'Não é possível estornar uma transação autorizada sem uma prévia autorização.') if authorization.nil?
61
+
62
+ post = {}
63
+ commit(:post, "transactions/#{authorization}/refund", post)
64
+ end
65
+
66
+ def verify(payment_method, options = {})
67
+ MultiResponse.run(:use_first_response) do |r|
68
+ r.process { authorize(127, payment_method, options) }
69
+ r.process(:ignore_result) { void(r.authorization, options) }
70
+ end
71
+ end
72
+
73
+ def supports_scrubbing?
74
+ true
75
+ end
76
+
77
+ def scrub(transcript)
78
+ transcript.
79
+ gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]').
80
+ gsub(%r((card_number=)\d+), '\1[FILTERED]').
81
+ gsub(%r((card_cvv=)\d+), '\1[FILTERED]')
82
+ end
83
+
84
+ private
85
+
86
+ def add_amount(post, money)
87
+ post[:amount] = amount(money)
88
+ end
89
+
90
+ def add_payment_method(post, payment_method)
91
+ post[:payment_method] = 'credit_card'
92
+ add_credit_card(post, payment_method)
93
+ end
94
+
95
+ def add_credit_card(post, credit_card)
96
+ post[:card_number] = credit_card.number
97
+ post[:card_holder_name] = credit_card.name
98
+ post[:card_expiration_date] = "#{credit_card.month}/#{credit_card.year}"
99
+ post[:card_cvv] = credit_card.verification_value
100
+ end
101
+
102
+ def add_metadata(post, options = {})
103
+ post[:metadata] = {}
104
+ post[:metadata][:order_id] = options[:order_id]
105
+ post[:metadata][:ip] = options[:ip]
106
+ post[:metadata][:customer] = options[:customer]
107
+ post[:metadata][:invoice] = options[:invoice]
108
+ post[:metadata][:merchant] = options[:merchant]
109
+ post[:metadata][:description] = options[:description]
110
+ post[:metadata][:email] = options[:email]
111
+ end
112
+
113
+ def parse(body)
114
+ JSON.parse(body)
115
+ end
116
+
117
+ def post_data(params)
118
+ return nil unless params
119
+
120
+ params.map do |key, value|
121
+ next if value != false && value.blank?
122
+
123
+ if value.is_a?(Hash)
124
+ h = {}
125
+ value.each do |k, v|
126
+ h["#{key}[#{k}]"] = v unless v.blank?
127
+ end
128
+ post_data(h)
129
+ elsif value.is_a?(Array)
130
+ value.map { |v| "#{key}[]=#{CGI.escape(v.to_s)}" }.join('&')
131
+ else
132
+ "#{key}=#{CGI.escape(value.to_s)}"
133
+ end
134
+ end.compact.join('&')
135
+ end
136
+
137
+ def headers(options = {})
138
+ {
139
+ 'Authorization' => 'Basic ' + Base64.encode64(@api_key.to_s + ':x').strip,
140
+ 'User-Agent' => "Pagar.me/1 ActiveMerchant/#{ActiveMerchant::VERSION}",
141
+ 'Accept-Encoding' => 'deflate'
142
+ }
143
+ end
144
+
145
+ def api_request(method, endpoint, parameters = nil, options = {})
146
+ raw_response = response = nil
147
+ begin
148
+ raw_response = ssl_request(method, self.live_url + endpoint, post_data(parameters), headers(options))
149
+ response = parse(raw_response)
150
+ rescue ResponseError => e
151
+ raw_response = e.response.body
152
+ response = response_error(raw_response)
153
+ rescue JSON::ParserError
154
+ response = json_error(raw_response)
155
+ end
156
+ response
157
+ end
158
+
159
+ def commit(method, url, parameters, options = {})
160
+ response = api_request(method, url, parameters, options)
161
+
162
+ Response.new(
163
+ success_from(response),
164
+ message_from(response),
165
+ response,
166
+ authorization: authorization_from(response),
167
+ test: test?,
168
+ error_code: error_code_from(response)
169
+ )
170
+ end
171
+
172
+ def response_error(raw_response)
173
+ parse(raw_response)
174
+ rescue JSON::ParserError
175
+ json_error(raw_response)
176
+ end
177
+
178
+ def json_error(raw_response)
179
+ msg = 'Resposta inválida retornada pela API do Pagar.me. Por favor entre em contato com suporte@pagar.me se você continuar recebendo essa mensagem.'
180
+ msg += " (A resposta retornada pela API foi #{raw_response.inspect})"
181
+ {
182
+ 'errors' => [{
183
+ 'message' => msg
184
+ }]
185
+ }
186
+ end
187
+
188
+ def success_from(response)
189
+ success_purchase = response.key?('status') && response['status'] == 'paid'
190
+ success_authorize = response.key?('status') && response['status'] == 'authorized'
191
+ success_refund = response.key?('status') && response['status'] == 'refunded'
192
+
193
+ success_purchase || success_authorize || success_refund
194
+ end
195
+
196
+ def failure_from(response)
197
+ response.key?('status') && response['status'] == 'refused'
198
+ end
199
+
200
+ def message_from(response)
201
+ if success_from(response)
202
+ case response['status']
203
+ when 'paid'
204
+ 'Transação aprovada'
205
+ when 'authorized'
206
+ 'Transação autorizada'
207
+ when 'refunded'
208
+ 'Transação estornada'
209
+ else
210
+ "Transação com status '#{response['status']}'"
211
+ end
212
+ elsif failure_from(response)
213
+ 'Transação recusada'
214
+ elsif response.key?('errors')
215
+ response['errors'][0]['message']
216
+ else
217
+ msg = json_error(response)
218
+ msg['errors'][0]['message']
219
+ end
220
+ end
221
+
222
+ def authorization_from(response)
223
+ response['id'] if success_from(response)
224
+ end
225
+
226
+ def test?
227
+ @api_key.start_with?('ak_test')
228
+ end
229
+
230
+ def error_code_from(response)
231
+ if failure_from(response)
232
+ STANDARD_ERROR_CODE_MAPPING['refused']
233
+ elsif response.key?('errors')
234
+ STANDARD_ERROR_CODE_MAPPING['processing_error']
235
+ end
236
+ end
237
+ end
238
+ end
239
+ end
@@ -0,0 +1,120 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ class PagoFacilGateway < Gateway
4
+ self.test_url = 'https://www.pagofacil.net/st/public/Wsrtransaccion/index/format/json?'
5
+ self.live_url = 'https://www.pagofacil.net/ws/public/Wsrtransaccion/index/format/json?'
6
+
7
+ self.supported_countries = ['MX']
8
+ self.default_currency = 'MXN'
9
+ self.supported_cardtypes = %i[visa master american_express jcb]
10
+
11
+ self.homepage_url = 'http://www.pagofacil.net/'
12
+ self.display_name = 'PagoFacil'
13
+
14
+ def initialize(options = {})
15
+ requires!(options, :branch_id, :merchant_id, :service_id)
16
+ super
17
+ end
18
+
19
+ def purchase(money, credit_card, options = {})
20
+ post = {}
21
+ add_invoice(post, money, options)
22
+ add_payment(post, credit_card)
23
+ add_address(post, options)
24
+ add_customer_data(post, options)
25
+ add_merchant_data(post)
26
+
27
+ commit(post)
28
+ end
29
+
30
+ private
31
+
32
+ def add_customer_data(post, options)
33
+ post[:email] = options[:email]
34
+ post[:celular] = options[:cellphone]
35
+ end
36
+
37
+ def add_address(post, options)
38
+ address = options.fetch(:billing_address, {})
39
+ post[:calleyNumero] = address[:address1]
40
+ post[:colonia] = address[:address2]
41
+ post[:municipio] = address[:city]
42
+ post[:estado] = address[:state]
43
+ post[:pais] = address[:country]
44
+ post[:telefono] = address[:phone]
45
+ post[:cp] = address[:zip]
46
+ end
47
+
48
+ def add_invoice(post, money, options)
49
+ post[:monto] = amount(money)
50
+ post[:idPedido] = options[:order_id]
51
+ add_currency(post, money, options)
52
+ end
53
+
54
+ def add_currency(post, money, options)
55
+ currency = options.fetch(:currency, currency(money))
56
+ post[:divisa] = currency unless currency == self.class.default_currency
57
+ end
58
+
59
+ def add_payment(post, credit_card)
60
+ post[:nombre] = credit_card.first_name
61
+ post[:apellidos] = credit_card.last_name
62
+ post[:numeroTarjeta] = credit_card.number
63
+ post[:cvt] = credit_card.verification_value
64
+ post[:mesExpiracion] = sprintf('%02d', credit_card.month)
65
+ post[:anyoExpiracion] = credit_card.year.to_s.slice(-2, 2)
66
+ end
67
+
68
+ def add_merchant_data(post)
69
+ post[:idSucursal] = options.fetch(:branch_id)
70
+ post[:idUsuario] = options.fetch(:merchant_id)
71
+ post[:idServicio] = options.fetch(:service_id)
72
+ end
73
+
74
+ def parse(body)
75
+ JSON.parse(body)['WebServices_Transacciones']['transaccion']
76
+ rescue JSON::ParserError
77
+ json_error(body)
78
+ end
79
+
80
+ def commit(parameters)
81
+ url = (test? ? test_url : live_url)
82
+ response = parse(ssl_post(url, post_data(parameters)))
83
+ Response.new(
84
+ success_from(response),
85
+ message_from(response),
86
+ response,
87
+ authorization: authorization_from(response),
88
+ test: test?
89
+ )
90
+ end
91
+
92
+ def success_from(response)
93
+ response['autorizado'] == '1' ||
94
+ response['autorizado'] == true
95
+ end
96
+
97
+ def message_from(response)
98
+ response['texto']
99
+ end
100
+
101
+ def authorization_from(response)
102
+ response['autorizacion']
103
+ end
104
+
105
+ def post_data(parameters = {})
106
+ {
107
+ method: 'transaccion',
108
+ data: parameters
109
+ }.to_query
110
+ end
111
+
112
+ def json_error(response)
113
+ {
114
+ 'texto' => 'Invalid response received from the PagoFacil API.',
115
+ 'raw_response' => response
116
+ }
117
+ end
118
+ end
119
+ end
120
+ end