@kamwork

Интеграция с API CDEK 2.0 — почему не могу получить токен через GuzzleHttp (в postman все работает)?

Пытаюсь интегрироваться с API СДЕК https://confluence.cdek.ru/pages/viewpage.action?p... и получить Токен для работы.

Через postman все работает, пробую через GuzzleHttp, возвращает ошибку:
Client error: `POST https://api.cdek.ru/v2/oauth/token` resulted in a `401 Unauthorized` response:
{"timestamp":"2021-05-23T14:57:42.291+00:00","status":401,"error":"Unauthorized","message":"","path":"/oauth/token"}
"""


Класс выглядит так:
<?php

namespace App\Helpers;
use GuzzleHttp\Client;

class CDEK2
{
    public function __construct() {
        $this->client_id = settings('cdek_account')->value;
        $this->client_secret = settings('cdek_password')->value;

        $this->cdek = new Client();
    }

    public function getToken() {
        $token = $this->cdek->request('POST', 'https://api.cdek.ru/v2/oauth/token', [
            'headers' => ['Content-type' => 'application/x-www-form-urlencoded'],
            'parameters' => [
                'grant_type' => 'client_credentials',
                'client_id'  => $this->client_id,
                'client_secret' => $this->client_secret
                ]
        ]);

        return $token;
    }

    public function getCityId()
    {
        return $this->getToken();
    }
  • Вопрос задан
  • 1791 просмотр
Решения вопроса 1
@kamwork Автор вопроса
Разобрался.
$response = $this->cdek->request('POST', 'https://api.cdek.ru/v2/oauth/token?parameters', [
            'form_params' => [
                'grant_type' => 'client_credentials',
                'client_id'  => $this->client_id,
                'client_secret' => $this->client_secret
                ]
        ]);

         var_dump($response->getBody()->getContents());
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
JhaoDa
@JhaoDa
LaravelRUS Team
Надо взять официальный SDK 2.0 и не мучиться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы