Решение проблем

Как устранить ошибку проверки сертификата

Ошибка [curl] 77: Ошибка настройки сертификата проверки местоположения: CAfile может появляться при отправке запроса с использованием Pay Station SDK на сервер Xsolla.

По умолчанию включена проверка SSL сертификата и используются сертификаты, предоставленные операционной системой. Однако не все системы имеют сертификаты на диске. К примеру, Windows и OS X не имеют единого расположения для цепочек сертификатов.

Есть несколько путей решения данной проблемы:

  • В режиме разработки отключить проверку сертификата, используя следующий код:

Copy
Full screen
Small screen
<?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 — название файла сертификата.
Copy
Full screen
Small screen
<?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 существует проблема с настройкой путей к сертификатам через код. Для ее решения необходимо скачать файл cacert.pem и прописать путь к этому файлу непосредственно в конфигурационном файле php.ini:

Copy
Full screen
Small screen
    curl.cainfo=c:/cacert.pem
    
    Была ли статья полезна?
    Спасибо!
    Что может сделать страницу еще лучше? Сообщение
    Жаль, что так произошло
    Расскажите, почему статья не была полезна. Сообщение
    Спасибо за обратную связь!
    Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
    Скрыть

    Как устранить ошибку авторизации

    Ошибка с кодом INVALID_SIGNATURE и сообщением Authorization header not found in Xsolla webhook request может появляться из-за того, что PHP-CGI под Apache не передает HTTP Basic user/pass в PHP по умолчанию. Чтобы это заработало, добавьте следующую строку в конфигурационный файл Apache .htaccess или httpd.conf:

    Copy
    Full screen
    Small screen
    <?php
    
    RewriteEngine On
    RewriteCond %{HTTP:Authorization} ^(.+)$
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
    Была ли статья полезна?
    Спасибо!
    Что может сделать страницу еще лучше? Сообщение
    Жаль, что так произошло
    Расскажите, почему статья не была полезна. Сообщение
    Спасибо за обратную связь!
    Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
    Скрыть

    Как исправить невалидный IP-адрес

    По умолчанию, при использовании Pay Station PHP SDK проверяются IP-адреса, с которых были отправлены вебхуки. Код ошибки INVALID_CLIENT_IP может возвращаться в одном из следующих случаев:

    • при локальном тестировании сервера вебхуков в среде разработки;
    • при работе приложения в боевом режиме через прокси-сервер (например, через балансировщик нагрузки).

    Если вы находитесь в режиме разработки, отключите проверку IP-адреса, используя следующий код:

    Copy
    Full screen
    Small screen
    <?php
    use Xsolla\SDK\Webhook\WebhookServer;
    $webhookServer = WebhookServer::create($callback, PROJECT_KEY);
    $webhookServer->start($webhookRequest = null, $authenticateClientIp = false);
    

    Если вы используете прокси-сервер, вы можете использовать одно из следующих решений:

    • Добавить обратный IP-адрес вашего прокси-сервера на сервер вебхуков, используя код (рекомендуется):

    Copy
    Full screen
    Small screen
    <?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.

    Была ли статья полезна?
    Спасибо!
    Что может сделать страницу еще лучше? Сообщение
    Жаль, что так произошло
    Расскажите, почему статья не была полезна. Сообщение
    Спасибо за обратную связь!
    Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
    Скрыть
    Была ли статья полезна?
    Спасибо!
    Что может сделать страницу еще лучше? Сообщение
    Жаль, что так произошло
    Расскажите, почему статья не была полезна. Сообщение
    Спасибо за обратную связь!
    Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
    Оценить страницу
    Оценить страницу
    Что может сделать страницу еще лучше?

    В другой раз

    Спасибо за обратную связь!
    Последнее обновление: 22 января 2024

    Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.

    Сообщите о проблеме
    Мы постоянно улучшаем качество нашей документации. Ваш отзыв поможет нам в этом.
    Укажите email-адрес, чтобы мы могли связаться с вами
    Спасибо за обратную связь!