如何排查SDK问题

通过方法详解文档了解高级设置。

如何排查验证证书错误

使用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);

Note
您需要在生产环境中测试该问题。

  • 提供可靠的证书。确保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文档

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

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

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