0

Java Web アプリケーションから「エクスプレス チェックアウト」プロセスで PayPal サンドボックスを呼び出しています。最初の呼び出し ('SetExpressCheckout') が成功し、期待どおりにトークンを受け取りました。

2 番目の呼び出し ('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 などが含まれます。

を使用してJavaからPayPalサンドボックスを呼び出してみました

  • Apache HttpClient GET リクエスト
  • Apache HttpClient POST リクエスト
  • javax.net.ssl.HttpsURLConnection
  • java.net.URLConnection

Mac OS X の JBoss 7.1.1 と win8 の JBoss 7.2.0 で webapp を実行してみました。

また、ポート番号を明示的に URL に入れてみました ( https://api-3t.sandbox.paypal.com:443 )

結果は常に同じです。Java から呼び出すと、支払人情報 (名前、住所) が欠落しています。

誰が何が間違っているのか考えていますか?

UPDATE : Eclipse から PayPal サンドボックスを呼び出す (Apache HttpClient GET 要求) と、正しい応答が返されます。したがって、これは JBoss AS と関係があると思われます。

4

1 に答える 1

0

SetExpressCheckout を呼び出した後、購入者を PayPal ( https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=__MY_TOKEN__ ) にリダイレクトし、ログインして支払いを承認してもらう必要があります。ユーザーがそれを完了して Web サイトに戻ったら、GetExpressCheckoutDetails を呼び出して情報を取得します。

于 2013-09-11T23:19:37.650 に答える