Решение проблем
Ошибка [curl] 77: Ошибка настройки сертификата проверки местоположения: CAfile может появляться при отправке запроса с использованием Pay Station SDK на сервер Xsolla.
По умолчанию включена проверка SSL сертификата и используются сертификаты, предоставленные операционной системой. Однако не все системы имеют сертификаты на диске. К примеру, Windows и OS X не имеют единого расположения для цепочек сертификатов.
Есть несколько путей решения данной проблемы:
- В режиме разработки отключить проверку сертификата, используя следующий код:
- php
<?php
use Xsolla\SDK\API\XsollaClient;
$client = XsollaClient::factory(array(
'merchant_id' => MERCHANT_ID,
'api_key' => API_KEY
));
$client->setDefaultOption('ssl.certificate_authority', false);
- Предоставить корректный сертификат (рекомендуется). Убедитесь, что файл сертификата существует и укажите путь до него с помощью приведенного ниже кода, где:
/path/to/file
— путь до файла сертификата;ssl.certificate_authority
— название файла сертификата.
- php
<?php
use Xsolla\SDK\API\XsollaClient;
$client = XsollaClient::factory(array(
'merchant_id' => MERCHANT_ID,
'api_key' => API_KEY
));
$сlient->setDefaultOption('ssl.certificate_authority', '/path/to/file');
Для операционной системы Windows сертификат может находиться в следующих каталогах:
C:\windows\system32\curl-ca-bundle.crt C:\windows\curl-ca-bundle.crt
Если вы не имеете данного сертификата в указанных местах, вы можете использовать один из сертификатов Mozilla.
В некоторых версиях PHP на Windows существует проблема с настройкой путей к сертификатам через код. Для ее решения необходимо скачать файл php.ini
:
curl.cainfo=c:/cacert.pem
Ошибка с кодом .htaccess
или httpd.conf
:
- php
<?php
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
По умолчанию, при использовании Pay Station PHP SDK проверяются IP-адреса, с которых были отправлены вебхуки. Код ошибки
- при локальном тестировании сервера вебхуков в среде разработки;
- при работе приложения в боевом режиме через прокси-сервер (например, через балансировщик нагрузки).
Если вы находитесь в режиме разработки, отключите проверку IP-адреса, используя следующий код:
- php
<?php
use Xsolla\SDK\Webhook\WebhookServer;
$webhookServer = WebhookServer::create($callback, PROJECT_KEY);
$webhookServer->start($webhookRequest = null, $authenticateClientIp = false);
Если вы используете прокси-сервер, вы можете использовать одно из следующих решений:
- Добавить обратный IP-адрес вашего прокси-сервера на сервер вебхуков, используя код (рекомендуется):
- php
<?php
use Xsolla\SDK\Webhook\WebhookServer;
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
$request->setTrustedProxies(array('YOUR_PROXY_SERVER_IP_OR_CIDR'));
$webhookServer = WebhookServer::create($callback, PROJECT_KEY);
$webhookServer->start();
- Вручную добавить IP-адрес прокси-сервера в список разрешений.
Подробная информация о настройке работы с прокси-сервером приведена в документации Symfony.
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.