Не удается отправить POST-запрос в Paypal Connect из приложения Laravel - PullRequest
1 голос
/ 21 мая 2019

У меня есть приложение, которое подключается к Paypal Connect.После нажатия кнопки PayPal Connect я попадаю на сайт PayPal и получаю код, который они отправляют после аутентификации.Но тогда я не могу отправить запрос POST в PayPal с кодом авторизации, чтобы запросить информацию о пользователе. Я получаю сообщение об ошибке.Я получаю эту ошибку: Аутентификация не удалась из-за неверных учетных данных аутентификации или отсутствия .. И я почти уверен, что мои учетные данные в порядке.Я что-то упустил?

Это то, что дает мне Paypal:

curl -X POST https://api.sandbox.paypal.com/v1/oauth2/token \
-H 'Authorization: Basic {Your Base64-encoded ClientID:Secret}=' \
-d 'grant_type=refresh_token&refresh_token={refresh token}'

Я использую Guzzle для отправки почтового запроса.Пожалуйста, смотрите код ниже

$client = new \GuzzleHttp\Client();
$headers = [
    'Authorization' => 'Basic clientID:clientSecret'
];

$response = $client->request('POST',
'https://api.sandbox.paypal.com/v1/oauth2/token',
[
    'grant_type ' => 'authorization_code',
    'code' => $data['code']
], 
$headers);

1 Ответ

2 голосов
/ 21 мая 2019

Глядя на документацию PayPal API , кажется, что ваш заголовок авторизации неверен.

Заголовок запроса авторизации: Код клиента Base64 и секретные учетные данные, разделенные двоеточие (:). Используйте учетные данные партнера.

Вы можете использовать функцию php base64_encode () для этого.

$client = new \GuzzleHttp\Client();

$authorizationString = base64_encode($clientId . ':' . $clientSecret);

$client->request(
    'POST', 
    'https://api.sandbox.paypal.com/v1/oauth2/token', 
    [
        'headers' => [
            'Authorization' => 'Basic ' . $authorizationString
        ], 
        'form_params' => [
            'grant_type ' => 'authorization_code',
            'code' => $data['code']
        ]
    ]
);
...