xsolla / xsolla-sdk-php
此包已被弃用且不再维护。未建议替代包。
PHP版的Xsolla SDK。Xsolla是提供在线游戏电子商务服务的官方授权分销商和商家。
v4.3.2
2024-05-23 11:07 UTC
Requires
- php: ^7.3|~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.0 || ~7.0
Requires (Dev)
- php: ^7.3|~8.0
- friendsofphp/php-cs-fixer: ~2.13
- mtdowling/burgomaster: ^0.0.3
- phpunit/phpunit: ^9.0
- symfony/process: ~4.1
- dev-master
- v4.3.2
- v4.3.1
- v4.3.0
- v4.2.0
- 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-PAYMENTS-19117_increase_guzzle_version
- dev-PAYMENTS-17868_change_documentation
- dev-PAYMENTS-17730_fix_bugs_sdk
- dev-own3d
- 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-05-23 11:11:26 UTC
README
官方PHP SDK,用于与Xsolla API交互
此SDK可用于:
- 获取授权令牌
- 处理基本webhooks(用户验证、支付、退款等)
功能
- 通过获取令牌的不同方法,完全自定义支付UI。
- 所有API方法的客户端,使您的集成变得简单方便。您可以使用它来设置和更新虚拟货币、物品和订阅计划,管理用户余额,通过Report API检查财务信息等。
- 便捷的webhook服务器
- 开始只需要一个回调函数。
- 已实现所有安全检查:签名认证和IP白名单。
- 如果标准服务器类不适用,可以完全自定义通知处理逻辑。
- SDK基于Guzzle v3构建,并利用了许多其功能,包括持久连接、并行请求、事件和插件(通过Symfony2 EventDispatcher)、服务描述、网络日志、缓存、灵活的批量处理以及带有截断指数退避的重试请求。
要求
- PHP ^7.3 或 ^8.0
- 以下PHP扩展是必需的
- curl
- json
入门指南
请注册您的发布者账户并创建项目。为了使用PHP SDK库,您需要
- 商户ID
- API密钥
- 项目ID
- 项目密钥
安装
通过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';
快速示例
接收webhooks
有一个内置的服务器类来帮助您处理webhooks。
使用webhook服务器解决方案
<?php use Xsolla\SDK\Webhook\WebhookServer; use Xsolla\SDK\Webhook\Message\Message; use Xsolla\SDK\Webhook\Message\NotificationTypeDictionary; use Xsolla\SDK\Exception\Webhook\XsollaWebhookException; $callback = function (Message $message) { switch ($message->getNotificationType()) { case NotificationTypeDictionary::USER_VALIDATION: /** @var Xsolla\SDK\Webhook\Message\UserValidationMessage $message */ // TODO if user not found, you should throw Xsolla\SDK\Exception\Webhook\InvalidUserException break; case NotificationTypeDictionary::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 NotificationTypeDictionary::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();
使用某些PHP函数中的辅助类解决方案
public function handleRequest() { $request = Request::createFromGlobals(); $message = Message::fromArray($request->toArray()); switch ($message->getNotificationType()) { case NotificationTypeDictionary::USER_VALIDATION: /** * https://developers.xsolla.com/webhooks/operation/user-validation/ * @var Xsolla\SDK\Webhook\Message\UserValidationMessage $message */ if ($message->getUserId() !== 'our_user_id') { return YourResponseClass(json_encode(['error' => ['code' => 'INVALID_USER', 'message' => 'Invalid user']]), 400); } break; case NotificationTypeDictionary::PAYMENT: /** @var Xsolla\SDK\Webhook\Message\PaymentMessage $message */ break; case NotificationTypeDictionary::REFUND: /** @var Xsolla\SDK\Webhook\Message\RefundMessage $message */ break; default: throw new \Exception('Notification type not implemented'); } return YourResponseClass('', 200); }
一旦您在服务器上完成通知的处理,请在项目的设置页面设置将接收所有webhook通知的URL。
故障排除
您可以在我们的文档中找到最常见的错误解决方案。
贡献
请查看 CONTRIBUTING.md 了解如何合并您的更改。