twitchalerts / xsolla-sdk-php
PHP版的Xsolla SDK。Xsolla是经授权的在线游戏电子商务服务提供商和经销商。
8.3.0
2023-12-11 18:58 UTC
Requires
- php: ^7.1|^8.0
- ext-curl: *
- ext-json: *
- guzzlehttp/guzzle: ^7.0.1
- symfony/http-foundation: ~2.3 || ~3.0 || ~4.0 || ~5.0 || ~6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ~2.13
- mtdowling/burgomaster: ^0.0.3
- phpunit/phpunit: ^9.0
- symfony/process: ~4.1
README
官方PHP SDK,用于与Xsolla API交互
特性
- 使用不同获取令牌的方法,实现支付UI的完全定制。
- 客户端包含所有API方法,使您的集成变得简单方便。您可以用于设置和更新虚拟货币、物品和订阅计划,管理用户余额,使用报告API检查财务信息等。
- 便捷的webhook服务器
- 只需一个回调函数即可开始。
- 已实现所有安全检查:签名认证和IP白名单。
- 完全定制通知处理逻辑,如果标准服务器类不满足您的需求。
- SDK基于Guzzle v3构建,并利用其许多特性,包括持久连接、并行请求、事件和插件(通过Symfony2 EventDispatcher)、服务描述、网络日志、缓存、灵活批处理以及带有截断指数退避的重试请求。
要求
- PHP ^7.3 或 ^8.0
- 需要以下PHP扩展
- curl
- json
入门指南
请注册您的发布者账户并创建项目。为了使用PHP SDK库,您将需要
- 商户ID
- API密钥
- 项目ID
- 项目密钥
安装
通过Composer安装
安装PHP版Xsolla SDK的推荐方法是使用Composer。
$ cd /path/to/your/project
$ composer require xsolla/xsolla-sdk-php
安装后,您需要要求Composer的自动加载器
require '/path/to/vendor/autoload.php';
通过Phar安装
您可以下载打包的phar文件并将其包含在您的脚本中以开始
require '/path/to/xsolla.phar';
通过Zip安装
您可以下载zip文件,将其解压缩到您项目的选择位置,并包含自动加载器
require '/path/to/xsolla-autoloader.php';
快速示例
集成支付UI
要将支付UI集成到您的游戏中,您应获取一个访问令牌。访问令牌是一个字符串,用于标识游戏、用户和购买参数。
有多种获取令牌的方法。最简单的一种是使用createCommonPaymentUIToken方法,您只需要传递Xsolla系统中项目的ID和您的游戏中用户的ID
<?php use Xsolla\SDK\API\XsollaClient; $client = XsollaClient::factory(array( 'merchant_id' => MERCHANT_ID, 'api_key' => API_KEY )); $paymentUIToken = $client->createCommonPaymentUIToken(PROJECT_ID, USER_ID, $sandboxMode = true);
在您的页面上渲染支付UI脚本
<html> <head lang="en"> <meta charset="UTF-8"> </head> <body> <button data-xpaystation-widget-open>Buy Credits</button> <?php \Xsolla\SDK\API\PaymentUI\PaymentUIScriptRenderer::send($paymentUIToken, $isSandbox = true); ?> </body> </html>
接收webhook
有一个内置的服务器类可以帮助您处理webhook。
<?php use Xsolla\SDK\Webhook\WebhookServer; use Xsolla\SDK\Webhook\Message\Message; use Xsolla\SDK\Exception\Webhook\XsollaWebhookException; $callback = function (Message $message) { switch ($message->getNotificationType()) { case Message::USER_VALIDATION: /** @var Xsolla\SDK\Webhook\Message\UserValidationMessage $message */ // TODO if user not found, you should throw Xsolla\SDK\Exception\Webhook\InvalidUserException break; case Message::PAYMENT: /** @var Xsolla\SDK\Webhook\Message\PaymentMessage $message */ // TODO if the payment delivery fails for some reason, you should throw Xsolla\SDK\Exception\Webhook\XsollaWebhookException break; case Message::REFUND: /** @var Xsolla\SDK\Webhook\Message\RefundMessage $message */ // TODO if you cannot handle the refund, you should throw Xsolla\SDK\Exception\Webhook\XsollaWebhookException break; default: throw new XsollaWebhookException('Notification type not implemented'); } }; $webhookServer = WebhookServer::create($callback, PROJECT_KEY); $webhookServer->start();
一旦您在服务器上完成了通知的处理,请设置项目设置页面上的URL,以便接收所有webhook通知。
故障排除
您可以在我们的文档中找到最常见错误的解决方案。
贡献
请查看CONTRIBUTING.md以了解如何合并您的更改。