Resolución de problemas

Cómo solucionar el error de verificación del certificado

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:

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);
Nota
También debe testar este problema en el entorno de producción.
  • 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 CA
    • ssl.certificate_authority es el nombre del archivo de CA
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');

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 cacert.pem y especifique la ruta hacia el mismo en el archivo de configuración php.ini.

Copy
Full screen
Small screen
    curl.cainfo=c:/cacert.pem
    
    ¿Te ha resultado útil este artículo?
    ¡Gracias!
    ¿Hay algo en lo que podamos mejorar? Mensaje
    Lo sentimos
    Por favor, cuéntanos por qué no te ha resultado útil este artículo. Mensaje
    ¡Gracias por tu mensaje!
    Nos ayudará a mejorar tu experiencia.
    Ocultar

    Cómo solucionar el error de autenticación

    Se muestra un error con el código INVALID_SIGNATURE y el mensaje Authorization header not found in Xsolla webhook request si PHP-CGI para Apache no transmite usuario/contraseña básicos en HTTP al PHP por defecto. Para resolverlo, añada la siguiente cadena al archivo de configuración de Apache .htaccess o httpd.conf:

    Copy
    Full screen
    Small screen
    <?php
    
    RewriteEngine On
    RewriteCond %{HTTP:Authorization} ^(.+)$
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
    ¿Te ha resultado útil este artículo?
    ¡Gracias!
    ¿Hay algo en lo que podamos mejorar? Mensaje
    Lo sentimos
    Por favor, cuéntanos por qué no te ha resultado útil este artículo. Mensaje
    ¡Gracias por tu mensaje!
    Nos ayudará a mejorar tu experiencia.
    Ocultar

    Cómo solucionar una dirección IP no válida

    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 INVALID_CLIENT_IP se devuelve en uno de los siguientes casos:

    • 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:

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

    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();
    

    • 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.

    ¿Te ha resultado útil este artículo?
    ¡Gracias!
    ¿Hay algo en lo que podamos mejorar? Mensaje
    Lo sentimos
    Por favor, cuéntanos por qué no te ha resultado útil este artículo. Mensaje
    ¡Gracias por tu mensaje!
    Nos ayudará a mejorar tu experiencia.
    Ocultar
    Última actualización: 7 de Octubre de 2024

    ¿Has encontrado una errata u otro error de texto? Selecciona el texto y pulsa Ctrl+Intro.

    Informar de un problema
    Nos esforzamos por ofrecer contenido de calidad. Tus comentarios nos ayudan a mejorar.
    Déjanos tu correo electrónico para que te podamos responder
    ¡Gracias por tu mensaje!