Я пытаюсь запросить список транзакций у PayPal, но всегда получаю HTTP-код 400
public void getTransactionList(String accessToken)
{
try
{
URL url = new URL(
"https://api.sandbox.paypal.com/v1/reporting/transactions"
+ "?start_date=2018-01-01T00:00:00Z&end_date=2018-04-01T00:00:00Z"
+ "&fields=all&page_size=100&page=1");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Authorization", "Bearer " + accessToken);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept-Language", "en_US");
conn.setUseCaches(false);
conn.setDoOutput(true);
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = reader.readLine()) != null)
{
System.out.println(line);
}
reader.close();
}
catch (Throwable e)
{
e.printStackTrace();
//throw new ActionException(e);
}
}
Исключение составляет
java.io.IOException: Server returned HTTP response code: 400 for URL: https://api.sandbox.paypal.com/v1/reporting/transactions?start_date=2018-01-01T00:00:00-000&end_date=2018-04-02T00:00:00-000&fields=all&page_size=100&page=1
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
at de.crefo.workflow.paypal.http.HttpRestClient.getTransactionList(HttpRestClient.java:42)
at de.crefo.workflow.paypal.http.HttpRestClient.main(HttpRestClient.java:112)
Запрос Access-Token, который я делаю аналогичным образом, работает отлично и дает мне действующий токен. Что я делаю неправильно?
РЕДАКТИРОВАТЬ. Изменен формат даты в URL, см. Комментарии.
Потому что это в примере curl от PayPal: developer.paypal.com/docs/integration/direct/sync/… Но даже без него я получаю то же исключение
@Eardy: Правильны ли форматы времени начала и окончания? start_date = 2018-01-01T00: 00: 00-000 & end_date = 2018-04-02T00: 00: 00-000 Я думаю, это должно быть start_date = 2018-01-01T00: 00: 00-00: 00 & end_date = 2018-04 -02T00: 00: 00-00: 00
Я думаю, что проблема в параметрах запроса, которые вы отправляете в запросе. Можете ли вы подтвердить из документации API Paypal, что вы отправляете правильные параметры запроса?
Вы были правы, формат даты должен быть другим (2018-01-01T00: 00: 00Z), но я все равно получаю то же исключение
В конце концов, я обнаружил, что невозможно запрашивать транзакции без transactionId, даже если в API-документации об этом не сказано. Я перешел на NVP API и теперь у меня все не работает




Почему вы отправляете
Content-Typeв запросеGET?