Как сделать запрос POST через GuzzleRequest?

Я пытаюсь настроить API.

Я не знаю, как создать экземпляр GuzzleRequest для публикации данных и создания заголовка авторизации для API.

Это созданный GuzzleRequest

$request = new GuzzleRequest(
    method: 'POST',
    uri: $url,
    //body:null,
);

Внутри GuzzleRequest, который я создал, я хочу передать данные внутри параметров тела. Параметры тела могут принимать: string|resources|null|StreamInterface, но это данные, которые я хочу передать:

{
    "payItemId": "S-112-948-MTNMOMO-20052-200040001-1",
    "amount": 1000
}

Это полный код функции:

function headerauthorization()
{

    $token = "716c3fcf-98bd-435e-a16d-befc3b96da35";
    $secret = "9f96a7ed-338f-4609-83f8-27ce60fe87f4";
    //$url = "https://s3p.smobilpay.staging.maviance.info/v2/cashin?serviceid=20052";
    $url = "https://s3p.smobilpay.staging.maviance.info/v2/quotestd";

    $config = new \Maviance\S3PApiClient\Configuration();
    $config->setHost($url);
    $client = new \Maviance\S3PApiClient\ApiClient($token, $secret, ['verify' => false]);


    $request = new GuzzleRequest(
        method: 'POST',
        uri: $url,
        //body:null, 
    );

    $curl = curl_init();
    curl_setopt_array(
        $curl,
        array(
            CURLOPT_URL => 'https://s3p.smobilpay.staging.maviance.info/v2/quotestd',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_HTTPHEADER => array(
                'Authorization:' . $client->buildAuthorizationHeader($request) . ''
            ),
        )
    );
    $response = curl_exec($curl);
    curl_close($curl);
    $response = json_decode($response, true);

}

Почему я использую GuzzleRequest? Функция buildAuthorizationHeader($request) принимает в качестве параметров только тип RequestInterface. Сначала я попробовал следующий код (метод GET, параметры тела отсутствуют) для первого запроса API, и у меня он работает нормально. Но теперь у меня есть метод Post и параметры тела для вставки.

Это первый код, который у меня работает нормально

 function headerauthorization()
    {

        $token = "716c3fcf-98bd-435e-a16d-befc3b96da35";
        $secret = "9f96a7ed-338f-4609-83f8-27ce60fe87f4";
        $url = "https://s3p.smobilpay.staging.maviance.info/v2/cashin?serviceid=20052";
       

        $config = new \Maviance\S3PApiClient\Configuration();
        $config->setHost($url);
        $client = new \Maviance\S3PApiClient\ApiClient($token, $secret, ['verify' => false]);
        
        
        $request = new GuzzleRequest(
            method: 'GET',
            uri: $url,
            // headers: [],
            // body: null,
        );   
        $curl = curl_init();
        curl_setopt_array($curl, array(
           CURLOPT_URL => 'https://s3p.smobilpay.staging.maviance.info/v2/cashin?serviceid=20052',
           CURLOPT_RETURNTRANSFER => true,
           CURLOPT_ENCODING => '',
           CURLOPT_MAXREDIRS => 10,
           CURLOPT_TIMEOUT => 0,
           CURLOPT_FOLLOWLOCATION => true,
           CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
           CURLOPT_CUSTOMREQUEST => 'GET',
           CURLOPT_HTTPHEADER => array(
                'Authorization:'.$client->buildAuthorizationHeader($request).''
            ),
        )
        );
        $response = curl_exec($curl);
        curl_close($curl);
        $response = json_decode($response, true);
        $payItemId = $response[0]["payItemId"];
       
    } 
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Установите body-data в массив, а затем json_encode вот так.

$body = json_encode([
    "payItemId" => "S-112-948-MTNMOMO-20052-200040001-1",
    "amount" => 1000,
]);

Затем добавьте еще одно поле сразу после CURLOPT_CUSTOMREQUEST => 'POST',, вот так

CURLOPT_POSTFIELDS => $body,

Наконец, установите CURLOPT_HTTPHEADER как

CURLOPT_HTTPHEADER => array(
            'Content-Type: application/json',
            'Authorization: ' . $client->buildAuthorizationHeader($request)
        ),

Попробуйте это, это сработает.

Другие вопросы по теме

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

Объявите псевдонимы для счетчиков, которые используют один и тот же столбец, с помощью метода Laravel Eloquent loadCount()
Ошибка промежуточного программного обеспечения Laravel: аргумент № 1 ($content) должен иметь тип ?string, задан Illuminate\Routing\Redirector
Странное поведение доктрины Symfony во время теста phpunit - поле в базе данных становится нулевым
Xero API: updateOrCreateInvoices перезаписывает контактные данные
Symfony 7.0 AssetMapper: файлы JS загружаются только при загрузке начальной страницы или после обновления F5
Ошибка авторизации при динамическом создании новой базы данных MongoDB с использованием драйвера PHP MongoDB
Как установить PHP-расширение mongodb для PHP 7.1 в 2024 году
MySQL JSON_OBJECTAGG — Как исправить ошибку «PDOException: SQLSTATE[22032]: <>: 3158 JSON-документы могут не содержать NULL-имена элементов»?
Измените строку из одного столбца перед вставкой в ​​другой
Проблема с маршрутами API laravel в cPanel