故障排除

如何解决验证证书错误

使用Pay Station SDK向艾克索拉服务器发送请求时出现错误[curl] 77: Error setting up the location verification certificate: CAfile

我们启用SSL证书验证并使用操作系统提供的默认CA捆绑包。不过,并不是所有的系统磁盘上都有CA捆绑包。例如,Windows和OS X没有CA捆绑包的固定通用位置。

解决该问题有以下几种方式:

  • 您可以用以下代码在开发环境中禁用证书认证:

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);
注:
您也需要在生产环境中测试该问题。
  • 提供可靠的证书(推荐)。确保CA文件存在并通过下方代码指定其路径,其中:
    • /path/to/file是CA文件的路径
    • ssl.certificate_authority是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');

对于Windows系统,CA文件可能在以下文件夹中:

  • C:\windows\system32\curl-ca-bundle.crt
  • C:\windows\curl-ca-bundle.crt

如果上述位置下没有证书,可使用Mozilla提供的证书

在部分用于Windows的PHP版本中,通过代码配置证书路径可能出现问题。要解决问题,请下载cacert.pem文件并在php.ini配置文件中指定其路径。

Copy
Full screen
Small screen
    curl.cainfo=c:/cacert.pem
    
    本文对您的有帮助吗?
    谢谢!
    我们还有其他可改进之处吗? 留言
    非常抱歉
    请说明为何本文没有帮助到您。 留言
    感谢您的反馈!
    我们会查看您的留言并运用它改进用户体验。
    隐藏

    如何解决认证错误

    默认情况下,如果用于Apache的PHP-CGI未向PHP传入HTTP Basic user/pass,将显示代码为INVALID_SIGNATURE,消息为Authorization header not found in Xsolla webhook request的错误。要解决该错误,请在.htaccesshttpd.conf Apache配置文件中添加以下字符串:

    Copy
    Full screen
    Small screen
    <?php
    
    RewriteEngine On
    RewriteCond %{HTTP:Authorization} ^(.+)$
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
    本文对您的有帮助吗?
    谢谢!
    我们还有其他可改进之处吗? 留言
    非常抱歉
    请说明为何本文没有帮助到您。 留言
    感谢您的反馈!
    我们会查看您的留言并运用它改进用户体验。
    隐藏

    如何解决无效的IP地址

    如果使用Pay Station PHP SDK,艾克索拉会检查Webhook来自的IP地址。以下情况下会返回INVALID_CLIENT_IP错误:

    • 在开发环境中从本地主机测试Webhook服务器
    • 您的应用通过代理服务器(如负载平衡器)在生产环境中工作

    如果您在开发环境中,请使用下列代码关闭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地址添加到Webhook服务器(推荐):

    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地址添加到允许列表。

    关于使用代理服务器的更多信息,请参阅Simfony文档

    本文对您的有帮助吗?
    谢谢!
    我们还有其他可改进之处吗? 留言
    非常抱歉
    请说明为何本文没有帮助到您。 留言
    感谢您的反馈!
    我们会查看您的留言并运用它改进用户体验。
    隐藏
    上次更新时间: 2024年10月7日

    发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。

    报告问题
    我们非常重视内容质量。您的反馈将帮助我们做得更好。
    请留下邮箱以便我们后续跟进
    感谢您的反馈!