API PayPal Java NVP GetExpressCheckoutDetails - Отсутствуют данные

Я звоню в "песочницу" PayPal с помощью процесса "экспресс-оплаты" из веб-приложения Java. Первый вызов (SetExpressCheckout) завершается успешно, и я получаю токен, как и ожидалось.

Второй вызов ('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, LASTNAME, SHIPTOSTREET, SHIPTOCITY и т. Д.

Я пытался вызвать песочницу PayPal из Java, используя

  • Apache HttpClient GET запрос
  • Apache HttpClient POST-запрос
  • javax.net.ssl.HttpsURLConnection
  • java.net.URLConnection

Я попытался запустить веб-приложение в JBoss 7.1.1 на Mac OS X и JBoss 7.2.0 на win8.

Я также попытался явно указать номер порта в URL ( https://api-3t.sandbox.paypal.com/).

Результат всегда один и тот же. Информация о плательщике (имя, адрес) отсутствует, когда я звоню из Java.

Кто-нибудь понял, что не так?

ОБНОВЛЕНИЕ: вызов песочницы PayPal из Eclipse (запрос Apache HttpClient GET) возвращает правильный ответ. Поэтому я предполагаю, что это может иметь отношение к JBoss AS.

1 ответ

Решение

После того, как вы позвоните в SetExpressCheckout, вы должны будете перенаправить покупателя в PayPal ( https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=__MY_TOKEN__) и попросить его войти в систему и подтвердить платеж. После того как они сделали это и вернулись на ваш сайт, затем вызовите GetExpressCheckoutDetails, чтобы получить их информацию.

Другие вопросы по тегам