Все делаю по инструкции как на сайте альфабанка:
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"
Все перепробовал, все равно эта ошибка. Права доступа к файлу менял, ничего не помогает