johnideal-activemerchant 1.4.4

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 (300) hide show
  1. data/.gitignore +2 -0
  2. data/CHANGELOG +448 -0
  3. data/CONTRIBUTERS +106 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README +134 -0
  6. data/Rakefile +167 -0
  7. data/VERSION +1 -0
  8. data/activemerchant.gemspec +484 -0
  9. data/gem-public_cert.pem +20 -0
  10. data/generators/gateway/USAGE +5 -0
  11. data/generators/gateway/gateway_generator.rb +61 -0
  12. data/generators/gateway/templates/gateway.rb +77 -0
  13. data/generators/gateway/templates/gateway_test.rb +49 -0
  14. data/generators/gateway/templates/remote_gateway_test.rb +57 -0
  15. data/generators/integration/USAGE +5 -0
  16. data/generators/integration/integration_generator.rb +68 -0
  17. data/generators/integration/templates/helper.rb +34 -0
  18. data/generators/integration/templates/helper_test.rb +54 -0
  19. data/generators/integration/templates/integration.rb +18 -0
  20. data/generators/integration/templates/module_test.rb +9 -0
  21. data/generators/integration/templates/notification.rb +100 -0
  22. data/generators/integration/templates/notification_test.rb +41 -0
  23. data/init.rb +3 -0
  24. data/lib/active_merchant/billing/avs_result.rb +98 -0
  25. data/lib/active_merchant/billing/base.rb +57 -0
  26. data/lib/active_merchant/billing/check.rb +68 -0
  27. data/lib/active_merchant/billing/credit_card.rb +159 -0
  28. data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
  29. data/lib/active_merchant/billing/credit_card_methods.rb +125 -0
  30. data/lib/active_merchant/billing/cvv_result.rb +38 -0
  31. data/lib/active_merchant/billing/expiry_date.rb +34 -0
  32. data/lib/active_merchant/billing/gateway.rb +158 -0
  33. data/lib/active_merchant/billing/gateways/authorize_net.rb +657 -0
  34. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +703 -0
  35. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
  36. data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
  37. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  38. data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
  39. data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
  40. data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
  41. data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
  42. data/lib/active_merchant/billing/gateways/data_cash.rb +595 -0
  43. data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
  44. data/lib/active_merchant/billing/gateways/eway.rb +277 -0
  45. data/lib/active_merchant/billing/gateways/exact.rb +222 -0
  46. data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
  47. data/lib/active_merchant/billing/gateways/linkpoint.rb +396 -0
  48. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
  49. data/lib/active_merchant/billing/gateways/merchant_ware.rb +283 -0
  50. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  51. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  52. data/lib/active_merchant/billing/gateways/moneris.rb +205 -0
  53. data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
  54. data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
  55. data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
  56. data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
  57. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
  58. data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
  59. data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
  60. data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
  61. data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
  62. data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
  63. data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
  64. data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
  65. data/lib/active_merchant/billing/gateways/paymentech_orbital/paymentech_orbital_response.rb +72 -0
  66. data/lib/active_merchant/billing/gateways/paymentech_orbital.rb +170 -0
  67. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +325 -0
  68. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
  69. data/lib/active_merchant/billing/gateways/paypal.rb +108 -0
  70. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  71. data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
  72. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
  73. data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
  74. data/lib/active_merchant/billing/gateways/protx.rb +307 -0
  75. data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
  76. data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
  77. data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
  78. data/lib/active_merchant/billing/gateways/realex.rb +200 -0
  79. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  80. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +110 -0
  81. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  82. data/lib/active_merchant/billing/gateways/sage.rb +146 -0
  83. data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
  84. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
  85. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
  86. data/lib/active_merchant/billing/gateways/skip_jack.rb +442 -0
  87. data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
  88. data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
  89. data/lib/active_merchant/billing/gateways/transax.rb +26 -0
  90. data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
  91. data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
  92. data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
  93. data/lib/active_merchant/billing/gateways/viaklix.rb +165 -0
  94. data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
  95. data/lib/active_merchant/billing/gateways.rb +3 -0
  96. data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
  97. data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
  98. data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
  99. data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
  100. data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
  101. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
  102. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
  103. data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
  104. data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
  105. data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
  106. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
  107. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
  108. data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
  109. data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
  110. data/lib/active_merchant/billing/integrations/helper.rb +93 -0
  111. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
  112. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
  113. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
  114. data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
  115. data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
  116. data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
  117. data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
  118. data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
  119. data/lib/active_merchant/billing/integrations/notification.rb +62 -0
  120. data/lib/active_merchant/billing/integrations/paypal/helper.rb +118 -0
  121. data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
  122. data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
  123. data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
  124. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
  125. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
  126. data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
  127. data/lib/active_merchant/billing/integrations/return.rb +35 -0
  128. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
  129. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
  130. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
  131. data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
  132. data/lib/active_merchant/billing/integrations.rb +22 -0
  133. data/lib/active_merchant/billing/response.rb +32 -0
  134. data/lib/active_merchant/lib/connection.rb +171 -0
  135. data/lib/active_merchant/lib/country.rb +319 -0
  136. data/lib/active_merchant/lib/error.rb +4 -0
  137. data/lib/active_merchant/lib/post_data.rb +22 -0
  138. data/lib/active_merchant/lib/posts_data.rb +47 -0
  139. data/lib/active_merchant/lib/requires_parameters.rb +16 -0
  140. data/lib/active_merchant/lib/utils.rb +18 -0
  141. data/lib/active_merchant/lib/validateable.rb +76 -0
  142. data/lib/active_merchant.rb +60 -0
  143. data/lib/certs/cacert.pem +7815 -0
  144. data/lib/support/gateway_support.rb +58 -0
  145. data/script/destroy +14 -0
  146. data/script/generate +14 -0
  147. data/test/fixtures.yml +335 -0
  148. data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
  149. data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
  150. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  151. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  152. data/test/remote/gateways/remote_braintree_test.rb +154 -0
  153. data/test/remote/gateways/remote_card_stream_test.rb +148 -0
  154. data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
  155. data/test/remote/gateways/remote_data_cash_test.rb +357 -0
  156. data/test/remote/gateways/remote_efsnet_test.rb +81 -0
  157. data/test/remote/gateways/remote_eway_test.rb +74 -0
  158. data/test/remote/gateways/remote_exact_test.rb +60 -0
  159. data/test/remote/gateways/remote_instapay_test.rb +61 -0
  160. data/test/remote/gateways/remote_linkpoint_test.rb +112 -0
  161. data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
  162. data/test/remote/gateways/remote_merchant_ware_test.rb +113 -0
  163. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  164. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  165. data/test/remote/gateways/remote_moneris_test.rb +82 -0
  166. data/test/remote/gateways/remote_net_registry_test.rb +85 -0
  167. data/test/remote/gateways/remote_netbilling_test.rb +70 -0
  168. data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
  169. data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
  170. data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
  171. data/test/remote/gateways/remote_payflow_test.rb +237 -0
  172. data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
  173. data/test/remote/gateways/remote_payment_express_test.rb +136 -0
  174. data/test/remote/gateways/remote_paymentech_orbital_test.rb +57 -0
  175. data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
  176. data/test/remote/gateways/remote_paypal_test.rb +167 -0
  177. data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
  178. data/test/remote/gateways/remote_protx_test.rb +219 -0
  179. data/test/remote/gateways/remote_psigate_test.rb +50 -0
  180. data/test/remote/gateways/remote_psl_card_test.rb +125 -0
  181. data/test/remote/gateways/remote_quickpay_test.rb +190 -0
  182. data/test/remote/gateways/remote_realex_test.rb +224 -0
  183. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  184. data/test/remote/gateways/remote_sage_test.rb +87 -0
  185. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  186. data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
  187. data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
  188. data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
  189. data/test/remote/gateways/remote_skipjack_test.rb +105 -0
  190. data/test/remote/gateways/remote_trans_first_test.rb +34 -0
  191. data/test/remote/gateways/remote_transax_test.rb +112 -0
  192. data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
  193. data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
  194. data/test/remote/gateways/remote_verifi_test.rb +107 -0
  195. data/test/remote/gateways/remote_viaklix_test.rb +43 -0
  196. data/test/remote/gateways/remote_wirecard_test.rb +111 -0
  197. data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
  198. data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
  199. data/test/test_helper.rb +182 -0
  200. data/test/unit/avs_result_test.rb +59 -0
  201. data/test/unit/base_test.rb +55 -0
  202. data/test/unit/check_test.rb +88 -0
  203. data/test/unit/connection_test.rb +129 -0
  204. data/test/unit/country_code_test.rb +33 -0
  205. data/test/unit/country_test.rb +64 -0
  206. data/test/unit/credit_card_formatting_test.rb +19 -0
  207. data/test/unit/credit_card_methods_test.rb +170 -0
  208. data/test/unit/credit_card_test.rb +318 -0
  209. data/test/unit/cvv_result_test.rb +33 -0
  210. data/test/unit/expiry_date_test.rb +32 -0
  211. data/test/unit/gateways/authorize_net_cim_test.rb +638 -0
  212. data/test/unit/gateways/authorize_net_test.rb +290 -0
  213. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  214. data/test/unit/gateways/beanstream_test.rb +108 -0
  215. data/test/unit/gateways/bogus_test.rb +46 -0
  216. data/test/unit/gateways/braintree_test.rb +126 -0
  217. data/test/unit/gateways/card_stream_test.rb +90 -0
  218. data/test/unit/gateways/cyber_source_test.rb +188 -0
  219. data/test/unit/gateways/data_cash_test.rb +133 -0
  220. data/test/unit/gateways/efsnet_test.rb +123 -0
  221. data/test/unit/gateways/eway_test.rb +118 -0
  222. data/test/unit/gateways/exact_test.rb +156 -0
  223. data/test/unit/gateways/gateway_test.rb +48 -0
  224. data/test/unit/gateways/instapay_test.rb +102 -0
  225. data/test/unit/gateways/linkpoint_test.rb +167 -0
  226. data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
  227. data/test/unit/gateways/merchant_ware_test.rb +188 -0
  228. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  229. data/test/unit/gateways/moneris_test.rb +158 -0
  230. data/test/unit/gateways/net_registry_test.rb +416 -0
  231. data/test/unit/gateways/netbilling_test.rb +54 -0
  232. data/test/unit/gateways/pay_junction_test.rb +123 -0
  233. data/test/unit/gateways/pay_secure_test.rb +71 -0
  234. data/test/unit/gateways/payflow_express_test.rb +173 -0
  235. data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
  236. data/test/unit/gateways/payflow_test.rb +305 -0
  237. data/test/unit/gateways/payflow_uk_test.rb +30 -0
  238. data/test/unit/gateways/payment_express_test.rb +195 -0
  239. data/test/unit/gateways/paymentech_orbital_test.rb +117 -0
  240. data/test/unit/gateways/paypal_express_test.rb +382 -0
  241. data/test/unit/gateways/paypal_test.rb +520 -0
  242. data/test/unit/gateways/plugnpay_test.rb +86 -0
  243. data/test/unit/gateways/protx_test.rb +139 -0
  244. data/test/unit/gateways/psigate_test.rb +169 -0
  245. data/test/unit/gateways/psl_card_test.rb +64 -0
  246. data/test/unit/gateways/quickpay_test.rb +112 -0
  247. data/test/unit/gateways/realex_test.rb +151 -0
  248. data/test/unit/gateways/sage_bankcard_test.rb +162 -0
  249. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  250. data/test/unit/gateways/secure_pay_au_test.rb +207 -0
  251. data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
  252. data/test/unit/gateways/secure_pay_test.rb +87 -0
  253. data/test/unit/gateways/skip_jack_test.rb +133 -0
  254. data/test/unit/gateways/trans_first_test.rb +112 -0
  255. data/test/unit/gateways/trust_commerce_test.rb +90 -0
  256. data/test/unit/gateways/usa_epay_test.rb +128 -0
  257. data/test/unit/gateways/verifi_test.rb +96 -0
  258. data/test/unit/gateways/viaklix_test.rb +78 -0
  259. data/test/unit/gateways/wirecard_test.rb +250 -0
  260. data/test/unit/generators/test_gateway_generator.rb +46 -0
  261. data/test/unit/generators/test_generator_helper.rb +20 -0
  262. data/test/unit/generators/test_integration_generator.rb +53 -0
  263. data/test/unit/integrations/action_view_helper_test.rb +50 -0
  264. data/test/unit/integrations/bogus_module_test.rb +20 -0
  265. data/test/unit/integrations/chronopay_module_test.rb +13 -0
  266. data/test/unit/integrations/gestpay_module_test.rb +14 -0
  267. data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
  268. data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
  269. data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
  270. data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
  271. data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
  272. data/test/unit/integrations/helpers/paypal_helper_test.rb +162 -0
  273. data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
  274. data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
  275. data/test/unit/integrations/hi_trust_module_test.rb +13 -0
  276. data/test/unit/integrations/nochex_module_test.rb +13 -0
  277. data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
  278. data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
  279. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
  280. data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
  281. data/test/unit/integrations/notifications/notification_test.rb +54 -0
  282. data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
  283. data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
  284. data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
  285. data/test/unit/integrations/paypal_module_test.rb +28 -0
  286. data/test/unit/integrations/quickpay_module_test.rb +9 -0
  287. data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
  288. data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
  289. data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
  290. data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
  291. data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
  292. data/test/unit/integrations/returns/return_test.rb +11 -0
  293. data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
  294. data/test/unit/integrations/two_checkout_module_test.rb +13 -0
  295. data/test/unit/post_data_test.rb +55 -0
  296. data/test/unit/posts_data_test.rb +48 -0
  297. data/test/unit/response_test.rb +28 -0
  298. data/test/unit/utils_test.rb +7 -0
  299. data/test/unit/validateable_test.rb +60 -0
  300. metadata +503 -0
@@ -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