• Как перевести curl запрос на php с передачей сертификатов (api Сбербанка)?

    kawabanga
    @kawabanga
    ChatGPT:

    Для отправки этого cURL запроса в Guzzle PHP, вам потребуется установить Guzzle HTTP клиент, если он еще не установлен. Выполните следующие шаги:

    Установите Guzzle через Composer (если вы этого еще не сделали):
    composer require guzzlehttp/guzzle


    В вашем PHP-скрипте используйте следующий код для отправки запроса:
    <?php
    
    require 'vendor/autoload.php'; // Путь к файлу autoload.php из установленного Guzzle через Composer
    
    use GuzzleHttp\Client;
    
    $baseUrl = 'https://mc.api.sberbank.ru/prod/tokens/v3/oauth';
    $rqUID = '25Ec70328e2CE4DF39e828E1dF75EFa0';
    $authorization = 'Basic MTgwYmYzNTItNDlhZC00MGVhLTgyYmItMDcwMTRiMjdjODQ5OjUwM2NhNmUwLWE5OWEtNDYzZC05OTIzLWJlZWUzYjVhYzYzNA==';
    $scope = 'https://api.sberbank.ru/qr/order.create';
    $certPath = '/absolute/path/to/certif.p12';
    $certPassword = 'RiKZcN3Z';
    $cacertPath = '/absolute/path/to/russian-trusted-cacert.pem';
    
    $client = new Client();
    
    $response = $client->request('POST', $baseUrl, [
        'headers' => [
            'RqUID' => $rqUID,
            'Authorization' => $authorization,
            'Content-Type' => 'application/x-www-form-urlencoded',
        ],
        'form_params' => [
            'grant_type' => 'client_credentials',
            'scope' => $scope,
        ],
        'cert' => [$certPath, $certPassword],
        'verify' => $cacertPath,
    ]);
    
    // Выводим результат запроса
    echo $response->getBody()->getContents();


    Пожалуйста, замените /absolute/path/to/certif.p12 и /absolute/path/to/russian-trusted-cacert.pem на абсолютные пути к вашим сертификатам. Также убедитесь, что у вас есть правильные данные для RqUID и Authorization заголовков.

    Этот код отправит POST запрос с указанными данными и получит ответ от сервера Sberbank.
    Ответ написан
    2 комментария