@RuRoman

Как исправить ошибку Alfabank api?

Все делаю по инструкции как на сайте альфабанка: https://developers.alfabank.ru/products/alfa-api/d...

<?php
// Конфигурация
$clientId = 'your_client_id';
$tokenUrl = 'https://sandbox.alfabank.ru/oidc/token';
$certPath = '/path/to/sandbox_cert_2025.cer'; // Путь к вашему сертификату (открытый ключ)
$keyPath = '/path/to/sandbox_key_2025.key'; // Путь к вашему закрытому ключу
$caPath = '/path/to/root_apica_2022.cer'; // Путь к корневому сертификату УЦ
$intermediateCaPath = '/path/to/sub_root_apica_2022.cer'; // Путь к промежуточному сертификату УЦ

// Функция для выполнения cURL запроса
function curlRequest($url, $method = 'GET', $data = [], $headers = [], $certPath = null, $keyPath = null, $caPath = null, $intermediateCaPath = null) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);

    if ($method === 'POST' && !empty($data)) {
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    }

    if (!empty($headers)) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }

    if ($certPath) {
        curl_setopt($ch, CURLOPT_SSLCERT, $certPath);
    }

    if ($keyPath) {
        curl_setopt($ch, CURLOPT_SSLKEY, $keyPath);
    }

    if ($caPath) {
        curl_setopt($ch, CURLOPT_CAINFO, $caPath);
    }

    if ($intermediateCaPath) {
        curl_setopt($ch, CURLOPT_CAPATH, $intermediateCaPath);
    }

    // Отключение проверки SSL-сертификатов (только для тестирования)
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    $response = curl_exec($ch);

    if (curl_errno($ch)) {
        echo 'cURL error: ' . curl_error($ch);
    }

    curl_close($ch);

    return $response;
}

// Проверка существования файлов
if (!file_exists($certPath)) {
    die("Certificate file not found: $certPath");
}

if (!file_exists($keyPath)) {
    die("Private key file not found: $keyPath");
}

if (!file_exists($caPath)) {
    die("CA bundle file not found: $caPath");
}

if (!file_exists($intermediateCaPath)) {
    die("Intermediate CA bundle file not found: $intermediateCaPath");
}

// Получаем токен доступа
$tokenData = [
    'grant_type' => 'client_credentials',
    'client_id' => $clientId,
    'client_secret' => $clientSecret,
];

$tokenResponse = curlRequest($tokenUrl, 'POST', $tokenData, [], $certPath, $keyPath, $caPath, $intermediateCaPath);
$tokenData = json_decode($tokenResponse, true);
$accessToken = $tokenData['access_token'];

// Выводим данные
print_r($tokenData);


В ответе ошибка: "unable to set private key file type PEM"
Все перепробовал, все равно эта ошибка. Права доступа к файлу менял, ничего не помогает
  • Вопрос задан
  • 25 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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