own3d / xsolla-sdk-php
此包已被弃用且不再维护。未建议替代包。
PHP 版 Xsolla SDK。Xsolla 是提供在线游戏电子商务服务的官方分销商和商家。
4.3.1
2024-04-03 09:09 UTC
Requires
- php: ^8.0
- ext-curl: *
- ext-json: *
- guzzlehttp/guzzle: ~6.0 || ~7.0
- symfony/http-foundation: ~2.3 || ~3.0 || ~4.0 || ~5.0 || ~6.0 || ~7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ~2.13
- mtdowling/burgomaster: ^0.0.3
- phpunit/phpunit: ^9.0
- symfony/process: ~4.1
- dev-master
- 4.3.1
- v4.3.0
- v4.2.2
- v4.2.1
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.2
- v4.0.1
- v4.0.0
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.6.2
- v2.6.1
- v2.6.0
- v2.5.0
- v2.4.1
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.0
- v2.0.0
- v2.0.0-BETA1
- v1.1.1
- v1.1.0
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-guzzlehttp-upgrade
- dev-PAYMENTS-4030_Increase_PHP_version
- dev-LIVETEAM-19909
- dev-LIVETEAM-19892
- dev-LIVETEAM-19864
- dev-LIVETEAM-19840
This package is auto-updated.
Last update: 2024-04-03 09:10:01 UTC
README
官方 PHP SDK,用于与 Xsolla API 交互
此 SDK 可用于
- 获取授权令牌
- 处理基本 webhook(用户验证、支付、退款等)
功能
- 使用不同的令牌获取方法,全面定制支付 UI。
- 所有 API 方法的客户端,使您的集成变得简单方便。您可以使用它来设置和更新虚拟货币、物品和订阅计划,管理用户余额,使用 Report API 检查财务信息等。
- 便捷的 webhook 服务器
- 要开始,您只需要一个回调函数。
- 所有安全检查已实现:签名认证和 IP 白名单。
- 全面定制通知处理逻辑,如果标准服务器类不适用。
- SDK 基于 Guzzle v3 构建,并利用了其许多功能,包括持久连接、并行请求、事件和插件(通过 Symfony2 EventDispatcher)、服务描述、网络日志、缓存、灵活的批处理和带截断指数退避的重试请求。
要求
- PHP ^7.3 或 ^8.0
- 需要以下 PHP 扩展
- curl
- json
入门
请注册您的 发布者账户 并创建项目。为了使用 PHP SDK 库,您需要
- MERCHANT_ID
- API_KEY
- PROJECT_ID
- PROJECT_KEY
您可以使用您的 公司资料 和 项目设置 中的信息来获取这些参数。
安装
通过 Composer 安装
安装 Xsolla SDK for PHP 的推荐方式是通过 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,该URL将接收所有webhook通知。
故障排除
您可以在我们的文档中找到最常见错误的解决方案。
贡献
请查看CONTRIBUTING.md以了解如何合并您的更改。