Подписки PayPal - PullRequest
       0

Подписки PayPal

0 голосов
/ 13 марта 2019

Я пытаюсь получить токен доступа PayPal, используя инструкции по этому адресу: https://developer.paypal.com/docs/api/overview/#get-an-access-token

Я следовал инструкциям в URL-адресе письма и создал следующий пример кода на JavaScript. Когда я запускаю его, я получаю ошибку 401 - пользователь не авторизован.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <h1>Get Access Token</h1>
    <script>
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function () {
            if (this.readyState == 4 && this.status == 200) {
                console.log(xhttp.responseText);
            }
            else {
               console.log("Status: " + xhttp.status)
            }
        };
        url = "https://api.sandbox.paypal.com/v1/oauth2/token"
        clientID = "AY_6HpYodeIdCyCSWmIuTTX6P4PfcO1tcehekaSk9uwSBhav1SILCD0MZ_E3dRMVXiPdmE-YimahYtQy"
        secret = "EHLlKnunCQtuTdqjnl6QX9ZnuQgMllZKozf-VNHeys9tDssQc0xlXi4_0se1M-VxT8gOHGaSVS3M-2an"
        xhttp.open("post", url, false, clientID, secret);
        xhttp.setRequestHeader("Accept", "application/json");
        xhttp.setRequestHeader("Accept-Language", "en_US");
        xhttp.setRequestHeader("content-type", "application/x-www-form-urlencoded");
        xhttp.send("grant_type=client_credentials");
        console.log(xhttp.status);
    </script>
</body>
</html>

ClientID и секретный ключ получены по ссылке «Мои приложения и учетные данные» PayPal:

Страница моих приложений и учетных данных PayPal

Кто-нибудь может помочь? Спасибо

1 Ответ

0 голосов
/ 28 марта 2019

Я нашел ответ. Следующий код работает. Идентификатор клиента и секрет не должны передаваться в качестве параметров команде Open, как у меня было.

Вместо этого они должны быть соединены друг с другом, с двоеточием между ними, а затем (верьте, хотите нет) с кодировкой Base 64 и переданной в заголовке авторизации, как показано:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <h1>Get Access Token</h1>
    <script>
        clientID = "AY_6HpYodeIdCyCSWmIuTTX6P4PfcO1tcehekaSk9uwSBhav1SILCD0MZ_E3dRMVXiPdmE-YimahYtQy"
        secret = "EHLlKnunCQtuTdqjnl6QX9ZnuQgMllZKozf-VNHeys9tDssQc0xlXi4_0se1M-VxT8gOHGaSVS3M-2an"
        var authorizationString = btoa(clientID + ':' + secret);
        /////////////////////////////////////////////////////////////////////////////////////////////
        var xhttp = new XMLHttpRequest();
        var createPlanResults = ""
        xhttp.onreadystatechange = function () {
            if (this.readyState == 4 && this.status == 200) {
                document.write(xhttp.responseText)
            }
        };
        url = "https://api.sandbox.paypal.com/v1/oauth2/token"
        xhttp.open("post", url, false);
        xhttp.setRequestHeader("Accept", "application/json");
        xhttp.setRequestHeader("Accept-Language", "en_US");
        xhttp.setRequestHeader("content-type", "application/x-www-form-urlencoded");
        xhttp.setRequestHeader("Authorization", "Basic " + authorizationString);
        xhttp.send("grant_type=client_credentials");
    </script>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...