Resolución de problemas
Error [curl] 77: Error al establecer el certificado de verificación de ubicación: CAfile aparece cuando envía una solicitud al servidor de Xsolla utilizando el SDK PHP de Pay Station.
Habilitamos la verificación de certificados SSL y utilizamos el paquete de CA predeterminado que proporciona su sistema operativo. Sin embargo, no todos los sistemas tienen un paquete de CA en disco. Por ejemplo, Windows y OS X no tienen una única ubicación común para los paquetes de CA.
Hay varias formas de resolver este problema:
- Puede deshabilitar la verificación de certificados cuando esté en el entorno de desarrollo por medio de este código:
- 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);
- Proporcione un certificado fiable (recomendado). Asegúrese de que el archivo de CA existe y especifique la ruta para acceder a este archivo con el siguiente código, en el cual:
/path/to/file
es una ruta hacia el archivo de CAssl.certificate_authority
es el nombre del archivo de CA
- 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');
En Windows, el archivo de CA puede localizarse en las siguientes carpetas:
C:\windows\system32\curl-ca-bundle.crt C:\windows\curl-ca-bundle.crt
Si no hay ningún certificado en las ubicaciones especificadas, puede usar el certificado proporcionado por Mozilla.
En algunas versiones de PHP para Windows, configurar las rutas hacia los certificados mediante código puede ser un problema. Para resolverlo, descargue el archivo php.ini
.
curl.cainfo=c:/cacert.pem
Se muestra un error con el código .htaccess
o httpd.conf
:
- php
<?php
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Si usa el SDK PHP de Pay Station, Xsolla comprueba las direcciones IP desde las que se enviaron los webhooks. El código de error
- el servidor de webhook se probó desde un localhost en un entorno de desarrollo
- su aplicación estaba funcionando en un entorno de producción por detrás de un servidor proxy, p. ej., un balanceador de carga
Si está en un entorno de desarrollo, desactive la comprobación de direcciones IP con este código:
- php
<?php
use Xsolla\SDK\Webhook\WebhookServer;
$webhookServer = WebhookServer::create($callback, PROJECT_KEY);
$webhookServer->start($webhookRequest = null, $authenticateClientIp = false);
Si utiliza un servidor proxy, elija una de las siguientes soluciones:
- Añada la dirección IP del proxy inverso al servidor de webhook con el siguiente código (recomendado):
- 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();
- Añada la dirección IP del proxy a la lista de permitidas.
Lea más información sobre cómo trabajar con un servidor proxy en la documentación de Simfony.
¿Has encontrado una errata u otro error de texto? Selecciona el texto y pulsa Ctrl+Intro.