mattbauer-activemerchant 1.4.2

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 (292) hide show
  1. data/CHANGELOG +459 -0
  2. data/CONTRIBUTERS +118 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README +134 -0
  5. data/Rakefile +153 -0
  6. data/gem-public_cert.pem +20 -0
  7. data/init.rb +3 -0
  8. data/lib/active_merchant.rb +60 -0
  9. data/lib/active_merchant/billing/avs_result.rb +98 -0
  10. data/lib/active_merchant/billing/base.rb +57 -0
  11. data/lib/active_merchant/billing/check.rb +68 -0
  12. data/lib/active_merchant/billing/credit_card.rb +159 -0
  13. data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
  14. data/lib/active_merchant/billing/credit_card_methods.rb +125 -0
  15. data/lib/active_merchant/billing/cvv_result.rb +38 -0
  16. data/lib/active_merchant/billing/expiry_date.rb +34 -0
  17. data/lib/active_merchant/billing/gateway.rb +158 -0
  18. data/lib/active_merchant/billing/gateways.rb +3 -0
  19. data/lib/active_merchant/billing/gateways/authorize_net.rb +657 -0
  20. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +703 -0
  21. data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
  22. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
  23. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  24. data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
  25. data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
  26. data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
  27. data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
  28. data/lib/active_merchant/billing/gateways/data_cash.rb +595 -0
  29. data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
  30. data/lib/active_merchant/billing/gateways/elavon.rb +106 -0
  31. data/lib/active_merchant/billing/gateways/eway.rb +277 -0
  32. data/lib/active_merchant/billing/gateways/exact.rb +222 -0
  33. data/lib/active_merchant/billing/gateways/first_pay.rb +172 -0
  34. data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
  35. data/lib/active_merchant/billing/gateways/linkpoint.rb +396 -0
  36. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
  37. data/lib/active_merchant/billing/gateways/merchant_ware.rb +283 -0
  38. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  39. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  40. data/lib/active_merchant/billing/gateways/moneris.rb +295 -0
  41. data/lib/active_merchant/billing/gateways/moneris_usa.rb +258 -0
  42. data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
  43. data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
  44. data/lib/active_merchant/billing/gateways/ogone.rb +259 -0
  45. data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
  46. data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
  47. data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
  48. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
  49. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
  50. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
  51. data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
  52. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
  53. data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
  54. data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
  55. data/lib/active_merchant/billing/gateways/paypal.rb +121 -0
  56. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +325 -0
  57. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
  58. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  59. data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
  60. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
  61. data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
  62. data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
  63. data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
  64. data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
  65. data/lib/active_merchant/billing/gateways/realex.rb +200 -0
  66. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  67. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  68. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +110 -0
  69. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  70. data/lib/active_merchant/billing/gateways/sage_pay.rb +308 -0
  71. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  72. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
  73. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  74. data/lib/active_merchant/billing/gateways/skip_jack.rb +442 -0
  75. data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
  76. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  77. data/lib/active_merchant/billing/gateways/transax.rb +26 -0
  78. data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
  79. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  80. data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
  81. data/lib/active_merchant/billing/gateways/viaklix.rb +189 -0
  82. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  83. data/lib/active_merchant/billing/integrations.rb +22 -0
  84. data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
  85. data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
  86. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  87. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  88. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  89. data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
  90. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
  91. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
  92. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  93. data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
  94. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  95. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  96. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
  97. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  98. data/lib/active_merchant/billing/integrations/helper.rb +93 -0
  99. data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
  100. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  101. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  102. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  103. data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
  104. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  105. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  106. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  107. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  108. data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
  109. data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -0
  110. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  111. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  112. data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
  113. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  114. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  115. data/lib/active_merchant/billing/integrations/return.rb +35 -0
  116. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  117. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  118. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  119. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  120. data/lib/active_merchant/billing/response.rb +32 -0
  121. data/lib/active_merchant/lib/connection.rb +170 -0
  122. data/lib/active_merchant/lib/country.rb +319 -0
  123. data/lib/active_merchant/lib/error.rb +4 -0
  124. data/lib/active_merchant/lib/post_data.rb +22 -0
  125. data/lib/active_merchant/lib/posts_data.rb +47 -0
  126. data/lib/active_merchant/lib/requires_parameters.rb +16 -0
  127. data/lib/active_merchant/lib/utils.rb +18 -0
  128. data/lib/active_merchant/lib/validateable.rb +76 -0
  129. data/lib/certs/cacert.pem +7815 -0
  130. data/lib/support/gateway_support.rb +58 -0
  131. data/script/destroy +14 -0
  132. data/script/generate +14 -0
  133. data/test/fixtures.yml +353 -0
  134. data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
  135. data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
  136. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  137. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  138. data/test/remote/gateways/remote_braintree_test.rb +154 -0
  139. data/test/remote/gateways/remote_card_stream_test.rb +148 -0
  140. data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
  141. data/test/remote/gateways/remote_data_cash_test.rb +357 -0
  142. data/test/remote/gateways/remote_efsnet_test.rb +81 -0
  143. data/test/remote/gateways/remote_elavon_test.rb +66 -0
  144. data/test/remote/gateways/remote_eway_test.rb +74 -0
  145. data/test/remote/gateways/remote_exact_test.rb +60 -0
  146. data/test/remote/gateways/remote_first_pay_test.rb +87 -0
  147. data/test/remote/gateways/remote_instapay_test.rb +61 -0
  148. data/test/remote/gateways/remote_linkpoint_test.rb +112 -0
  149. data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
  150. data/test/remote/gateways/remote_merchant_ware_test.rb +113 -0
  151. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  152. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  153. data/test/remote/gateways/remote_moneris_test.rb +118 -0
  154. data/test/remote/gateways/remote_moneris_usa_test.rb +115 -0
  155. data/test/remote/gateways/remote_net_registry_test.rb +85 -0
  156. data/test/remote/gateways/remote_netbilling_test.rb +70 -0
  157. data/test/remote/gateways/remote_ogone_test.rb +108 -0
  158. data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
  159. data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
  160. data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
  161. data/test/remote/gateways/remote_payflow_test.rb +237 -0
  162. data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
  163. data/test/remote/gateways/remote_payment_express_test.rb +136 -0
  164. data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
  165. data/test/remote/gateways/remote_paypal_test.rb +178 -0
  166. data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
  167. data/test/remote/gateways/remote_psigate_test.rb +50 -0
  168. data/test/remote/gateways/remote_psl_card_test.rb +125 -0
  169. data/test/remote/gateways/remote_quickpay_test.rb +190 -0
  170. data/test/remote/gateways/remote_realex_test.rb +224 -0
  171. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  172. data/test/remote/gateways/remote_sage_pay_test.rb +219 -0
  173. data/test/remote/gateways/remote_sage_test.rb +87 -0
  174. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  175. data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
  176. data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
  177. data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
  178. data/test/remote/gateways/remote_skipjack_test.rb +105 -0
  179. data/test/remote/gateways/remote_trans_first_test.rb +34 -0
  180. data/test/remote/gateways/remote_transax_test.rb +112 -0
  181. data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
  182. data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
  183. data/test/remote/gateways/remote_verifi_test.rb +107 -0
  184. data/test/remote/gateways/remote_viaklix_test.rb +43 -0
  185. data/test/remote/gateways/remote_wirecard_test.rb +111 -0
  186. data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
  187. data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
  188. data/test/test_helper.rb +182 -0
  189. data/test/unit/avs_result_test.rb +59 -0
  190. data/test/unit/base_test.rb +55 -0
  191. data/test/unit/check_test.rb +88 -0
  192. data/test/unit/connection_test.rb +129 -0
  193. data/test/unit/country_code_test.rb +33 -0
  194. data/test/unit/country_test.rb +64 -0
  195. data/test/unit/credit_card_formatting_test.rb +19 -0
  196. data/test/unit/credit_card_methods_test.rb +179 -0
  197. data/test/unit/credit_card_test.rb +318 -0
  198. data/test/unit/cvv_result_test.rb +33 -0
  199. data/test/unit/expiry_date_test.rb +32 -0
  200. data/test/unit/gateways/authorize_net_cim_test.rb +638 -0
  201. data/test/unit/gateways/authorize_net_test.rb +290 -0
  202. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  203. data/test/unit/gateways/beanstream_test.rb +108 -0
  204. data/test/unit/gateways/bogus_test.rb +46 -0
  205. data/test/unit/gateways/braintree_test.rb +126 -0
  206. data/test/unit/gateways/card_stream_test.rb +90 -0
  207. data/test/unit/gateways/cyber_source_test.rb +188 -0
  208. data/test/unit/gateways/data_cash_test.rb +133 -0
  209. data/test/unit/gateways/efsnet_test.rb +123 -0
  210. data/test/unit/gateways/elavon_test.rb +139 -0
  211. data/test/unit/gateways/eway_test.rb +118 -0
  212. data/test/unit/gateways/exact_test.rb +156 -0
  213. data/test/unit/gateways/first_pay_test.rb +125 -0
  214. data/test/unit/gateways/gateway_test.rb +48 -0
  215. data/test/unit/gateways/instapay_test.rb +102 -0
  216. data/test/unit/gateways/linkpoint_test.rb +167 -0
  217. data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
  218. data/test/unit/gateways/merchant_ware_test.rb +188 -0
  219. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  220. data/test/unit/gateways/moneris_test.rb +185 -0
  221. data/test/unit/gateways/moneris_usa_test.rb +183 -0
  222. data/test/unit/gateways/net_registry_test.rb +416 -0
  223. data/test/unit/gateways/netbilling_test.rb +54 -0
  224. data/test/unit/gateways/ogone_test.rb +256 -0
  225. data/test/unit/gateways/pay_junction_test.rb +123 -0
  226. data/test/unit/gateways/pay_secure_test.rb +71 -0
  227. data/test/unit/gateways/payflow_express_test.rb +173 -0
  228. data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
  229. data/test/unit/gateways/payflow_test.rb +305 -0
  230. data/test/unit/gateways/payflow_uk_test.rb +30 -0
  231. data/test/unit/gateways/payment_express_test.rb +195 -0
  232. data/test/unit/gateways/paypal_express_test.rb +382 -0
  233. data/test/unit/gateways/paypal_test.rb +569 -0
  234. data/test/unit/gateways/plugnpay_test.rb +86 -0
  235. data/test/unit/gateways/psigate_test.rb +169 -0
  236. data/test/unit/gateways/psl_card_test.rb +64 -0
  237. data/test/unit/gateways/quickpay_test.rb +112 -0
  238. data/test/unit/gateways/realex_test.rb +151 -0
  239. data/test/unit/gateways/sage_bankcard_test.rb +162 -0
  240. data/test/unit/gateways/sage_pay_test.rb +139 -0
  241. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  242. data/test/unit/gateways/secure_pay_au_test.rb +207 -0
  243. data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
  244. data/test/unit/gateways/secure_pay_test.rb +87 -0
  245. data/test/unit/gateways/skip_jack_test.rb +133 -0
  246. data/test/unit/gateways/trans_first_test.rb +112 -0
  247. data/test/unit/gateways/trust_commerce_test.rb +90 -0
  248. data/test/unit/gateways/usa_epay_test.rb +128 -0
  249. data/test/unit/gateways/verifi_test.rb +96 -0
  250. data/test/unit/gateways/viaklix_test.rb +78 -0
  251. data/test/unit/gateways/wirecard_test.rb +250 -0
  252. data/test/unit/generators/test_gateway_generator.rb +46 -0
  253. data/test/unit/generators/test_generator_helper.rb +20 -0
  254. data/test/unit/generators/test_integration_generator.rb +53 -0
  255. data/test/unit/integrations/action_view_helper_test.rb +50 -0
  256. data/test/unit/integrations/bogus_module_test.rb +20 -0
  257. data/test/unit/integrations/chronopay_module_test.rb +13 -0
  258. data/test/unit/integrations/gestpay_module_test.rb +14 -0
  259. data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
  260. data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
  261. data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
  262. data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
  263. data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
  264. data/test/unit/integrations/helpers/paypal_helper_test.rb +171 -0
  265. data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
  266. data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
  267. data/test/unit/integrations/hi_trust_module_test.rb +13 -0
  268. data/test/unit/integrations/nochex_module_test.rb +13 -0
  269. data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
  270. data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
  271. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
  272. data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
  273. data/test/unit/integrations/notifications/notification_test.rb +54 -0
  274. data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
  275. data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
  276. data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
  277. data/test/unit/integrations/paypal_module_test.rb +28 -0
  278. data/test/unit/integrations/quickpay_module_test.rb +9 -0
  279. data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
  280. data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
  281. data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
  282. data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
  283. data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
  284. data/test/unit/integrations/returns/return_test.rb +11 -0
  285. data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
  286. data/test/unit/integrations/two_checkout_module_test.rb +13 -0
  287. data/test/unit/post_data_test.rb +55 -0
  288. data/test/unit/posts_data_test.rb +48 -0
  289. data/test/unit/response_test.rb +28 -0
  290. data/test/unit/utils_test.rb +7 -0
  291. data/test/unit/validateable_test.rb +60 -0
  292. metadata +396 -0
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+
3
+ class PayflowUkTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = PayflowUkGateway.new(
6
+ :login => 'LOGIN',
7
+ :password => 'PASSWORD'
8
+ )
9
+ end
10
+
11
+ def test_default_currency
12
+ assert_equal 'GBP', PayflowUkGateway.default_currency
13
+ end
14
+
15
+ def test_express_instance
16
+ assert_instance_of PayflowExpressUkGateway, @gateway.express
17
+ end
18
+
19
+ def test_default_partner
20
+ assert_equal 'PayPalUk', PayflowUkGateway.partner
21
+ end
22
+
23
+ def test_supported_countries
24
+ assert_equal ['GB'], PayflowUkGateway.supported_countries
25
+ end
26
+
27
+ def test_supported_card_types
28
+ assert_equal [:visa, :master, :american_express, :discover, :solo, :switch], PayflowUkGateway.supported_cardtypes
29
+ end
30
+ end
@@ -0,0 +1,195 @@
1
+ require 'test_helper'
2
+
3
+ class PaymentExpressTest < Test::Unit::TestCase
4
+ def setup
5
+
6
+ @gateway = PaymentExpressGateway.new(
7
+ :login => 'LOGIN',
8
+ :password => 'PASSWORD'
9
+ )
10
+
11
+ @visa = credit_card
12
+
13
+ @solo = credit_card("6334900000000005",
14
+ :type => "solo",
15
+ :issue_number => '01'
16
+ )
17
+
18
+ @options = {
19
+ :order_id => generate_unique_id,
20
+ :billing_address => address,
21
+ :email => 'cody@example.com',
22
+ :description => 'Store purchase'
23
+ }
24
+
25
+ @amount = 100
26
+ end
27
+
28
+ def test_default_currency
29
+ assert_equal 'NZD', PaymentExpressGateway.default_currency
30
+ end
31
+
32
+ def test_invalid_credentials
33
+ @gateway.expects(:ssl_post).returns(invalid_credentials_response)
34
+
35
+ assert response = @gateway.purchase(@amount, @visa, @options)
36
+ assert_equal 'Invalid Credentials', response.message
37
+ assert_failure response
38
+ end
39
+
40
+ def test_successful_authorization
41
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
42
+
43
+ assert response = @gateway.purchase(@amount, @visa, @options)
44
+ assert_success response
45
+ assert response.test?
46
+ assert_equal 'APPROVED', response.message
47
+ assert_equal '00000004011a2478', response.authorization
48
+ end
49
+
50
+ def test_successful_solo_authorization
51
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
52
+
53
+ assert response = @gateway.purchase(@amount, @solo, @options)
54
+ assert_success response
55
+ assert response.test?
56
+ assert_equal 'APPROVED', response.message
57
+ assert_equal '00000004011a2478', response.authorization
58
+ end
59
+
60
+ def test_successful_card_store
61
+ @gateway.expects(:ssl_post).returns( successful_store_response )
62
+
63
+ assert response = @gateway.store(@visa)
64
+ assert_success response
65
+ assert response.test?
66
+ assert_equal '0000030000141581', response.token
67
+ end
68
+
69
+ def test_successful_card_store_with_custom_billing_id
70
+ @gateway.expects(:ssl_post).returns( successful_store_response(:billing_id => "my-custom-id") )
71
+
72
+ assert response = @gateway.store(@visa, :billing_id => "my-custom-id")
73
+ assert_success response
74
+ assert response.test?
75
+ assert_equal 'my-custom-id', response.token
76
+ end
77
+
78
+ def test_unsuccessful_card_store
79
+ @gateway.expects(:ssl_post).returns( unsuccessful_store_response )
80
+
81
+ @visa.number = 2
82
+
83
+ assert response = @gateway.store(@visa)
84
+ assert_failure response
85
+ end
86
+
87
+ def test_purchase_using_token
88
+ @gateway.expects(:ssl_post).returns( successful_store_response )
89
+
90
+ assert response = @gateway.store(@visa)
91
+ token = response.token
92
+
93
+ @gateway.expects(:ssl_post).returns( successful_token_purchase_response )
94
+
95
+ assert response = @gateway.purchase(@amount, token, @options)
96
+ assert_success response
97
+ assert_equal 'APPROVED', response.message
98
+ assert_equal '0000000303ace8db', response.authorization
99
+ end
100
+
101
+ def test_supported_countries
102
+ assert_equal ['AU','MY','NZ','SG','ZA','GB','US'], PaymentExpressGateway.supported_countries
103
+ end
104
+
105
+ def test_supported_card_types
106
+ assert_equal [ :visa, :master, :american_express, :diners_club, :jcb ], PaymentExpressGateway.supported_cardtypes
107
+ end
108
+
109
+ def test_avs_result_not_supported
110
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
111
+
112
+ response = @gateway.purchase(@amount, @visa, @options)
113
+ assert_nil response.avs_result['code']
114
+ end
115
+
116
+ def test_cvv_result_not_supported
117
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
118
+
119
+ response = @gateway.purchase(@amount, @visa, @options)
120
+ assert_nil response.cvv_result['code']
121
+ end
122
+
123
+ private
124
+ def invalid_credentials_response
125
+ '<Txn><ReCo>0</ReCo><ResponseText>Invalid Credentials</ResponseText></Txn>'
126
+ end
127
+
128
+ def successful_authorization_response
129
+ <<-RESPONSE
130
+ <Txn>
131
+ <Transaction success="1" reco="00" responsetext="APPROVED">
132
+ <Authorized>1</Authorized>
133
+ <MerchantReference>Test Transaction</MerchantReference>
134
+ <Cvc2>M</Cvc2>
135
+ <CardName>Visa</CardName>
136
+ <Retry>0</Retry>
137
+ <StatusRequired>0</StatusRequired>
138
+ <AuthCode>015921</AuthCode>
139
+ <Amount>1.23</Amount>
140
+ <InputCurrencyId>1</InputCurrencyId>
141
+ <InputCurrencyName>NZD</InputCurrencyName>
142
+ <Acquirer>WestpacTrust</Acquirer>
143
+ <CurrencyId>1</CurrencyId>
144
+ <CurrencyName>NZD</CurrencyName>
145
+ <CurrencyRate>1.00</CurrencyRate>
146
+ <Acquirer>WestpacTrust</Acquirer>
147
+ <AcquirerDate>30102000</AcquirerDate>
148
+ <AcquirerId>1</AcquirerId>
149
+ <CardHolderName>DPS</CardHolderName>
150
+ <DateSettlement>20050811</DateSettlement>
151
+ <TxnType>Purchase</TxnType>
152
+ <CardNumber>411111</CardNumber>
153
+ <DateExpiry>0807</DateExpiry>
154
+ <ProductId></ProductId>
155
+ <AcquirerDate>20050811</AcquirerDate>
156
+ <AcquirerTime>060039</AcquirerTime>
157
+ <AcquirerId>9000</AcquirerId>
158
+ <Acquirer>Test</Acquirer>
159
+ <TestMode>1</TestMode>
160
+ <CardId>2</CardId>
161
+ <CardHolderResponseText>APPROVED</CardHolderResponseText>
162
+ <CardHolderHelpText>The Transaction was approved</CardHolderHelpText>
163
+ <CardHolderResponseDescription>The Transaction was approved</CardHolderResponseDescription>
164
+ <MerchantResponseText>APPROVED</MerchantResponseText>
165
+ <MerchantHelpText>The Transaction was approved</MerchantHelpText>
166
+ <MerchantResponseDescription>The Transaction was approved</MerchantResponseDescription>
167
+ <GroupAccount>9997</GroupAccount>
168
+ <DpsTxnRef>00000004011a2478</DpsTxnRef>
169
+ <AllowRetry>0</AllowRetry>
170
+ <DpsBillingId></DpsBillingId>
171
+ <BillingId></BillingId>
172
+ <TransactionId>011a2478</TransactionId>
173
+ </Transaction>
174
+ <ReCo>00</ReCo>
175
+ <ResponseText>APPROVED</ResponseText>
176
+ <HelpText>The Transaction was approved</HelpText>
177
+ <Success>1</Success>
178
+ <TxnRef>00000004011a2478</TxnRef>
179
+ </Txn>
180
+ RESPONSE
181
+ end
182
+
183
+ def successful_store_response(options = {})
184
+ %(<Txn><Transaction success="1" reco="00" responsetext="APPROVED"><Authorized>1</Authorized><MerchantReference></MerchantReference><CardName>Visa</CardName><Retry>0</Retry><StatusRequired>0</StatusRequired><AuthCode>02381203accf5c00000003</AuthCode><Amount>0.01</Amount><CurrencyId>554</CurrencyId><InputCurrencyId>554</InputCurrencyId><InputCurrencyName>NZD</InputCurrencyName><CurrencyRate>1.00</CurrencyRate><CurrencyName>NZD</CurrencyName><CardHolderName>BOB BOBSEN</CardHolderName><DateSettlement>20070323</DateSettlement><TxnType>Auth</TxnType><CardNumber>424242........42</CardNumber><DateExpiry>0809</DateExpiry><ProductId></ProductId><AcquirerDate>20070323</AcquirerDate><AcquirerTime>023812</AcquirerTime><AcquirerId>9000</AcquirerId><Acquirer>Test</Acquirer><TestMode>1</TestMode><CardId>2</CardId><CardHolderResponseText>APPROVED</CardHolderResponseText><CardHolderHelpText>The Transaction was approved</CardHolderHelpText><CardHolderResponseDescription>The Transaction was approved</CardHolderResponseDescription><MerchantResponseText>APPROVED</MerchantResponseText><MerchantHelpText>The Transaction was approved</MerchantHelpText><MerchantResponseDescription>The Transaction was approved</MerchantResponseDescription><UrlFail></UrlFail><UrlSuccess></UrlSuccess><EnablePostResponse>0</EnablePostResponse><PxPayName></PxPayName><PxPayLogoSrc></PxPayLogoSrc><PxPayUserId></PxPayUserId><PxPayXsl></PxPayXsl><PxPayBgColor></PxPayBgColor><AcquirerPort>9999999999-99999999</AcquirerPort><AcquirerTxnRef>12835</AcquirerTxnRef><GroupAccount>9997</GroupAccount><DpsTxnRef>0000000303accf5c</DpsTxnRef><AllowRetry>0</AllowRetry><DpsBillingId>0000030000141581</DpsBillingId><BillingId>#{options[:billing_id]}</BillingId><TransactionId>03accf5c</TransactionId><PxHostId>00000003</PxHostId></Transaction><ReCo>00</ReCo><ResponseText>APPROVED</ResponseText><HelpText>The Transaction was approved</HelpText><Success>1</Success><DpsTxnRef>0000000303accf5c</DpsTxnRef><TxnRef></TxnRef></Txn>)
185
+ end
186
+
187
+ def unsuccessful_store_response(options = {})
188
+ %(<Txn><Transaction success="0" reco="QK" responsetext="INVALID CARD NUMBER"><Authorized>0</Authorized><MerchantReference></MerchantReference><CardName></CardName><Retry>0</Retry><StatusRequired>0</StatusRequired><AuthCode></AuthCode><Amount>0.01</Amount><CurrencyId>554</CurrencyId><InputCurrencyId>554</InputCurrencyId><InputCurrencyName>NZD</InputCurrencyName><CurrencyRate>1.00</CurrencyRate><CurrencyName>NZD</CurrencyName><CardHolderName>LONGBOB LONGSEN</CardHolderName><DateSettlement>19800101</DateSettlement><TxnType>Validate</TxnType><CardNumber>000000........00</CardNumber><DateExpiry>0808</DateExpiry><ProductId></ProductId><AcquirerDate></AcquirerDate><AcquirerTime></AcquirerTime><AcquirerId>9000</AcquirerId><Acquirer></Acquirer><TestMode>0</TestMode><CardId>0</CardId><CardHolderResponseText>INVALID CARD NUMBER</CardHolderResponseText><CardHolderHelpText>An Invalid Card Number was entered. Check the card number</CardHolderHelpText><CardHolderResponseDescription>An Invalid Card Number was entered. Check the card number</CardHolderResponseDescription><MerchantResponseText>INVALID CARD NUMBER</MerchantResponseText><MerchantHelpText>An Invalid Card Number was entered. Check the card number</MerchantHelpText><MerchantResponseDescription>An Invalid Card Number was entered. Check the card number</MerchantResponseDescription><UrlFail></UrlFail><UrlSuccess></UrlSuccess><EnablePostResponse>0</EnablePostResponse><PxPayName></PxPayName><PxPayLogoSrc></PxPayLogoSrc><PxPayUserId></PxPayUserId><PxPayXsl></PxPayXsl><PxPayBgColor></PxPayBgColor><AcquirerPort>9999999999-99999999</AcquirerPort><AcquirerTxnRef>0</AcquirerTxnRef><GroupAccount>9997</GroupAccount><DpsTxnRef></DpsTxnRef><AllowRetry>0</AllowRetry><DpsBillingId></DpsBillingId><BillingId></BillingId><TransactionId>00000000</TransactionId><PxHostId>00000003</PxHostId></Transaction><ReCo>QK</ReCo><ResponseText>INVALID CARD NUMBER</ResponseText><HelpText>An Invalid Card Number was entered. Check the card number</HelpText><Success>0</Success><DpsTxnRef></DpsTxnRef><TxnRef></TxnRef></Txn>)
189
+ end
190
+
191
+ def successful_token_purchase_response
192
+ %(<Txn><Transaction success="1" reco="00" responsetext="APPROVED"><Authorized>1</Authorized><MerchantReference></MerchantReference><CardName>Visa</CardName><Retry>0</Retry><StatusRequired>0</StatusRequired><AuthCode>030817</AuthCode><Amount>10.00</Amount><CurrencyId>554</CurrencyId><InputCurrencyId>554</InputCurrencyId><InputCurrencyName>NZD</InputCurrencyName><CurrencyRate>1.00</CurrencyRate><CurrencyName>NZD</CurrencyName><CardHolderName>LONGBOB LONGSEN</CardHolderName><DateSettlement>20070323</DateSettlement><TxnType>Purchase</TxnType><CardNumber>424242........42</CardNumber><DateExpiry>0808</DateExpiry><ProductId></ProductId><AcquirerDate>20070323</AcquirerDate><AcquirerTime>030817</AcquirerTime><AcquirerId>9000</AcquirerId><Acquirer>Test</Acquirer><TestMode>1</TestMode><CardId>2</CardId><CardHolderResponseText>APPROVED</CardHolderResponseText><CardHolderHelpText>The Transaction was approved</CardHolderHelpText><CardHolderResponseDescription>The Transaction was approved</CardHolderResponseDescription><MerchantResponseText>APPROVED</MerchantResponseText><MerchantHelpText>The Transaction was approved</MerchantHelpText><MerchantResponseDescription>The Transaction was approved</MerchantResponseDescription><UrlFail></UrlFail><UrlSuccess></UrlSuccess><EnablePostResponse>0</EnablePostResponse><PxPayName></PxPayName><PxPayLogoSrc></PxPayLogoSrc><PxPayUserId></PxPayUserId><PxPayXsl></PxPayXsl><PxPayBgColor></PxPayBgColor><AcquirerPort>9999999999-99999999</AcquirerPort><AcquirerTxnRef>12859</AcquirerTxnRef><GroupAccount>9997</GroupAccount><DpsTxnRef>0000000303ace8db</DpsTxnRef><AllowRetry>0</AllowRetry><DpsBillingId>0000030000141581</DpsBillingId><BillingId></BillingId><TransactionId>03ace8db</TransactionId><PxHostId>00000003</PxHostId></Transaction><ReCo>00</ReCo><ResponseText>APPROVED</ResponseText><HelpText>The Transaction was approved</HelpText><Success>1</Success><DpsTxnRef>0000000303ace8db</DpsTxnRef><TxnRef></TxnRef></Txn>)
193
+ end
194
+
195
+ end
@@ -0,0 +1,382 @@
1
+ require 'test_helper'
2
+
3
+ class PaypalExpressTest < Test::Unit::TestCase
4
+ TEST_REDIRECT_URL = 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=1234567890'
5
+ LIVE_REDIRECT_URL = 'https://www.paypal.com/cgibin/webscr?cmd=_express-checkout&token=1234567890'
6
+
7
+ TEST_REDIRECT_URL_WITHOUT_REVIEW = "#{TEST_REDIRECT_URL}&useraction=commit"
8
+ LIVE_REDIRECT_URL_WITHOUT_REVIEW = "#{LIVE_REDIRECT_URL}&useraction=commit"
9
+
10
+ def setup
11
+ @gateway = PaypalExpressGateway.new(
12
+ :login => 'cody',
13
+ :password => 'test',
14
+ :pem => 'PEM'
15
+ )
16
+
17
+ @address = { :address1 => '1234 My Street',
18
+ :address2 => 'Apt 1',
19
+ :company => 'Widgets Inc',
20
+ :city => 'Ottawa',
21
+ :state => 'ON',
22
+ :zip => 'K1C2N6',
23
+ :country => 'Canada',
24
+ :phone => '(555)555-5555'
25
+ }
26
+
27
+ Base.gateway_mode = :test
28
+ end
29
+
30
+ def teardown
31
+ Base.gateway_mode = :test
32
+ end
33
+
34
+ def test_live_redirect_url
35
+ Base.gateway_mode = :production
36
+ assert_equal LIVE_REDIRECT_URL, @gateway.redirect_url_for('1234567890')
37
+ end
38
+
39
+ def test_live_redirect_url_without_review
40
+ Base.gateway_mode = :production
41
+ assert_equal LIVE_REDIRECT_URL_WITHOUT_REVIEW, @gateway.redirect_url_for('1234567890', :review => false)
42
+ end
43
+
44
+ def test_force_sandbox_redirect_url
45
+ Base.gateway_mode = :production
46
+
47
+ gateway = PaypalExpressGateway.new(
48
+ :login => 'cody',
49
+ :password => 'test',
50
+ :pem => 'PEM',
51
+ :test => true
52
+ )
53
+
54
+ assert gateway.test?
55
+ assert_equal TEST_REDIRECT_URL, gateway.redirect_url_for('1234567890')
56
+ end
57
+
58
+ def test_test_redirect_url
59
+ assert_equal :test, Base.gateway_mode
60
+ assert_equal TEST_REDIRECT_URL, @gateway.redirect_url_for('1234567890')
61
+ end
62
+
63
+ def test_test_redirect_url_without_review
64
+ assert_equal :test, Base.gateway_mode
65
+ assert_equal TEST_REDIRECT_URL_WITHOUT_REVIEW, @gateway.redirect_url_for('1234567890', :review => false)
66
+ end
67
+
68
+ def test_get_express_details
69
+ @gateway.expects(:ssl_post).returns(successful_details_response)
70
+ response = @gateway.details_for('EC-2OPN7UJGFWK9OYFV')
71
+
72
+ assert_instance_of PaypalExpressResponse, response
73
+ assert response.success?
74
+ assert response.test?
75
+
76
+ assert_equal 'EC-6WS104951Y388951L', response.token
77
+ assert_equal 'FWRVKNRRZ3WUC', response.payer_id
78
+ assert_equal 'buyer@jadedpallet.com', response.email
79
+
80
+ assert address = response.address
81
+ assert_equal 'Fred Brooks', address['name']
82
+ assert_nil address['company']
83
+ assert_equal '1234 Penny Lane', address['address1']
84
+ assert_nil address['address2']
85
+ assert_equal 'Jonsetown', address['city']
86
+ assert_equal 'NC', address['state']
87
+ assert_equal '23456', address['zip']
88
+ assert_equal 'US', address['country']
89
+ assert_nil address['phone']
90
+ end
91
+
92
+ def test_authorization
93
+ @gateway.expects(:ssl_post).returns(successful_authorization_response)
94
+ response = @gateway.authorize(300, :token => 'EC-6WS104951Y388951L', :payer_id => 'FWRVKNRRZ3WUC')
95
+ assert response.success?
96
+ assert_not_nil response.authorization
97
+ assert response.test?
98
+ end
99
+
100
+ def test_default_payflow_currency
101
+ assert_equal 'USD', PayflowExpressGateway.default_currency
102
+ end
103
+
104
+ def test_default_partner
105
+ assert_equal 'PayPal', PayflowExpressGateway.partner
106
+ end
107
+
108
+ def test_uk_partner
109
+ assert_equal 'PayPalUk', PayflowExpressUkGateway.partner
110
+ end
111
+
112
+ def test_handle_non_zero_amount
113
+ xml = REXML::Document.new(@gateway.send(:build_setup_request, 'SetExpressCheckout', 50, {}))
114
+
115
+ assert_equal '0.50', REXML::XPath.first(xml, '//n2:OrderTotal').text
116
+ end
117
+
118
+ def test_handles_zero_amount
119
+ xml = REXML::Document.new(@gateway.send(:build_setup_request, 'SetExpressCheckout', 0, {}))
120
+
121
+ assert_equal '1.00', REXML::XPath.first(xml, '//n2:OrderTotal').text
122
+ end
123
+
124
+ def test_handle_locale_code
125
+ xml = REXML::Document.new(@gateway.send(:build_setup_request, 'SetExpressCheckout', 0, { :locale => 'GB' }))
126
+
127
+ assert_equal 'GB', REXML::XPath.first(xml, '//n2:LocaleCode').text
128
+ end
129
+
130
+ def test_supported_countries
131
+ assert_equal ['US'], PaypalExpressGateway.supported_countries
132
+ end
133
+
134
+ def test_button_source
135
+ PaypalExpressGateway.application_id = 'ActiveMerchant_EC'
136
+
137
+ xml = REXML::Document.new(@gateway.send(:build_sale_or_authorization_request, 'Test', 100, {}))
138
+ assert_equal 'ActiveMerchant_EC', REXML::XPath.first(xml, '//n2:ButtonSource').text
139
+ end
140
+
141
+ def test_error_code_for_single_error
142
+ @gateway.expects(:ssl_post).returns(response_with_error)
143
+ response = @gateway.setup_authorization(100,
144
+ :return_url => 'http://example.com',
145
+ :cancel_return_url => 'http://example.com'
146
+ )
147
+ assert_equal "10736", response.params['error_codes']
148
+ end
149
+
150
+ def test_ensure_only_unique_error_codes
151
+ @gateway.expects(:ssl_post).returns(response_with_duplicate_errors)
152
+ response = @gateway.setup_authorization(100,
153
+ :return_url => 'http://example.com',
154
+ :cancel_return_url => 'http://example.com'
155
+ )
156
+
157
+ assert_equal "10736" , response.params['error_codes']
158
+ end
159
+
160
+ def test_error_codes_for_multiple_errors
161
+ @gateway.expects(:ssl_post).returns(response_with_errors)
162
+ response = @gateway.setup_authorization(100,
163
+ :return_url => 'http://example.com',
164
+ :cancel_return_url => 'http://example.com'
165
+ )
166
+
167
+ assert_equal ["10736", "10002"] , response.params['error_codes'].split(',')
168
+ end
169
+
170
+ private
171
+ def successful_details_response
172
+ <<-RESPONSE
173
+ <?xml version='1.0' encoding='UTF-8'?>
174
+ <SOAP-ENV:Envelope xmlns:cc='urn:ebay:apis:CoreComponentTypes' xmlns:sizeship='urn:ebay:api:PayPalAPI/sizeship.xsd' xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' xmlns:saml='urn:oasis:names:tc:SAML:1.0:assertion' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:wsu='http://schemas.xmlsoap.org/ws/2002/07/utility' xmlns:ebl='urn:ebay:apis:eBLBaseComponents' xmlns:ds='http://www.w3.org/2000/09/xmldsig#' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:ns='urn:ebay:api:PayPalAPI' xmlns:market='urn:ebay:apis:Market' xmlns:ship='urn:ebay:apis:ship' xmlns:auction='urn:ebay:apis:Auction' xmlns:wsse='http://schemas.xmlsoap.org/ws/2002/12/secext' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
175
+ <SOAP-ENV:Header>
176
+ <Security xsi:type='wsse:SecurityType' xmlns='http://schemas.xmlsoap.org/ws/2002/12/secext'/>
177
+ <RequesterCredentials xsi:type='ebl:CustomSecurityHeaderType' xmlns='urn:ebay:api:PayPalAPI'>
178
+ <Credentials xsi:type='ebl:UserIdPasswordType' xmlns='urn:ebay:apis:eBLBaseComponents'>
179
+ <Username xsi:type='xs:string'/>
180
+ <Password xsi:type='xs:string'/>
181
+ <Subject xsi:type='xs:string'/>
182
+ </Credentials>
183
+ </RequesterCredentials>
184
+ </SOAP-ENV:Header>
185
+ <SOAP-ENV:Body id='_0'>
186
+ <GetExpressCheckoutDetailsResponse xmlns='urn:ebay:api:PayPalAPI'>
187
+ <Timestamp xmlns='urn:ebay:apis:eBLBaseComponents'>2007-02-12T23:59:43Z</Timestamp>
188
+ <Ack xmlns='urn:ebay:apis:eBLBaseComponents'>Success</Ack>
189
+ <CorrelationID xmlns='urn:ebay:apis:eBLBaseComponents'>c73044f11da65</CorrelationID>
190
+ <Version xmlns='urn:ebay:apis:eBLBaseComponents'>2.000000</Version>
191
+ <Build xmlns='urn:ebay:apis:eBLBaseComponents'>1.0006</Build>
192
+ <GetExpressCheckoutDetailsResponseDetails xsi:type='ebl:GetExpressCheckoutDetailsResponseDetailsType' xmlns='urn:ebay:apis:eBLBaseComponents'>
193
+ <Token xsi:type='ebl:ExpressCheckoutTokenType'>EC-6WS104951Y388951L</Token>
194
+ <PayerInfo xsi:type='ebl:PayerInfoType'>
195
+ <Payer xsi:type='ebl:EmailAddressType'>buyer@jadedpallet.com</Payer>
196
+ <PayerID xsi:type='ebl:UserIDType'>FWRVKNRRZ3WUC</PayerID>
197
+ <PayerStatus xsi:type='ebl:PayPalUserStatusCodeType'>verified</PayerStatus>
198
+ <PayerName xsi:type='ebl:PersonNameType'>
199
+ <Salutation xmlns='urn:ebay:apis:eBLBaseComponents'/>
200
+ <FirstName xmlns='urn:ebay:apis:eBLBaseComponents'>Fred</FirstName>
201
+ <MiddleName xmlns='urn:ebay:apis:eBLBaseComponents'/>
202
+ <LastName xmlns='urn:ebay:apis:eBLBaseComponents'>Brooks</LastName>
203
+ <Suffix xmlns='urn:ebay:apis:eBLBaseComponents'/>
204
+ </PayerName>
205
+ <PayerCountry xsi:type='ebl:CountryCodeType'>US</PayerCountry>
206
+ <PayerBusiness xsi:type='xs:string'/>
207
+ <Address xsi:type='ebl:AddressType'>
208
+ <Name xsi:type='xs:string'>Fred Brooks</Name>
209
+ <Street1 xsi:type='xs:string'>1234 Penny Lane</Street1>
210
+ <Street2 xsi:type='xs:string'/>
211
+ <CityName xsi:type='xs:string'>Jonsetown</CityName>
212
+ <StateOrProvince xsi:type='xs:string'>NC</StateOrProvince>
213
+ <Country xsi:type='ebl:CountryCodeType'>US</Country>
214
+ <CountryName>United States</CountryName>
215
+ <PostalCode xsi:type='xs:string'>23456</PostalCode>
216
+ <AddressOwner xsi:type='ebl:AddressOwnerCodeType'>PayPal</AddressOwner>
217
+ <AddressStatus xsi:type='ebl:AddressStatusCodeType'>Confirmed</AddressStatus>
218
+ </Address>
219
+ </PayerInfo>
220
+ <InvoiceID xsi:type='xs:string'>1230123</InvoiceID>
221
+ </GetExpressCheckoutDetailsResponseDetails>
222
+ </GetExpressCheckoutDetailsResponse>
223
+ </SOAP-ENV:Body>
224
+ </SOAP-ENV:Envelope>
225
+ RESPONSE
226
+ end
227
+
228
+ def successful_authorization_response
229
+ <<-RESPONSE
230
+ <?xml version='1.0' encoding='UTF-8'?>
231
+ <SOAP-ENV:Envelope xmlns:cc='urn:ebay:apis:CoreComponentTypes' xmlns:sizeship='urn:ebay:api:PayPalAPI/sizeship.xsd' xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' xmlns:saml='urn:oasis:names:tc:SAML:1.0:assertion' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:wsu='http://schemas.xmlsoap.org/ws/2002/07/utility' xmlns:ebl='urn:ebay:apis:eBLBaseComponents' xmlns:ds='http://www.w3.org/2000/09/xmldsig#' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:ns='urn:ebay:api:PayPalAPI' xmlns:market='urn:ebay:apis:Market' xmlns:ship='urn:ebay:apis:ship' xmlns:auction='urn:ebay:apis:Auction' xmlns:wsse='http://schemas.xmlsoap.org/ws/2002/12/secext' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
232
+ <SOAP-ENV:Header>
233
+ <Security xsi:type='wsse:SecurityType' xmlns='http://schemas.xmlsoap.org/ws/2002/12/secext'/>
234
+ <RequesterCredentials xsi:type='ebl:CustomSecurityHeaderType' xmlns='urn:ebay:api:PayPalAPI'>
235
+ <Credentials xsi:type='ebl:UserIdPasswordType' xmlns='urn:ebay:apis:eBLBaseComponents'>
236
+ <Username xsi:type='xs:string'/>
237
+ <Password xsi:type='xs:string'/>
238
+ <Subject xsi:type='xs:string'/>
239
+ </Credentials>
240
+ </RequesterCredentials>
241
+ </SOAP-ENV:Header>
242
+ <SOAP-ENV:Body id='_0'>
243
+ <DoExpressCheckoutPaymentResponse xmlns='urn:ebay:api:PayPalAPI'>
244
+ <Timestamp xmlns='urn:ebay:apis:eBLBaseComponents'>2007-02-13T00:18:50Z</Timestamp>
245
+ <Ack xmlns='urn:ebay:apis:eBLBaseComponents'>Success</Ack>
246
+ <CorrelationID xmlns='urn:ebay:apis:eBLBaseComponents'>62450a4266d04</CorrelationID>
247
+ <Version xmlns='urn:ebay:apis:eBLBaseComponents'>2.000000</Version>
248
+ <Build xmlns='urn:ebay:apis:eBLBaseComponents'>1.0006</Build>
249
+ <DoExpressCheckoutPaymentResponseDetails xsi:type='ebl:DoExpressCheckoutPaymentResponseDetailsType' xmlns='urn:ebay:apis:eBLBaseComponents'>
250
+ <Token xsi:type='ebl:ExpressCheckoutTokenType'>EC-6WS104951Y388951L</Token>
251
+ <PaymentInfo xsi:type='ebl:PaymentInfoType'>
252
+ <TransactionID>8B266858CH956410C</TransactionID>
253
+ <ParentTransactionID xsi:type='ebl:TransactionId'/>
254
+ <ReceiptID/>
255
+ <TransactionType xsi:type='ebl:PaymentTransactionCodeType'>express-checkout</TransactionType>
256
+ <PaymentType xsi:type='ebl:PaymentCodeType'>instant</PaymentType>
257
+ <PaymentDate xsi:type='xs:dateTime'>2007-02-13T00:18:48Z</PaymentDate>
258
+ <GrossAmount currencyID='USD' xsi:type='cc:BasicAmountType'>3.00</GrossAmount>
259
+ <TaxAmount currencyID='USD' xsi:type='cc:BasicAmountType'>0.00</TaxAmount>
260
+ <ExchangeRate xsi:type='xs:string'/>
261
+ <PaymentStatus xsi:type='ebl:PaymentStatusCodeType'>Pending</PaymentStatus>
262
+ <PendingReason xsi:type='ebl:PendingStatusCodeType'>authorization</PendingReason>
263
+ <ReasonCode xsi:type='ebl:ReversalReasonCodeType'>none</ReasonCode>
264
+ </PaymentInfo>
265
+ </DoExpressCheckoutPaymentResponseDetails>
266
+ </DoExpressCheckoutPaymentResponse>
267
+ </SOAP-ENV:Body>
268
+ </SOAP-ENV:Envelope>
269
+ RESPONSE
270
+ end
271
+
272
+ def response_with_error
273
+ <<-RESPONSE
274
+ <?xml version="1.0" encoding="UTF-8"?>
275
+ <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cc="urn:ebay:apis:CoreComponentTypes" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:market="urn:ebay:apis:Market" xmlns:auction="urn:ebay:apis:Auction" xmlns:sizeship="urn:ebay:api:PayPalAPI/sizeship.xsd" xmlns:ship="urn:ebay:apis:ship" xmlns:skype="urn:ebay:apis:skype" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:ebl="urn:ebay:apis:eBLBaseComponents" xmlns:ns="urn:ebay:api:PayPalAPI">
276
+ <SOAP-ENV:Header>
277
+ <Security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext" xsi:type="wsse:SecurityType"/>
278
+ <RequesterCredentials xmlns="urn:ebay:api:PayPalAPI" xsi:type="ebl:CustomSecurityHeaderType">
279
+ <Credentials xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:UserIdPasswordType">
280
+ <Username xsi:type="xs:string"/>
281
+ <Password xsi:type="xs:string"/>
282
+ <Subject xsi:type="xs:string"/>
283
+ </Credentials>
284
+ </RequesterCredentials>
285
+ </SOAP-ENV:Header>
286
+ <SOAP-ENV:Body id="_0">
287
+ <SetExpressCheckoutResponse xmlns="urn:ebay:api:PayPalAPI">
288
+ <Timestamp xmlns="urn:ebay:apis:eBLBaseComponents">2008-04-02T17:38:02Z</Timestamp>
289
+ <Ack xmlns="urn:ebay:apis:eBLBaseComponents">Failure</Ack>
290
+ <CorrelationID xmlns="urn:ebay:apis:eBLBaseComponents">cdb720feada30</CorrelationID>
291
+ <Errors xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:ErrorType">
292
+ <ShortMessage xsi:type="xs:string">Shipping Address Invalid City State Postal Code</ShortMessage>
293
+ <LongMessage xsi:type="xs:string">A match of the Shipping Address City, State, and Postal Code failed.</LongMessage>
294
+ <ErrorCode xsi:type="xs:token">10736</ErrorCode>
295
+ <SeverityCode xmlns="urn:ebay:apis:eBLBaseComponents">Error</SeverityCode>
296
+ </Errors>
297
+ <Version xmlns="urn:ebay:apis:eBLBaseComponents">2.000000</Version>
298
+ <Build xmlns="urn:ebay:apis:eBLBaseComponents">543066</Build>
299
+ </SetExpressCheckoutResponse>
300
+ </SOAP-ENV:Body>
301
+ </SOAP-ENV:Envelope>
302
+ RESPONSE
303
+ end
304
+
305
+ def response_with_errors
306
+ <<-RESPONSE
307
+ <?xml version="1.0" encoding="UTF-8"?>
308
+ <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cc="urn:ebay:apis:CoreComponentTypes" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:market="urn:ebay:apis:Market" xmlns:auction="urn:ebay:apis:Auction" xmlns:sizeship="urn:ebay:api:PayPalAPI/sizeship.xsd" xmlns:ship="urn:ebay:apis:ship" xmlns:skype="urn:ebay:apis:skype" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:ebl="urn:ebay:apis:eBLBaseComponents" xmlns:ns="urn:ebay:api:PayPalAPI">
309
+ <SOAP-ENV:Header>
310
+ <Security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext" xsi:type="wsse:SecurityType"/>
311
+ <RequesterCredentials xmlns="urn:ebay:api:PayPalAPI" xsi:type="ebl:CustomSecurityHeaderType">
312
+ <Credentials xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:UserIdPasswordType">
313
+ <Username xsi:type="xs:string"/>
314
+ <Password xsi:type="xs:string"/>
315
+ <Subject xsi:type="xs:string"/>
316
+ </Credentials>
317
+ </RequesterCredentials>
318
+ </SOAP-ENV:Header>
319
+ <SOAP-ENV:Body id="_0">
320
+ <SetExpressCheckoutResponse xmlns="urn:ebay:api:PayPalAPI">
321
+ <Timestamp xmlns="urn:ebay:apis:eBLBaseComponents">2008-04-02T17:38:02Z</Timestamp>
322
+ <Ack xmlns="urn:ebay:apis:eBLBaseComponents">Failure</Ack>
323
+ <CorrelationID xmlns="urn:ebay:apis:eBLBaseComponents">cdb720feada30</CorrelationID>
324
+ <Errors xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:ErrorType">
325
+ <ShortMessage xsi:type="xs:string">Shipping Address Invalid City State Postal Code</ShortMessage>
326
+ <LongMessage xsi:type="xs:string">A match of the Shipping Address City, State, and Postal Code failed.</LongMessage>
327
+ <ErrorCode xsi:type="xs:token">10736</ErrorCode>
328
+ <SeverityCode xmlns="urn:ebay:apis:eBLBaseComponents">Error</SeverityCode>
329
+ </Errors>
330
+ <Errors xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:ErrorType">
331
+ <ShortMessage xsi:type="xs:string">Authentication/Authorization Failed</ShortMessage>
332
+ <LongMessage xsi:type="xs:string">You do not have permissions to make this API call</LongMessage>
333
+ <ErrorCode xsi:type="xs:token">10002</ErrorCode>
334
+ <SeverityCode xmlns="urn:ebay:apis:eBLBaseComponents">Error</SeverityCode>
335
+ </Errors>
336
+ <Version xmlns="urn:ebay:apis:eBLBaseComponents">2.000000</Version>
337
+ <Build xmlns="urn:ebay:apis:eBLBaseComponents">543066</Build>
338
+ </SetExpressCheckoutResponse>
339
+ </SOAP-ENV:Body>
340
+ </SOAP-ENV:Envelope>
341
+ RESPONSE
342
+ end
343
+
344
+ def response_with_duplicate_errors
345
+ <<-RESPONSE
346
+ <?xml version="1.0" encoding="UTF-8"?>
347
+ <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cc="urn:ebay:apis:CoreComponentTypes" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:market="urn:ebay:apis:Market" xmlns:auction="urn:ebay:apis:Auction" xmlns:sizeship="urn:ebay:api:PayPalAPI/sizeship.xsd" xmlns:ship="urn:ebay:apis:ship" xmlns:skype="urn:ebay:apis:skype" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:ebl="urn:ebay:apis:eBLBaseComponents" xmlns:ns="urn:ebay:api:PayPalAPI">
348
+ <SOAP-ENV:Header>
349
+ <Security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext" xsi:type="wsse:SecurityType"/>
350
+ <RequesterCredentials xmlns="urn:ebay:api:PayPalAPI" xsi:type="ebl:CustomSecurityHeaderType">
351
+ <Credentials xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:UserIdPasswordType">
352
+ <Username xsi:type="xs:string"/>
353
+ <Password xsi:type="xs:string"/>
354
+ <Subject xsi:type="xs:string"/>
355
+ </Credentials>
356
+ </RequesterCredentials>
357
+ </SOAP-ENV:Header>
358
+ <SOAP-ENV:Body id="_0">
359
+ <SetExpressCheckoutResponse xmlns="urn:ebay:api:PayPalAPI">
360
+ <Timestamp xmlns="urn:ebay:apis:eBLBaseComponents">2008-04-02T17:38:02Z</Timestamp>
361
+ <Ack xmlns="urn:ebay:apis:eBLBaseComponents">Failure</Ack>
362
+ <CorrelationID xmlns="urn:ebay:apis:eBLBaseComponents">cdb720feada30</CorrelationID>
363
+ <Errors xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:ErrorType">
364
+ <ShortMessage xsi:type="xs:string">Shipping Address Invalid City State Postal Code</ShortMessage>
365
+ <LongMessage xsi:type="xs:string">A match of the Shipping Address City, State, and Postal Code failed.</LongMessage>
366
+ <ErrorCode xsi:type="xs:token">10736</ErrorCode>
367
+ <SeverityCode xmlns="urn:ebay:apis:eBLBaseComponents">Error</SeverityCode>
368
+ </Errors>
369
+ <Errors xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:ErrorType">
370
+ <ShortMessage xsi:type="xs:string">Shipping Address Invalid City State Postal Code</ShortMessage>
371
+ <LongMessage xsi:type="xs:string">A match of the Shipping Address City, State, and Postal Code failed.</LongMessage>
372
+ <ErrorCode xsi:type="xs:token">10736</ErrorCode>
373
+ <SeverityCode xmlns="urn:ebay:apis:eBLBaseComponents">Error</SeverityCode>
374
+ </Errors>
375
+ <Version xmlns="urn:ebay:apis:eBLBaseComponents">2.000000</Version>
376
+ <Build xmlns="urn:ebay:apis:eBLBaseComponents">543066</Build>
377
+ </SetExpressCheckoutResponse>
378
+ </SOAP-ENV:Body>
379
+ </SOAP-ENV:Envelope>
380
+ RESPONSE
381
+ end
382
+ end