Тестирование песочницы споров PayPal - PullRequest
1 голос
/ 29 апреля 2020

Я пытался проверить споры PayPal в песочнице и следовал этому руководству: https://developer.paypal.com/docs/integration/direct/customer-disputes/integration-guide/#sandbox -only-method .

Однако на шаге 2 (Получить разрешение от покупатель) код, предоставленный PayPal для генерации кнопки подключения, выдавал js синтаксическую ошибку, поэтому я изменил ее на следующее:

<span id='cwppButton'></span>
<script src="https://www.paypalobjects.com/js/external/connect/api.js"></script>
<script>
        paypal.use( ['login'], function (login) {
                login.render ({
                        "appid": "MY_CLIENT_ID",
                        "authend": "sandbox",
                        "scopes": "openid",
                        "containerid": "cwppButton",
                        "locale": "en-us",
                        "buttonType": "CWP",
                        "buttonSize": "lg",
                        "returnurl": "https://a62add0d.ngrok.io/api/payments/paypal/get-token/"
                });
          });
</script>

Как вы можете видеть, я изменил области видимости просто на "openid", потому что разделение ссылки, предоставленные PayPal в этом примере, выдавали мне ошибку «Invalid Scope». Однако на этом шаге я получил маркер доступа. Следующая проблема, с которой я столкнулся, была на шаге 4 (Сгенерировать JSON веб-токен для подтверждения авторизации PayPal), предоставленный код PayPal выдал синтаксическую ошибку, поэтому я заменил ее следующим образом:

<span id='cwppButton'></span>
<html>
<script>
            function base64url(source) {
                    encodedSource = btoa(source);
                    encodedSource = encodedSource.replace(/=+$/, '"');
                    encodedSource = encodedSource.replace(/\+/g, '-');
                    encodedSource = encodedSource.replace(/\//g, '-');

                    return encodedSource;
            }
            function generateJWT() {
                    var header = {"alg": "none", "typ": "JWT"};
                    var data = {"iss"   :"MY_CLIENT_ID",
                               "email" : "casino.player@gmail.com" };
                    document.write(base64url(JSON.stringify(header)) + "." +
                    base64url(JSON.stringify(data)) + ".");
            }
</script>
<body onload="generateJWT()"/>

И в результате при выполнении запроса на создание спора на шаге 6 у меня появляется эта ошибка:

{
    "error": "invalid_request",
    "error_description": "No permissions to set target_client_id"
}

У меня вопрос, как правильно настроить и протестировать PayPal споры в песочнице? Если кто-то сталкивался с такой же проблемой при тестировании споров?

1 Ответ

1 голос
/ 29 апреля 2020

из шага 1 https://developer.paypal.com/docs/integration/direct/customer-disputes/integration-guide/#sandbox -только методов :

Set up your REST app with the following scope:

https://uri.paypal.com/services/disputes/create = DISPUTE_CREATE

Вы это сделали? Этот первый шаг может потребоваться для вашей учетной записи песочницы / клиента изолированной программной среды REST APP от PayPal, поскольку вы интегрируете API, требующий утверждения.

Затем вы сможете выполнить Шаг 2 с необходимыми scope.


Без этой требуемой области действия и разрешения вы получите эту ошибку на шаге 4.

...