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
@@ -2,12 +2,14 @@ module ActiveMerchant #:nodoc:
2
2
  module Billing #:nodoc:
3
3
  # This module is included in both PaypalGateway and PaypalExpressGateway
4
4
  module PaypalCommonAPI
5
- API_VERSION = '72'
5
+ include Empty
6
+
7
+ API_VERSION = '124'
6
8
 
7
9
  URLS = {
8
10
  :test => { :certificate => 'https://api.sandbox.paypal.com/2.0/',
9
11
  :signature => 'https://api-3t.sandbox.paypal.com/2.0/' },
10
- :live => { :certificate => 'https://api-aa.paypal.com/2.0/',
12
+ :live => { :certificate => 'https://api.paypal.com/2.0/',
11
13
  :signature => 'https://api-3t.paypal.com/2.0/' }
12
14
  }
13
15
 
@@ -38,6 +40,20 @@ module ActiveMerchant #:nodoc:
38
40
 
39
41
  FRAUD_REVIEW_CODE = "11610"
40
42
 
43
+ STANDARD_ERROR_CODE_MAPPING = {
44
+ '15005' => :card_declined,
45
+ '10754' => :card_declined,
46
+ '10752' => :card_declined,
47
+ '10759' => :card_declined,
48
+ '10761' => :card_declined,
49
+ '15002' => :card_declined,
50
+ '11084' => :card_declined,
51
+ '15004' => :incorrect_cvc,
52
+ '10762' => :invalid_cvc,
53
+ }
54
+
55
+ STANDARD_ERROR_CODE_MAPPING.default = :processing_error
56
+
41
57
  def self.included(base)
42
58
  base.default_currency = 'USD'
43
59
  base.cattr_accessor :pem_file
@@ -122,7 +138,7 @@ module ActiveMerchant #:nodoc:
122
138
  end
123
139
 
124
140
  def credit(money, identification, options = {})
125
- deprecated Gateway::CREDIT_DEPRECATION_MESSAGE
141
+ ActiveMerchant.deprecated Gateway::CREDIT_DEPRECATION_MESSAGE
126
142
  refund(money, identification, options)
127
143
  end
128
144
 
@@ -253,7 +269,21 @@ module ActiveMerchant #:nodoc:
253
269
  commit 'ManagePendingTransactionStatus', build_manage_pending_transaction_status(transaction_id, action)
254
270
  end
255
271
 
272
+ def supports_scrubbing?
273
+ true
274
+ end
275
+
276
+ def scrub(transcript)
277
+ transcript.
278
+ gsub(%r((<n1:Password>).+(</n1:Password>)), '\1[FILTERED]\2').
279
+ gsub(%r((<n1:Username>).+(</n1:Username>)), '\1[FILTERED]\2').
280
+ gsub(%r((<n1:Signature>).+(</n1:Signature>)), '\1[FILTERED]\2').
281
+ gsub(%r((<n2:CreditCardNumber>).+(</n2:CreditCardNumber)), '\1[FILTERED]\2').
282
+ gsub(%r((<n2:CVV2>)\d+(</n2:CVV2)), '\1[FILTERED]\2')
283
+ end
284
+
256
285
  private
286
+
257
287
  def build_request_wrapper(action, options = {})
258
288
  xml = Builder::XmlMarkup.new :indent => 2
259
289
  xml.tag! action + 'Req', 'xmlns' => PAYPAL_NAMESPACE do
@@ -573,7 +603,7 @@ module ActiveMerchant #:nodoc:
573
603
  xml.tag! 'n2:Custom', options[:custom] unless options[:custom].blank?
574
604
 
575
605
  xml.tag! 'n2:InvoiceID', (options[:order_id] || options[:invoice_id]) unless (options[:order_id] || options[:invoice_id]).blank?
576
- xml.tag! 'n2:ButtonSource', application_id.to_s.slice(0,32) unless application_id.blank?
606
+ add_button_source(xml)
577
607
 
578
608
  # The notify URL applies only to DoExpressCheckoutPayment.
579
609
  # This value is ignored when set in SetExpressCheckout or GetExpressCheckoutDetails
@@ -593,11 +623,18 @@ module ActiveMerchant #:nodoc:
593
623
  end
594
624
  end
595
625
 
626
+ def add_button_source(xml)
627
+ button_source = (@options[:button_source] || application_id)
628
+ if !empty?(button_source)
629
+ xml.tag! 'n2:ButtonSource', button_source.to_s.slice(0, 32)
630
+ end
631
+ end
632
+
596
633
  def add_express_only_payment_details(xml, options = {})
597
634
  add_optional_fields(xml,
598
- %w{n2:NoteText n2:SoftDescriptor
599
- n2:TransactionId n2:AllowedPaymentMethodType
600
- n2:PaymentRequestID n2:PaymentAction},
635
+ %w{n2:NoteText n2:PaymentAction
636
+ n2:TransactionId n2:AllowedPaymentMethod
637
+ n2:PaymentRequestID n2:SoftDescriptor },
601
638
  options)
602
639
  end
603
640
 
@@ -628,11 +665,21 @@ module ActiveMerchant #:nodoc:
628
665
  :test => test?,
629
666
  :authorization => authorization_from(response),
630
667
  :fraud_review => fraud_review?(response),
668
+ :error_code => standardized_error_code(response),
631
669
  :avs_result => { :code => response[:avs_code] },
632
670
  :cvv_result => response[:cvv2_code]
633
671
  )
634
672
  end
635
673
 
674
+ def standardized_error_code(response)
675
+ STANDARD_ERROR_CODE_MAPPING[error_codes(response).first]
676
+ end
677
+
678
+ def error_codes(response)
679
+ return [] unless response.has_key?(:error_codes)
680
+ response[:error_codes].split(',')
681
+ end
682
+
636
683
  def fraud_review?(response)
637
684
  response[:error_codes] == FRAUD_REVIEW_CODE
638
685
  end
@@ -56,6 +56,10 @@ module ActiveMerchant #:nodoc:
56
56
  'name' => shipping['ShippingOptionName']
57
57
  }
58
58
  end
59
+
60
+ def note
61
+ @params['note_text']
62
+ end
59
63
  end
60
64
  end
61
65
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/paypal_common_api'
1
+ require 'active_merchant/billing/gateways/paypal/paypal_common_api'
2
2
 
3
3
  module ActiveMerchant #:nodoc:
4
4
  module Billing #:nodoc:
@@ -23,8 +23,10 @@ module ActiveMerchant #:nodoc:
23
23
  # * <tt>:cycles</tt> -- Limit to certain # of cycles (OPTIONAL)
24
24
  # * <tt>:start_date</tt> -- When does the charging starts (REQUIRED)
25
25
  # * <tt>:description</tt> -- The description to appear in the profile (REQUIRED)
26
-
26
+
27
27
  def recurring(amount, credit_card, options = {})
28
+ ActiveMerchant.deprecated Gateway::RECURRING_DEPRECATION_MESSAGE
29
+
28
30
  options[:credit_card] = credit_card
29
31
  options[:amount] = amount
30
32
  requires!(options, :description, :start_date, :period, :frequency, :amount)
@@ -34,7 +36,7 @@ module ActiveMerchant #:nodoc:
34
36
  # Update a recurring payment's details.
35
37
  #
36
38
  # This transaction updates an existing Recurring Billing Profile
37
- # and the subscription must have already been created previously
39
+ # and the subscription must have already been created previously
38
40
  # by calling +recurring()+. The ability to change certain
39
41
  # details about a recurring payment is dependent on transaction history
40
42
  # and the type of plan you're subscribed with paypal. Web Payment Pro
@@ -49,6 +51,8 @@ module ActiveMerchant #:nodoc:
49
51
  # * <tt>:profile_id</tt> -- A string containing the <tt>:profile_id</tt>
50
52
  # of the recurring payment already in place for a given credit card. (REQUIRED)
51
53
  def update_recurring(options={})
54
+ ActiveMerchant.deprecated Gateway::RECURRING_DEPRECATION_MESSAGE
55
+
52
56
  requires!(options, :profile_id)
53
57
  opts = options.dup
54
58
  commit 'UpdateRecurringPaymentsProfile', build_change_profile_request(opts.delete(:profile_id), opts)
@@ -65,6 +69,8 @@ module ActiveMerchant #:nodoc:
65
69
  # recurring payment already in place for a given credit card. (REQUIRED)
66
70
  # * <tt>options</tt> -- A hash with extra info ('note' for ex.)
67
71
  def cancel_recurring(profile_id, options = {})
72
+ ActiveMerchant.deprecated Gateway::RECURRING_DEPRECATION_MESSAGE
73
+
68
74
  raise_error_if_blank('profile_id', profile_id)
69
75
  commit 'ManageRecurringPaymentsProfileStatus', build_manage_profile_request(profile_id, 'Cancel', options)
70
76
  end
@@ -76,6 +82,8 @@ module ActiveMerchant #:nodoc:
76
82
  # * <tt>profile_id</tt> -- A string containing the +profile_id+ of the
77
83
  # recurring payment already in place for a given credit card. (REQUIRED)
78
84
  def status_recurring(profile_id)
85
+ ActiveMerchant.deprecated Gateway::RECURRING_DEPRECATION_MESSAGE
86
+
79
87
  raise_error_if_blank('profile_id', profile_id)
80
88
  commit 'GetRecurringPaymentsProfileDetails', build_get_profile_details_request(profile_id)
81
89
  end
@@ -87,6 +95,8 @@ module ActiveMerchant #:nodoc:
87
95
  # * <tt>profile_id</tt> -- A string containing the +profile_id+ of the
88
96
  # recurring payment already in place for a given credit card. (REQUIRED)
89
97
  def suspend_recurring(profile_id, options = {})
98
+ ActiveMerchant.deprecated Gateway::RECURRING_DEPRECATION_MESSAGE
99
+
90
100
  raise_error_if_blank('profile_id', profile_id)
91
101
  commit 'ManageRecurringPaymentsProfileStatus', build_manage_profile_request(profile_id, 'Suspend', options)
92
102
  end
@@ -98,6 +108,8 @@ module ActiveMerchant #:nodoc:
98
108
  # * <tt>profile_id</tt> -- A string containing the +profile_id+ of the
99
109
  # recurring payment already in place for a given credit card. (REQUIRED)
100
110
  def reactivate_recurring(profile_id, options = {})
111
+ ActiveMerchant.deprecated Gateway::RECURRING_DEPRECATION_MESSAGE
112
+
101
113
  raise_error_if_blank('profile_id', profile_id)
102
114
  commit 'ManageRecurringPaymentsProfileStatus', build_manage_profile_request(profile_id, 'Reactivate', options)
103
115
  end
@@ -109,6 +121,8 @@ commit 'ManageRecurringPaymentsProfileStatus', build_manage_profile_request(prof
109
121
  # * <tt>profile_id</tt> -- A string containing the +profile_id+ of the
110
122
  # recurring payment already in place for a given credit card. (REQUIRED)
111
123
  def bill_outstanding_amount(profile_id, options = {})
124
+ ActiveMerchant.deprecated Gateway::RECURRING_DEPRECATION_MESSAGE
125
+
112
126
  raise_error_if_blank('profile_id', profile_id)
113
127
  commit 'BillOutstandingAmount', build_bill_outstanding_amount(profile_id, options)
114
128
  end
@@ -1,18 +1,18 @@
1
- require File.dirname(__FILE__) + '/paypal/paypal_common_api'
2
- require File.dirname(__FILE__) + '/paypal/paypal_recurring_api'
3
- require File.dirname(__FILE__) + '/paypal_express'
1
+ require 'active_merchant/billing/gateways/paypal/paypal_common_api'
2
+ require 'active_merchant/billing/gateways/paypal/paypal_recurring_api'
3
+ require 'active_merchant/billing/gateways/paypal_express'
4
4
 
5
5
  module ActiveMerchant #:nodoc:
6
6
  module Billing #:nodoc:
7
7
  class PaypalGateway < Gateway
8
8
  include PaypalCommonAPI
9
9
  include PaypalRecurringApi
10
-
10
+
11
11
  self.supported_cardtypes = [:visa, :master, :american_express, :discover]
12
12
  self.supported_countries = ['US']
13
13
  self.homepage_url = 'https://www.paypal.com/us/webapps/mpp/paypal-payments-pro'
14
14
  self.display_name = 'PayPal Payments Pro (US)'
15
-
15
+
16
16
  def authorize(money, credit_card_or_referenced_id, options = {})
17
17
  requires!(options, :ip)
18
18
  commit define_transaction_type(credit_card_or_referenced_id), build_sale_or_authorization_request('Authorization', money, credit_card_or_referenced_id, options)
@@ -22,13 +22,24 @@ module ActiveMerchant #:nodoc:
22
22
  requires!(options, :ip)
23
23
  commit define_transaction_type(credit_card_or_referenced_id), build_sale_or_authorization_request('Sale', money, credit_card_or_referenced_id, options)
24
24
  end
25
-
25
+
26
+ def verify(credit_card, options = {})
27
+ if %w(visa master).include?(credit_card.brand)
28
+ authorize(0, credit_card, options)
29
+ else
30
+ MultiResponse.run(:use_first_response) do |r|
31
+ r.process { authorize(100, credit_card, options) }
32
+ r.process(:ignore_result) { void(r.authorization, options) }
33
+ end
34
+ end
35
+ end
36
+
26
37
  def express
27
38
  @express ||= PaypalExpressGateway.new(@options)
28
39
  end
29
-
40
+
30
41
  private
31
-
42
+
32
43
  def define_transaction_type(transaction_arg)
33
44
  if transaction_arg.is_a?(String)
34
45
  return 'DoReferenceTransaction'
@@ -36,14 +47,14 @@ module ActiveMerchant #:nodoc:
36
47
  return 'DoDirectPayment'
37
48
  end
38
49
  end
39
-
50
+
40
51
  def build_sale_or_authorization_request(action, money, credit_card_or_referenced_id, options)
41
52
  transaction_type = define_transaction_type(credit_card_or_referenced_id)
42
- reference_id = credit_card_or_referenced_id if transaction_type == "DoReferenceTransaction"
43
-
53
+ reference_id = credit_card_or_referenced_id if transaction_type == 'DoReferenceTransaction'
54
+
44
55
  billing_address = options[:billing_address] || options[:address]
45
56
  currency_code = options[:currency] || currency(money)
46
-
57
+
47
58
  xml = Builder::XmlMarkup.new :indent => 2
48
59
  xml.tag! transaction_type + 'Req', 'xmlns' => PAYPAL_NAMESPACE do
49
60
  xml.tag! transaction_type + 'Request', 'xmlns:n2' => EBAY_NAMESPACE do
@@ -51,6 +62,7 @@ module ActiveMerchant #:nodoc:
51
62
  xml.tag! 'n2:' + transaction_type + 'RequestDetails' do
52
63
  xml.tag! 'n2:ReferenceID', reference_id if transaction_type == 'DoReferenceTransaction'
53
64
  xml.tag! 'n2:PaymentAction', action
65
+ add_descriptors(xml, options)
54
66
  add_payment_details(xml, money, currency_code, options)
55
67
  add_credit_card(xml, credit_card_or_referenced_id, billing_address, options) unless transaction_type == 'DoReferenceTransaction'
56
68
  xml.tag! 'n2:IPAddress', options[:ip]
@@ -58,48 +70,45 @@ module ActiveMerchant #:nodoc:
58
70
  end
59
71
  end
60
72
 
61
- xml.target!
73
+ xml.target!
62
74
  end
63
-
75
+
64
76
  def add_credit_card(xml, credit_card, address, options)
65
77
  xml.tag! 'n2:CreditCard' do
66
78
  xml.tag! 'n2:CreditCardType', credit_card_type(card_brand(credit_card))
67
79
  xml.tag! 'n2:CreditCardNumber', credit_card.number
68
80
  xml.tag! 'n2:ExpMonth', format(credit_card.month, :two_digits)
69
81
  xml.tag! 'n2:ExpYear', format(credit_card.year, :four_digits)
70
- xml.tag! 'n2:CVV2', credit_card.verification_value
71
-
72
- if [ 'switch', 'solo' ].include?(card_brand(credit_card).to_s)
73
- xml.tag! 'n2:StartMonth', format(credit_card.start_month, :two_digits) unless credit_card.start_month.blank?
74
- xml.tag! 'n2:StartYear', format(credit_card.start_year, :four_digits) unless credit_card.start_year.blank?
75
- xml.tag! 'n2:IssueNumber', format(credit_card.issue_number, :two_digits) unless credit_card.issue_number.blank?
76
- end
77
-
82
+ xml.tag! 'n2:CVV2', credit_card.verification_value unless credit_card.verification_value.blank?
83
+
78
84
  xml.tag! 'n2:CardOwner' do
79
85
  xml.tag! 'n2:PayerName' do
80
86
  xml.tag! 'n2:FirstName', credit_card.first_name
81
87
  xml.tag! 'n2:LastName', credit_card.last_name
82
88
  end
83
-
89
+
84
90
  xml.tag! 'n2:Payer', options[:email]
85
91
  add_address(xml, 'n2:Address', address)
86
92
  end
87
93
  end
88
94
  end
89
95
 
96
+ def add_descriptors(xml, options)
97
+ xml.tag! 'n2:SoftDescriptor', options[:soft_descriptor] unless options[:soft_descriptor].blank?
98
+ xml.tag! 'n2:SoftDescriptorCity', options[:soft_descriptor_city] unless options[:soft_descriptor_city].blank?
99
+ end
100
+
90
101
  def credit_card_type(type)
91
102
  case type
92
103
  when 'visa' then 'Visa'
93
104
  when 'master' then 'MasterCard'
94
105
  when 'discover' then 'Discover'
95
106
  when 'american_express' then 'Amex'
96
- when 'switch' then 'Switch'
97
- when 'solo' then 'Solo'
98
107
  end
99
108
  end
100
-
109
+
101
110
  def build_response(success, message, response, options = {})
102
- Response.new(success, message, response, options)
111
+ Response.new(success, message, response, options)
103
112
  end
104
113
  end
105
114
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/paypal'
1
+ require 'active_merchant/billing/gateways/paypal'
2
2
 
3
3
  module ActiveMerchant #:nodoc:
4
4
  module Billing #:nodoc:
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/paypal/paypal_common_api'
2
- require File.dirname(__FILE__) + '/paypal/paypal_express_response'
3
- require File.dirname(__FILE__) + '/paypal_express_common'
1
+ require 'active_merchant/billing/gateways/paypal/paypal_common_api'
2
+ require 'active_merchant/billing/gateways/paypal/paypal_express_response'
3
+ require 'active_merchant/billing/gateways/paypal_express_common'
4
4
 
5
5
  module ActiveMerchant #:nodoc:
6
6
  module Billing #:nodoc:
@@ -11,9 +11,10 @@ module ActiveMerchant #:nodoc:
11
11
  self.supported_countries = %w(AU CA CN FI GB ID IN IT MY NO NZ PH PL SE SG TH VN)
12
12
  self.homepage_url = 'https://www.x.com/community/ppx/xspaces/digital_goods'
13
13
  self.display_name = 'PayPal Express Checkout for Digital Goods'
14
-
14
+
15
15
  def redirect_url_for(token, options = {})
16
- "#{redirect_url}?token=#{token}&useraction=commit"
16
+ options[:review] ||= false
17
+ super
17
18
  end
18
19
 
19
20
  # GATEWAY.setup_purchase(100,
@@ -29,7 +30,7 @@ module ActiveMerchant #:nodoc:
29
30
  # :category => "Digital" } ] )
30
31
  def build_setup_request(action, money, options)
31
32
  requires!(options, :items)
32
- raise ArgumentError, "Must include at least 1 Item" unless options[:items].length > 0
33
+ raise ArgumentError, 'Must include at least 1 Item' unless options[:items].length > 0
33
34
  options[:items].each do |item|
34
35
  requires!(item, :name, :number, :quantity, :amount, :description, :category)
35
36
  raise ArgumentError, "Each of the items must have the category 'Digital'" unless item[:category] == 'Digital'
@@ -1,7 +1,7 @@
1
- require File.dirname(__FILE__) + '/paypal/paypal_common_api'
2
- require File.dirname(__FILE__) + '/paypal/paypal_express_response'
3
- require File.dirname(__FILE__) + '/paypal/paypal_recurring_api'
4
- require File.dirname(__FILE__) + '/paypal_express_common'
1
+ require 'active_merchant/billing/gateways/paypal/paypal_common_api'
2
+ require 'active_merchant/billing/gateways/paypal/paypal_express_response'
3
+ require 'active_merchant/billing/gateways/paypal/paypal_recurring_api'
4
+ require 'active_merchant/billing/gateways/paypal_express_common'
5
5
 
6
6
  module ActiveMerchant #:nodoc:
7
7
  module Billing #:nodoc:
@@ -30,6 +30,7 @@ module ActiveMerchant #:nodoc:
30
30
  self.supported_countries = ['US']
31
31
  self.homepage_url = 'https://www.paypal.com/cgi-bin/webscr?cmd=xpt/merchant/ExpressCheckoutIntro-outside'
32
32
  self.display_name = 'PayPal Express Checkout'
33
+ self.currencies_without_fractions = %w(HUF JPY TWD)
33
34
 
34
35
  def setup_authorization(money, options = {})
35
36
  requires!(options, :return_url, :cancel_return_url)
@@ -67,6 +68,10 @@ module ActiveMerchant #:nodoc:
67
68
  commit 'BAUpdate', build_cancel_billing_agreement_request(token)
68
69
  end
69
70
 
71
+ def agreement_details(reference_id, options = {})
72
+ commit 'BAUpdate', build_details_billing_agreement_request(reference_id)
73
+ end
74
+
70
75
  def authorize_reference_transaction(money, options = {})
71
76
  requires!(options, :reference_id, :payment_type, :invoice_id, :description, :ip)
72
77
 
@@ -127,12 +132,14 @@ module ActiveMerchant #:nodoc:
127
132
  if options[:max_amount]
128
133
  xml.tag! 'n2:MaxAmount', localized_amount(options[:max_amount], currency_code), 'currencyID' => currency_code
129
134
  end
135
+ xml.tag! 'n2:ReqBillingAddress', options[:req_billing_address] ? '1' : '0'
130
136
  xml.tag! 'n2:NoShipping', options[:no_shipping] ? '1' : '0'
131
137
  xml.tag! 'n2:AddressOverride', options[:address_override] ? '1' : '0'
132
138
  xml.tag! 'n2:LocaleCode', locale_code(options[:locale]) unless options[:locale].blank?
133
139
  xml.tag! 'n2:BrandName', options[:brand_name] unless options[:brand_name].blank?
134
140
  # Customization of the payment page
135
141
  xml.tag! 'n2:PageStyle', options[:page_style] unless options[:page_style].blank?
142
+ xml.tag! 'n2:cpp-logo-image', options[:logo_image] unless options[:logo_image].blank?
136
143
  xml.tag! 'n2:cpp-header-image', options[:header_image] unless options[:header_image].blank?
137
144
  xml.tag! 'n2:cpp-header-border-color', options[:header_border_color] unless options[:header_border_color].blank?
138
145
  xml.tag! 'n2:cpp-header-back-color', options[:header_background_color] unless options[:header_background_color].blank?
@@ -154,6 +161,13 @@ module ActiveMerchant #:nodoc:
154
161
  if !options[:allow_note].nil?
155
162
  xml.tag! 'n2:AllowNote', options[:allow_note] ? '1' : '0'
156
163
  end
164
+
165
+ if options[:funding_sources]
166
+ xml.tag! 'n2:FundingSourceDetails' do
167
+ xml.tag! 'n2:UserSelectedFundingSource', options[:funding_sources][:source]
168
+ end
169
+ end
170
+
157
171
  xml.tag! 'n2:CallbackURL', options[:callback_url] unless options[:callback_url].blank?
158
172
 
159
173
  add_payment_details(xml, money, currency_code, options)
@@ -173,6 +187,8 @@ module ActiveMerchant #:nodoc:
173
187
  if options.has_key?(:allow_buyer_optin)
174
188
  xml.tag! 'n2:BuyerEmailOptInEnable', (options[:allow_buyer_optin] ? '1' : '0')
175
189
  end
190
+
191
+ xml.tag! 'n2:TotalType', options[:total_type] unless options[:total_type].blank?
176
192
  end
177
193
  end
178
194
  end
@@ -205,6 +221,18 @@ module ActiveMerchant #:nodoc:
205
221
  xml.target!
206
222
  end
207
223
 
224
+ def build_details_billing_agreement_request(reference_id)
225
+ xml = Builder::XmlMarkup.new :indent => 2
226
+ xml.tag! 'BillAgreementUpdateReq', 'xmlns' => PAYPAL_NAMESPACE do
227
+ xml.tag! 'BAUpdateRequest', 'xmlns:n2' => EBAY_NAMESPACE do
228
+ xml.tag! 'n2:Version', API_VERSION
229
+ xml.tag! 'ReferenceID', reference_id
230
+ end
231
+ end
232
+
233
+ xml.target!
234
+ end
235
+
208
236
  def build_reference_transaction_request(action, money, options)
209
237
  currency_code = options[:currency] || currency(money)
210
238
 
@@ -9,13 +9,13 @@ module ActiveMerchant
9
9
  base.class_inheritable_accessor :test_redirect_url
10
10
  base.class_inheritable_accessor :live_redirect_url
11
11
  end
12
- base.live_redirect_url = 'https://www.paypal.com/cgibin/webscr'
12
+ base.live_redirect_url = 'https://www.paypal.com/cgi-bin/webscr'
13
13
  end
14
-
14
+
15
15
  def redirect_url
16
16
  test? ? test_redirect_url : live_redirect_url
17
17
  end
18
-
18
+
19
19
  def redirect_url_for(token, options = {})
20
20
  options = {:review => true, :mobile => false}.update(options)
21
21
 
@@ -9,8 +9,6 @@ module ActiveMerchant #:nodoc:
9
9
  self.homepage_url = 'http://www.payscout.com/'
10
10
  self.display_name = 'Payscout'
11
11
 
12
- self.ssl_version = 'SSLv3'
13
-
14
12
  def initialize(options = {})
15
13
  requires!(options, :username, :password)
16
14
  super
@@ -43,7 +41,6 @@ module ActiveMerchant #:nodoc:
43
41
  commit('capture', money, post)
44
42
  end
45
43
 
46
-
47
44
  def refund(money, authorization, options = {})
48
45
  post = {}
49
46
  post[:transactionid] = authorization
@@ -105,7 +102,7 @@ module ActiveMerchant #:nodoc:
105
102
  end
106
103
 
107
104
  def parse(body)
108
- Hash[body.split('&').map{|x|x.split('=')}]
105
+ Hash[body.split('&').map { |x| x.split('=') }]
109
106
  end
110
107
 
111
108
  def commit(action, money, parameters)
@@ -155,17 +152,9 @@ module ActiveMerchant #:nodoc:
155
152
  post[:password] = @options[:password]
156
153
  post[:type] = action
157
154
 
158
- request = post.merge(parameters).collect { |key, value| "#{key}=#{URI.escape(value.to_s)}" }.join("&")
155
+ request = post.merge(parameters).collect { |key, value| "#{key}=#{CGI.escape(value.to_s)}" }.join('&')
159
156
  request
160
157
  end
161
-
162
- def expdate(creditcard)
163
- year = sprintf("%.4i", creditcard.year)
164
- month = sprintf("%.2i", creditcard.month)
165
-
166
- "#{month}#{year[-2..-1]}"
167
- end
168
158
  end
169
159
  end
170
160
  end
171
-