Я звоню в песочницу PayPal с помощью функции «экспресс-проверка» из веб-приложения java. Первый вызов (SetExpressCheckout) успешно завершен, и я получаю токен, как ожидалось.PayPal Java NVP API GetExpressCheckoutDetails - Отсутствующие данные
Второй вызов («GetExpressCheckoutDetails») также подходит для получения ответа ACK = Success. Но есть все данные информации о плательщиках, такие как FIRSTNAME, LASTNAME или SHIPTOCITY.
Вот URL Я звоню с параметрами:
https://api-3t.sandbox.paypal.com/nvp?TOKEN=__MY_TOKEN__&VERSION=106.0&SIGNATURE=__MY_SIGNATURE__&METHOD=GetExpressCheckoutDetails&PWD=__MY_PASSWORD__&USER=__MY_USERNAME__
Вот тело, формирующего ответ, я получаю:
TOKEN=__MY_TOKEN__&CHECKOUTSTATUS=PaymentActionNotInitiated&TIMESTAMP=2013%2d09%2d11T20%3a56%3a36Z&CORRELATIONID=bb3916c14aa78&ACK=Success&VERSION=106%2e0&BUILD=7645184&CURRENCYCODE=USD&AMT=12%2e00&SHIPPINGAMT=0%2e00&HANDLINGAMT=0%2e00&TAXAMT=0%2e00&INSURANCEAMT=0%2e00&SHIPDISCAMT=0%2e00&PAYMENTREQUEST_0_CURRENCYCODE=USD&PAYMENTREQUEST_0_AMT=12%2e00&PAYMENTREQUEST_0_SHIPPINGAMT=0%2e00&PAYMENTREQUEST_0_HANDLINGAMT=0%2e00&PAYMENTREQUEST_0_TAXAMT=0%2e00&PAYMENTREQUEST_0_INSURANCEAMT=0%2e00&PAYMENTREQUEST_0_SHIPDISCAMT=0%2e00&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_ADDRESSNORMALIZATIONSTATUS=None&PAYMENTREQUESTINFO_0_ERRORCODE=0
Если я ставлю тот же запрос URL в Firefox я получаю ответ, я бы ожидать:
TOKEN=__MY_TOKEN__&CHECKOUTSTATUS=PaymentActionNotInitiated&TIMESTAMP=2013%2d09%2d11T20%3a37%3a31Z&CORRELATIONID=7804316ba643d&ACK=Success&VERSION=106%2e0&BUILD=7645184&EMAIL=mne%2dcustomer2%40m%2dn%2de%2ede&PAYERID=QRZ57KR8PHVF4&PAYERSTATUS=verified&FIRSTNAME=Frank&LASTNAME=Forest&COUNTRYCODE=US&SHIPTONAME=Frank%20Forest&SHIPTOSTREET=1%20Main%20St&SHIPTOCITY=San%20Jose&SHIPTOSTATE=CA&SHIPTOZIP=95131&SHIPTOCOUNTRYCODE=US&SHIPTOCOUNTRYNAME=United%20States&ADDRESSSTATUS=Confirmed&CURRENCYCODE=USD&AMT=15%2e00&SHIPPINGAMT=0%2e00&HANDLINGAMT=0%2e00&TAXAMT=0%2e00&INSURANCEAMT=0%2e00&SHIPDISCAMT=0%2e00&PAYMENTREQUEST_0_CURRENCYCODE=USD&PAYMENTREQUEST_0_AMT=15%2e00&PAYMENTREQUEST_0_SHIPPINGAMT=0%2e00&PAYMENTREQUEST_0_HANDLINGAMT=0%2e00&PAYMENTREQUEST_0_TAXAMT=0%2e00&PAYMENTREQUEST_0_INSURANCEAMT=0%2e00&PAYMENTREQUEST_0_SHIPDISCAMT=0%2e00&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_SHIPTONAME=Frank%20Forest&PAYMENTREQUEST_0_SHIPTOSTREET=1%20Main%20St&PAYMENTREQUEST_0_SHIPTOCITY=San%20Jose&PAYMENTREQUEST_0_SHIPTOSTATE=CA&PAYMENTREQUEST_0_SHIPTOZIP=95131&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=US&PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME=United%20States&PAYMENTREQUEST_0_ADDRESSSTATUS=Confirmed&PAYMENTREQUEST_0_ADDRESSNORMALIZATIONSTATUS=None&PAYMENTREQUESTINFO_0_ERRORCODE=0
Этот ожидаемый ответ содержит PAYERID, FIRSTNAME, ФАМИЛИЯ, SHIPTOSTR EET, SHIPTOCITY и т.д.
Я попытался назвать песочницу PayPal из Java с помощью
- Apache HttpClient GET запрос запрос
- Apache HttpClient POST
- javax.net.ssl.HttpsURLConnection
- Java. net.URLConnection
Я попытался запустить webapp в JBoss 7.1.1 на Mac OS X и JBoss 7.2.0 на выигрыше 8.
Я также попытался поставить номер порта в URL явно (https://api-3t.sandbox.paypal.com:443)
Результат всегда один и тот же. Информация о плательщике (имя, адрес) отсутствует, когда я вызываю ее из java.
У кого-нибудь есть идея, что не так?
UPDATE: Вызов песочницы PayPal из Eclipse (запрос GETClick Apache HttpClient) возвращает правильный ответ. Поэтому я предполагаю, что это может иметь какое-то отношение к JBoss AS.
Спасибо, Мэтт, у меня на самом деле был неправильный порядок 1. SetExpressCheckout 2. GetExpressCheckoutDetails 3. Перенаправление пользователя в PayPal. Правильно: 1. SetExpressCheckout, 2. Перенаправить пользователя в PayPal, 3. GetExpressCheckoutDetails после возврата на мою страницу. – Vincent
Использование песочницы - как это сделано Vincent - I woudl предлагает перенаправить на URL-адрес Sandbox: 'https: //www.sandbox.paypal.com/cgi-bin/webscr? Cmd = _express-checkout & token = __ MY_TOKEN__' –