Как получить токен доступа PayPal с помощью REST-запроса

Я пытаюсь заставить этот рабочий https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/ Использование приложения Java + Jersey. Кажется, мне что-то не хватает в параметрах POST.

public String getPaypalToken() {
    Client client = Client.create();
    WebResource webResource = client.resource("https://api.sandbox.paypal.com/v1/oauth2/token");
    MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
    queryParams.add("username", CLIENT_ID + ":" + SECRET );
    queryParams.add("grant_type", "client_credentials");
    ClientResponse response = webResource.accept("application/json").acceptLanguage("en_US").type("application/x-www-form-urlencoded").post(ClientResponse.class, queryParams);
    return response.toString();
}

Используя предыдущий код, я получил: POST https://api.sandbox.paypal.com/v1/oauth2/token вернул статус ответа 401 Unauthorized.

Этот параметр командной строки CURL отлично работает:

curl -X POST https://api.sandbox.paypal.com/v1/oauth2/token  -H "Accept: application/json"  -H "Accept-Language: en_US"  -u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp"  -d "grant_type=client_credentials"

Любые предложения будут оценены. Дж.


person josdem    schedule 09.10.2013    source источник


Ответы (2)


Параметр -u в curl отправляет строку «имя пользователя: пароль» в кодировке base64. Я не думаю, что добавление идентификатора / секрета клиента к карте queryParams делает то же самое (если только Джерси не обрабатывает ключ «имя пользователя» по-другому, чего я не думаю).

Вместо этого вы должны попробовать

webResource.header ("Авторизация", "Базовый" + Base64.encode (CLIENT_ID + ":" + SECRET.getBytes ()))

person aydiv    schedule 10.10.2013

Просто поделитесь своим решением:

Dictionary<string, string> sdkConfig = new Dictionary<string, string>();
sdkConfig.Add("mode", "sandbox");

string clientid = "<your client id>";
string secretid = "<your secret id>";
string accessToken = new OAuthTokenCredential(clientid, secretid, sdkConfig).GetAccessToken();

Ранее я сталкивался с несанкционированным ответом с помощью RestSharp, а затем нашел это. Я использую paypal .net sdk из пакета nuget. Справочная информация.

person remotedeveloper    schedule 07.08.2015
comment
подскажите как попасть в андроид? - person Aditya Vyas-Lakhan; 11.08.2016
comment
попробуйте эту статью или пример из PayPal вам понадобится PayPal Java Rest SDK для вторая ссылка, не совсем пример Android, но она на Java ... еще не работала в Android, если вы научите меня Android, возможно, мы сможем решить вашу проблему быстрее :)) - person remotedeveloper; 11.08.2016