-1

Adaptive Payments API を使用して単純な Pay 呼び出しを試みています。次の例外が発生します。

java.security.AccessControlException: access denied (java.net.SocketPermission svcs.sandbox.paypal.com resolve)

ここに、私が何をしているかを理解してもらうために、私の Java コードを少し示します。

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("https://svcs.sandbox.paypal.com/AdaptivePayments/Pay");
httpPost.setHeader("X-PAYPAL-SECURITY-USERID", USER_ID);
httpPost.setHeader("X-PAYPAL-SECURITY-PASSWORD", PASSWORD);
httpPost.setHeader("X-PAYPAL-SECURITY-SIGNATURE", SIGNATURE);

httpPost.setHeader("X-PAYPAL-APPLICATION-ID", APPLICATION_ID);

httpPost.setHeader("X-PAYPAL-REQUEST-DATA-FORMAT", "JSON");
httpPost.setHeader("X-PAYPAL-RESPONSE-DATA-FORMAT", "JSON");

/* Bunch of stuff to build my JSON and put it in an Entity */

httpPost.setEntity(entity);

HttpResponse httpResponse = httpClient.execute(httpPost);

これにより、例外がスローされます。ただし、提案された cURL コマンドを試すと、正常に動作します。

curl -s --insecure -H "X-PAYPAL-SECURITY-USERID: My_USERID" -H "X-PAYPAL-SECURITY-PASSWORD: My_PASSWORD" -H "X-PAYPAL-SECURITY-SIGNATURE: My_SIGNATURE" -H "X-PAYPAL-REQUEST-DATA-FORMAT: JSON" -H "X-PAYPAL-RESPONSE-DATA-FORMAT: JSON" -H "X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T" https://svcs.sandbox.paypal.com/AdaptivePayments/Pay -d "{\"actionType\":\"PAY\", \"currencyCode\":\"USD\", \"receiverList\":{\"receiver\":[{\"amount\":\"1.00\",\"email\":\"rec1_1312486368_biz@gmail.com\"}]}, \"returnUrl\":\"http://www.example.com/success.html\", \"cancelUrl\":\"http://www.example.com/failure.html\", \"requestEnvelope\":{\"errorLanguage\":\"en_US\", \"detailLevel\":\"ReturnAll\"}}"

{"responseEnvelope":{"timestamp":"2013-08-07T13:00:11.846-07:00","ack":"Success","correlationId":"0f33d4304a29b","build":"6941298"},"payKey":"AP-5GA81571BX790024K","paymentExecStatus":"CREATED"}

この例外を受け取った理由について何か考えはありますか?

4

2 に答える 2

0

Google 物議 をかもすようにPayPalをブロックしました。PaypalXと呼ばれる新しいシステムはペイパル API として機能し、ブロックから 2 年後にリリースされました。この投稿とそのリンクで詳細を読むことができます。つまり、トランザクションに関する高レベルのアクションを使用する代わりに、必要な URL 操作が少なくて済みます。

于 2013-08-07T20:42:18.727 に答える
0

通り

https://developers.google.com/appengine/docs/java/#The_Sandbox

GAE アプリケーションは、他のホストと直接通信できません。私が行っていた Apache HttpClient とは対照的に、GAE の URL フェッチ サービスを使用する必要があります。

https://developers.google.com/appengine/docs/java/urlfetch/

上記のリンクを使用して、接続をセットアップし、PayPal サンドボックス サーバーから応答を取得することができました。誰にとっても役立つ場合の最終的なコードは次のとおりです。

URL url = new URL(PAY_ENDPOINT);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");

connection.setRequestProperty("X-PAYPAL-SECURITY-USERID", USER_ID);
connection.setRequestProperty("X-PAYPAL-SECURITY-PASSWORD", PASSWORD);
connection.setRequestProperty("X-PAYPAL-SECURITY-SIGNATURE", SIGNATURE);

connection.setRequestProperty("X-PAYPAL-APPLICATION-ID", APPLICATION_ID);

connection.setRequestProperty("X-PAYPAL-REQUEST-DATA-FORMAT", "JSON");
connection.setRequestProperty("X-PAYPAL-RESPONSE-DATA-FORMAT", "JSON");

/* Form JSON into "requestStr" */

OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write(requestStr);
writer.close();

// Read response into StringBuffer
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer stringBuffer = new StringBuffer();
String line = "";
while((line = reader.readLine()) != null){
    stringBuffer.append(line);
}
reader.close();
于 2013-08-07T21:48:11.460 に答える