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
@@ -10,7 +10,7 @@ module ActiveMerchant #:nodoc:
10
10
  # Set the default partner to PayPal
11
11
  base.partner = 'PayPal'
12
12
 
13
- base.supported_countries = ['US', 'CA', 'SG', 'AU']
13
+ base.supported_countries = ['US', 'CA', 'NZ', 'AU']
14
14
 
15
15
  base.class_attribute :timeout
16
16
  base.timeout = 60
@@ -25,6 +25,13 @@ module ActiveMerchant #:nodoc:
25
25
  # subsequent Responses will have a :duplicate parameter set in the params
26
26
  # hash.
27
27
  base.retry_safe = true
28
+
29
+ # Send Payflow requests to PayPal directly by activating the NVP protocol.
30
+ # Valid XMLPay documents may have issues being parsed correctly by
31
+ # Payflow but will be accepted by PayPal if a PAYPAL-NVP request header
32
+ # is declared.
33
+ base.class_attribute :use_paypal_nvp
34
+ base.use_paypal_nvp = false
28
35
  end
29
36
 
30
37
  XMLNS = 'http://www.paypal.com/XMLPay'
@@ -36,16 +43,14 @@ module ActiveMerchant #:nodoc:
36
43
  :american_express => 'Amex',
37
44
  :jcb => 'JCB',
38
45
  :diners_club => 'DinersClub',
39
- :switch => 'Switch',
40
- :solo => 'Solo'
41
46
  }
42
47
 
43
48
  TRANSACTIONS = {
44
- :purchase => "Sale",
45
- :authorization => "Authorization",
46
- :capture => "Capture",
47
- :void => "Void",
48
- :credit => "Credit"
49
+ :purchase => 'Sale',
50
+ :authorization => 'Authorization',
51
+ :capture => 'Capture',
52
+ :void => 'Void',
53
+ :credit => 'Credit'
49
54
  }
50
55
 
51
56
  CVV_CODE = {
@@ -73,10 +78,11 @@ module ActiveMerchant #:nodoc:
73
78
  end
74
79
 
75
80
  private
81
+
76
82
  def build_request(body, options = {})
77
83
  xml = Builder::XmlMarkup.new
78
84
  xml.instruct!
79
- xml.tag! 'XMLPayRequest', 'Timeout' => timeout.to_s, 'version' => "2.1", "xmlns" => XMLNS do
85
+ xml.tag! 'XMLPayRequest', 'Timeout' => timeout.to_s, 'version' => '2.1', 'xmlns' => XMLNS do
80
86
  xml.tag! 'RequestData' do
81
87
  xml.tag! 'Vendor', @options[:login]
82
88
  xml.tag! 'Partner', @options[:partner]
@@ -85,7 +91,7 @@ module ActiveMerchant #:nodoc:
85
91
  else
86
92
  xml.tag! 'Transactions' do
87
93
  xml.tag! 'Transaction', 'CustRef' => options[:customer] do
88
- xml.tag! 'Verbosity', 'MEDIUM'
94
+ xml.tag! 'Verbosity', @options[:verbosity] || 'MEDIUM'
89
95
  xml << body
90
96
  end
91
97
  end
@@ -112,6 +118,11 @@ module ActiveMerchant #:nodoc:
112
118
  xml.tag!('Description', options[:description]) unless options[:description].blank?
113
119
  xml.tag!('Comment', options[:comment]) unless options[:comment].blank?
114
120
  xml.tag!('ExtData', 'Name'=> 'COMMENT2', 'Value'=> options[:comment2]) unless options[:comment2].blank?
121
+ xml.tag!(
122
+ 'ExtData',
123
+ 'Name' => 'CAPTURECOMPLETE',
124
+ 'Value' => options[:capture_complete]
125
+ ) unless options[:capture_complete].blank?
115
126
  end
116
127
  end
117
128
  end
@@ -130,8 +141,9 @@ module ActiveMerchant #:nodoc:
130
141
 
131
142
  xml.tag! 'Address' do
132
143
  xml.tag! 'Street', address[:address1] unless address[:address1].blank?
144
+ xml.tag! 'Street2', address[:address2] unless address[:address2].blank?
133
145
  xml.tag! 'City', address[:city] unless address[:city].blank?
134
- xml.tag! 'State', address[:state].blank? ? "N/A" : address[:state]
146
+ xml.tag! 'State', address[:state].blank? ? 'N/A' : address[:state]
135
147
  xml.tag! 'Country', address[:country] unless address[:country].blank?
136
148
  xml.tag! 'Zip', address[:zip] unless address[:zip].blank?
137
149
  end
@@ -142,16 +154,16 @@ module ActiveMerchant #:nodoc:
142
154
  response = {}
143
155
  xml = Nokogiri::XML(data)
144
156
  xml.remove_namespaces!
145
- root = xml.xpath("//ResponseData")
157
+ root = xml.xpath('//ResponseData')
146
158
 
147
159
  # REXML::XPath in Ruby 1.8.6 is now unable to match nodes based on their attributes
148
- tx_result = root.xpath(".//TransactionResult").first
160
+ tx_result = root.xpath('.//TransactionResult').first
149
161
 
150
- if tx_result && tx_result.attributes['Duplicate'].to_s == "true"
162
+ if tx_result && tx_result.attributes['Duplicate'].to_s == 'true'
151
163
  response[:duplicate] = true
152
164
  end
153
165
 
154
- root.xpath(".//*").each do |node|
166
+ root.xpath('.//*').each do |node|
155
167
  parse_element(response, node)
156
168
  end
157
169
 
@@ -166,10 +178,10 @@ module ActiveMerchant #:nodoc:
166
178
  # down as we do everywhere else. RPPaymentResult elements are not contained
167
179
  # in an RPPaymentResults element so we'll come here multiple times
168
180
  response[node_name] ||= []
169
- response[node_name] << ( payment_result_response = {} )
170
- node.xpath(".//*").each{ |e| parse_element(payment_result_response, e) }
171
- when node.xpath(".//*").to_a.any?
172
- node.xpath(".//*").each{|e| parse_element(response, e) }
181
+ response[node_name] << (payment_result_response = {})
182
+ node.xpath('.//*').each { |e| parse_element(payment_result_response, e) }
183
+ when node.xpath('.//*').to_a.any?
184
+ node.xpath('.//*').each { |e| parse_element(response, e) }
173
185
  when node_name.to_s =~ /amt$/
174
186
  # *Amt elements don't put the value in the #text - instead they use a Currency attribute
175
187
  response[node_name] = node.attributes['Currency'].to_s
@@ -181,29 +193,43 @@ module ActiveMerchant #:nodoc:
181
193
  end
182
194
 
183
195
  def build_headers(content_length)
184
- {
185
- "Content-Type" => "text/xml",
186
- "Content-Length" => content_length.to_s,
187
- "X-VPS-Client-Timeout" => timeout.to_s,
188
- "X-VPS-VIT-Integration-Product" => "ActiveMerchant",
189
- "X-VPS-VIT-Runtime-Version" => RUBY_VERSION,
190
- "X-VPS-Request-ID" => Utils.generate_unique_id
191
- }
192
- end
193
-
194
- def commit(request_body, options = {})
196
+ headers = {
197
+ 'Content-Type' => 'text/xml',
198
+ 'Content-Length' => content_length.to_s,
199
+ 'X-VPS-Client-Timeout' => timeout.to_s,
200
+ 'X-VPS-VIT-Integration-Product' => 'ActiveMerchant',
201
+ 'X-VPS-VIT-Runtime-Version' => RUBY_VERSION,
202
+ 'X-VPS-Request-ID' => SecureRandom.hex(16)
203
+ }
204
+
205
+ headers['PAYPAL-NVP'] = 'Y' if self.use_paypal_nvp
206
+ headers
207
+ end
208
+
209
+ def commit(request_body, options = {})
195
210
  request = build_request(request_body, options)
196
211
  headers = build_headers(request.size)
197
212
 
198
- response = parse(ssl_post(test? ? self.test_url : self.live_url, request, headers))
213
+ response = parse(ssl_post(test? ? self.test_url : self.live_url, request, headers))
199
214
 
200
- build_response(response[:result] == "0", response[:message], response,
201
- :test => test?,
202
- :authorization => response[:pn_ref] || response[:rp_ref],
203
- :cvv_result => CVV_CODE[response[:cv_result]],
204
- :avs_result => { :code => response[:avs_result] }
215
+ build_response(
216
+ success_for(response),
217
+ response[:message], response,
218
+ test: test?,
219
+ authorization: response[:pn_ref] || response[:rp_ref],
220
+ cvv_result: CVV_CODE[response[:cv_result]],
221
+ avs_result: { code: response[:avs_result] },
222
+ fraud_review: under_fraud_review?(response)
205
223
  )
206
224
  end
225
+
226
+ def success_for(response)
227
+ %w(0 126).include?(response[:result])
228
+ end
229
+
230
+ def under_fraud_review?(response)
231
+ (response[:result] == '126')
232
+ end
207
233
  end
208
234
  end
209
235
  end
@@ -4,26 +4,30 @@ module ActiveMerchant #:nodoc:
4
4
  def email
5
5
  @params['e_mail']
6
6
  end
7
-
7
+
8
8
  def full_name
9
9
  "#{@params['name']} #{@params['lastname']}"
10
10
  end
11
-
11
+
12
12
  def token
13
13
  @params['token']
14
14
  end
15
-
15
+
16
16
  def payer_id
17
17
  @params['payer_id']
18
18
  end
19
-
19
+
20
20
  # Really the shipping country, but it is all the information provided
21
21
  def payer_country
22
22
  address['country']
23
23
  end
24
-
24
+
25
+ def phone
26
+ @params['phone']
27
+ end
28
+
25
29
  def address
26
- { 'name' => full_name,
30
+ { 'name' => @params['shiptoname'] || full_name,
27
31
  'company' => nil,
28
32
  'address1' => @params['street'],
29
33
  'address2' => @params['shiptostreet2'] || @params['street2'],
@@ -31,7 +35,7 @@ module ActiveMerchant #:nodoc:
31
35
  'state' => @params['state'],
32
36
  'country' => @params['country'],
33
37
  'zip' => @params['zip'],
34
- 'phone' => nil
38
+ 'phone' => phone,
35
39
  }
36
40
  end
37
41
  end
@@ -4,10 +4,10 @@ module ActiveMerchant #:nodoc:
4
4
  def profile_id
5
5
  @params['profile_id']
6
6
  end
7
-
7
+
8
8
  def payment_history
9
- @payment_history ||= @params['rp_payment_result'].collect{ |result| result.stringify_keys } rescue []
9
+ @payment_history ||= @params['rp_payment_result'].collect(&:stringify_keys) rescue []
10
10
  end
11
11
  end
12
12
  end
13
- end
13
+ end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/payflow/payflow_common_api'
2
- require File.dirname(__FILE__) + '/payflow/payflow_response'
3
- require File.dirname(__FILE__) + '/payflow_express'
1
+ require 'active_merchant/billing/gateways/payflow/payflow_common_api'
2
+ require 'active_merchant/billing/gateways/payflow/payflow_response'
3
+ require 'active_merchant/billing/gateways/payflow_express'
4
4
 
5
5
  module ActiveMerchant #:nodoc:
6
6
  module Billing #:nodoc:
@@ -27,7 +27,7 @@ module ActiveMerchant #:nodoc:
27
27
 
28
28
  def credit(money, funding_source, options = {})
29
29
  if funding_source.is_a?(String)
30
- deprecated CREDIT_DEPRECATION_MESSAGE
30
+ ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
31
31
  # Perform referenced credit
32
32
  refund(money, funding_source, options)
33
33
  elsif card_brand(funding_source) == 'check'
@@ -44,6 +44,22 @@ module ActiveMerchant #:nodoc:
44
44
  commit(build_reference_request(:credit, money, reference, options), options)
45
45
  end
46
46
 
47
+ def verify(payment, options={})
48
+ if credit_card_type(payment) == 'Amex'
49
+ MultiResponse.run(:use_first_response) do |r|
50
+ r.process { authorize(100, payment, options) }
51
+ r.process(:ignore_result) { void(r.authorization, options) }
52
+ end
53
+ else
54
+ authorize(0, payment, options)
55
+ end
56
+ end
57
+
58
+ def verify_credentials
59
+ response = void('0')
60
+ response.params['result'] != '26'
61
+ end
62
+
47
63
  # Adds or modifies a recurring Payflow profile. See the Payflow Pro Recurring Billing Guide for more details:
48
64
  # https://www.paypal.com/en_US/pdf/PayflowPro_RecurringBilling_Guide.pdf
49
65
  #
@@ -57,20 +73,26 @@ module ActiveMerchant #:nodoc:
57
73
  # * <tt>payments</tt> - The term, or number of payments that will be made
58
74
  # * <tt>comment</tt> - A comment associated with the profile
59
75
  def recurring(money, credit_card, options = {})
76
+ ActiveMerchant.deprecated RECURRING_DEPRECATION_MESSAGE
77
+
60
78
  options[:name] = credit_card.name if options[:name].blank? && credit_card
61
79
  request = build_recurring_request(options[:profile_id] ? :modify : :add, money, options) do |xml|
62
- add_credit_card(xml, credit_card) if credit_card
80
+ add_credit_card(xml, credit_card, options) if credit_card
63
81
  end
64
82
  commit(request, options.merge(:request_type => :recurring))
65
83
  end
66
84
 
67
85
  def cancel_recurring(profile_id)
86
+ ActiveMerchant.deprecated RECURRING_DEPRECATION_MESSAGE
87
+
68
88
  request = build_recurring_request(:cancel, 0, :profile_id => profile_id)
69
89
  commit(request, options.merge(:request_type => :recurring))
70
90
  end
71
91
 
72
92
  def recurring_inquiry(profile_id, options = {})
73
- request = build_recurring_request(:inquiry, nil, options.update( :profile_id => profile_id ))
93
+ ActiveMerchant.deprecated RECURRING_DEPRECATION_MESSAGE
94
+
95
+ request = build_recurring_request(:inquiry, nil, options.update(:profile_id => profile_id))
74
96
  commit(request, options.merge(:request_type => :recurring))
75
97
  end
76
98
 
@@ -78,7 +100,20 @@ module ActiveMerchant #:nodoc:
78
100
  @express ||= PayflowExpressGateway.new(@options)
79
101
  end
80
102
 
103
+ def supports_scrubbing?
104
+ true
105
+ end
106
+
107
+ def scrub(transcript)
108
+ transcript.
109
+ gsub(%r((<CardNum>)[^<]*(</CardNum>)), '\1[FILTERED]\2').
110
+ gsub(%r((<CVNum>)[^<]*(</CVNum>)), '\1[FILTERED]\2').
111
+ gsub(%r((<AcctNum>)[^<]*(</AcctNum>)), '\1[FILTERED]\2').
112
+ gsub(%r((<Password>)[^<]*(</Password>)), '\1[FILTERED]\2')
113
+ end
114
+
81
115
  private
116
+
82
117
  def build_sale_or_authorization_request(action, money, funding_source, options)
83
118
  if funding_source.is_a?(String)
84
119
  build_reference_sale_or_authorization_request(action, money, funding_source, options)
@@ -98,6 +133,7 @@ module ActiveMerchant #:nodoc:
98
133
  xml.tag! 'CustIP', options[:ip] unless options[:ip].blank?
99
134
  xml.tag! 'InvNum', options[:order_id].to_s.gsub(/[^\w.]/, '') unless options[:order_id].blank?
100
135
  xml.tag! 'Description', options[:description] unless options[:description].blank?
136
+ xml.tag! 'OrderDesc', options[:order_desc] unless options[:order_desc].blank?
101
137
  xml.tag! 'Comment', options[:comment] unless options[:comment].blank?
102
138
  xml.tag!('ExtData', 'Name'=> 'COMMENT2', 'Value'=> options[:comment2]) unless options[:comment2].blank?
103
139
  xml.tag! 'TaxAmt', options[:taxamt] unless options[:taxamt].blank?
@@ -107,7 +143,7 @@ module ActiveMerchant #:nodoc:
107
143
 
108
144
  billing_address = options[:billing_address] || options[:address]
109
145
  add_address(xml, 'BillTo', billing_address, options) if billing_address
110
- add_address(xml, 'ShipTo', options[:shipping_address],options) if options[:shipping_address]
146
+ add_address(xml, 'ShipTo', options[:shipping_address], options) if options[:shipping_address]
111
147
 
112
148
  xml.tag! 'TotalAmt', amount(money), 'Currency' => options[:currency] || currency(money)
113
149
  end
@@ -129,6 +165,7 @@ module ActiveMerchant #:nodoc:
129
165
  xml.tag! 'CustIP', options[:ip] unless options[:ip].blank?
130
166
  xml.tag! 'InvNum', options[:order_id].to_s.gsub(/[^\w.]/, '') unless options[:order_id].blank?
131
167
  xml.tag! 'Description', options[:description] unless options[:description].blank?
168
+ xml.tag! 'OrderDesc', options[:order_desc] unless options[:order_desc].blank?
132
169
  # Comment and Comment2 will show up in manager.paypal.com as Comment1 and Comment2
133
170
  xml.tag! 'Comment', options[:comment] unless options[:comment].blank?
134
171
  xml.tag!('ExtData', 'Name'=> 'COMMENT2', 'Value'=> options[:comment2]) unless options[:comment2].blank?
@@ -136,6 +173,7 @@ module ActiveMerchant #:nodoc:
136
173
  xml.tag! 'FreightAmt', options[:freightamt] unless options[:freightamt].blank?
137
174
  xml.tag! 'DutyAmt', options[:dutyamt] unless options[:dutyamt].blank?
138
175
  xml.tag! 'DiscountAmt', options[:discountamt] unless options[:discountamt].blank?
176
+ xml.tag! 'EMail', options[:email] unless options[:email].nil?
139
177
 
140
178
  billing_address = options[:billing_address] || options[:address]
141
179
  add_address(xml, 'BillTo', billing_address, options) if billing_address
@@ -145,7 +183,7 @@ module ActiveMerchant #:nodoc:
145
183
  end
146
184
 
147
185
  xml.tag! 'Tender' do
148
- add_credit_card(xml, credit_card)
186
+ add_credit_card(xml, credit_card, options)
149
187
  end
150
188
  end
151
189
  end
@@ -160,6 +198,7 @@ module ActiveMerchant #:nodoc:
160
198
  xml.tag! 'CustIP', options[:ip] unless options[:ip].blank?
161
199
  xml.tag! 'InvNum', options[:order_id].to_s.gsub(/[^\w.]/, '') unless options[:order_id].blank?
162
200
  xml.tag! 'Description', options[:description] unless options[:description].blank?
201
+ xml.tag! 'OrderDesc', options[:order_desc] unless options[:order_desc].blank?
163
202
  xml.tag! 'BillTo' do
164
203
  xml.tag! 'Name', check.name
165
204
  end
@@ -177,7 +216,7 @@ module ActiveMerchant #:nodoc:
177
216
  xml.target!
178
217
  end
179
218
 
180
- def add_credit_card(xml, credit_card)
219
+ def add_credit_card(xml, credit_card, options = {})
181
220
  xml.tag! 'Card' do
182
221
  xml.tag! 'CardType', credit_card_type(credit_card)
183
222
  xml.tag! 'CardNum', credit_card.number
@@ -185,10 +224,19 @@ module ActiveMerchant #:nodoc:
185
224
  xml.tag! 'NameOnCard', credit_card.first_name
186
225
  xml.tag! 'CVNum', credit_card.verification_value if credit_card.verification_value?
187
226
 
188
- if requires_start_date_or_issue_number?(credit_card)
189
- xml.tag!('ExtData', 'Name' => 'CardStart', 'Value' => startdate(credit_card)) unless credit_card.start_month.blank? || credit_card.start_year.blank?
190
- xml.tag!('ExtData', 'Name' => 'CardIssue', 'Value' => format(credit_card.issue_number, :two_digits)) unless credit_card.issue_number.blank?
227
+ if options[:three_d_secure]
228
+ three_d_secure = options[:three_d_secure]
229
+ xml.tag! 'BuyerAuthResult' do
230
+ xml.tag! 'Status', three_d_secure[:status] unless three_d_secure[:status].blank?
231
+ xml.tag! 'AuthenticationId', three_d_secure[:authentication_id] unless three_d_secure[:authentication_id].blank?
232
+ xml.tag! 'PAReq', three_d_secure[:pareq] unless three_d_secure[:pareq].blank?
233
+ xml.tag! 'ACSUrl', three_d_secure[:acs_url] unless three_d_secure[:acs_url].blank?
234
+ xml.tag! 'ECI', three_d_secure[:eci] unless three_d_secure[:eci].blank?
235
+ xml.tag! 'CAVV', three_d_secure[:cavv] unless three_d_secure[:cavv].blank?
236
+ xml.tag! 'XID', three_d_secure[:xid] unless three_d_secure[:xid].blank?
237
+ end
191
238
  end
239
+
192
240
  xml.tag! 'ExtData', 'Name' => 'LASTNAME', 'Value' => credit_card.last_name
193
241
  end
194
242
  end
@@ -200,8 +248,8 @@ module ActiveMerchant #:nodoc:
200
248
  end
201
249
 
202
250
  def expdate(creditcard)
203
- year = sprintf("%.4i", creditcard.year.to_s.sub(/^0+/, ''))
204
- month = sprintf("%.2i", creditcard.month.to_s.sub(/^0+/, ''))
251
+ year = sprintf('%.4i', creditcard.year.to_s.sub(/^0+/, ''))
252
+ month = sprintf('%.2i', creditcard.month.to_s.sub(/^0+/, ''))
205
253
 
206
254
  "#{year}#{month}"
207
255
  end
@@ -241,7 +289,7 @@ module ActiveMerchant #:nodoc:
241
289
  end
242
290
 
243
291
  if action == :add
244
- xml.tag! 'Start', format_rp_date(options[:starting_at] || Date.today + 1 )
292
+ xml.tag! 'Start', format_rp_date(options[:starting_at] || Date.today + 1)
245
293
  else
246
294
  xml.tag! 'Start', format_rp_date(options[:starting_at]) unless options[:starting_at].nil?
247
295
  end
@@ -257,10 +305,10 @@ module ActiveMerchant #:nodoc:
257
305
  end
258
306
  end
259
307
  if action != :add
260
- xml.tag! "ProfileID", options[:profile_id]
308
+ xml.tag! 'ProfileID', options[:profile_id]
261
309
  end
262
310
  if action == :inquiry
263
- xml.tag! "PaymentHistory", ( options[:history] ? 'Y' : 'N' )
311
+ xml.tag! 'PaymentHistory', (options[:history] ? 'Y' : 'N')
264
312
  end
265
313
  end
266
314
  end
@@ -270,20 +318,20 @@ module ActiveMerchant #:nodoc:
270
318
  def get_pay_period(options)
271
319
  requires!(options, [:periodicity, :bimonthly, :monthly, :biweekly, :weekly, :yearly, :daily, :semimonthly, :quadweekly, :quarterly, :semiyearly])
272
320
  case options[:periodicity]
273
- when :weekly then 'Weekly'
274
- when :biweekly then 'Bi-weekly'
275
- when :semimonthly then 'Semi-monthly'
276
- when :quadweekly then 'Every four weeks'
277
- when :monthly then 'Monthly'
278
- when :quarterly then 'Quarterly'
279
- when :semiyearly then 'Semi-yearly'
280
- when :yearly then 'Yearly'
321
+ when :weekly then 'Weekly'
322
+ when :biweekly then 'Bi-weekly'
323
+ when :semimonthly then 'Semi-monthly'
324
+ when :quadweekly then 'Every four weeks'
325
+ when :monthly then 'Monthly'
326
+ when :quarterly then 'Quarterly'
327
+ when :semiyearly then 'Semi-yearly'
328
+ when :yearly then 'Yearly'
281
329
  end
282
330
  end
283
331
 
284
332
  def format_rp_date(time)
285
333
  case time
286
- when Time, Date then time.strftime("%m%d%Y")
334
+ when Time, Date then time.strftime('%m%d%Y')
287
335
  else
288
336
  time.to_s
289
337
  end
@@ -295,4 +343,3 @@ module ActiveMerchant #:nodoc:
295
343
  end
296
344
  end
297
345
  end
298
-