Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tencentyun/wafer-php-server-sdk
Wafer - 企业级微信小程序全栈方案
https://github.com/tencentyun/wafer-php-server-sdk
Last synced: 3 months ago
JSON representation
Wafer - 企业级微信小程序全栈方案
- Host: GitHub
- URL: https://github.com/tencentyun/wafer-php-server-sdk
- Owner: tencentyun
- License: other
- Created: 2016-10-20T18:45:12.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-11-22T06:49:58.000Z (almost 6 years ago)
- Last Synced: 2024-04-22T08:07:27.407Z (7 months ago)
- Language: PHP
- Homepage: https://github.com/tencentyun/wafer
- Size: 107 KB
- Stars: 251
- Watchers: 42
- Forks: 64
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Wafer 服务端 SDK - PHP
[![Latest Stable Version][packagist-image]][packagist-url]
[![License][license-image]][license-url]#### 注意
Wafer PHP SDK 已经全面升级 2.0 以支持 Wafer2,如果您想查看 Wafer1 的 PHP SDK 文档,请[点击这里](https://github.com/tencentyun/wafer-php-server-sdk/tree/v0.4.4)。## 介绍
Wafer 服务端 SDK 是腾讯云为微信小程序开发者提供的快速开发库,SDK 封装了以下功能供小程序开发者快速调用:
- 用户登录与验证
- 信道服务
- 图片上传
- 数据库开发者只需要根据文档对 SDK 进行初始化配置,就可以获得以上能力。你还可以直接到[腾讯云小程序控制台](https://console.qcloud.com/la)购买小程序解决方案,可以得到运行本示例所需的资源和服务,其中包括已部署好的相关程序、示例代码及自动下发的 SDK 配置文件 `/etc/qcloud/sdk.config`。
## 安装
- 方法一(推荐):使用 PHP 包依赖管理工具 `composer` 执行以下命令安装
```sh
composer require qcloud/weapp-sdk
```- 方法二: 直接下载本仓库 `ZIP` 包解压到项目目录中
## API
参见 [API 文档](./API.md)
## 使用
### 加载 SDK
```php
// 方法一:使用 composer 加载
require_once 'path/to/vendor/autoload.php';// 方法二:不使用 composer 加载
require_once 'path/to/qcloud/weapp-sdk/AutoLoader.php';
```### 初始化 SDK 配置项
```php
use \QCloud_WeApp_SDK\Conf as Config;Config::setup(array(
'appId' => '微信小程序 AppID',
'appSecret' => '微信小程序 AppSecret',
'useQcloudLogin' => false,
'mysql' => [
'host' => 'localhost',
'port' => 3306,
'user' => 'root',
'pass' => '',
'db' => 'cAuth',
'char' => 'utf8mb4'
],
'cos' => [
'region' => 'cn-south',
'fileBucket' => 'test',
'uploadFolder' => ''
],
'serverHost' => '1234567.qcloud.la',
'tunnelServerUrl' => '1234567.ws.qcloud.la',
'tunnelSignatureKey' => 'abcdefghijkl',
'qcloudAppId' => '121000000',
'qcloudSecretId' => 'ABCDEFG',
'qcloudSecretKey' => 'abcdefghijkl',
'wxMessageToken' => 'abcdefghijkl',
));
```具体配置项说明请查看:[API 文档](/API.md#sdk-配置)。
### 处理用户登录请求
```php
use \QCloud_WeApp_SDK\Auth\LoginService;
use \QCloud_WeApp_SDK\Constants;$result = LoginService::login();
// $result => [
// loginState: 1 // 1表示登录成功,0表示登录失败
// userinfo: [] // 用户信息
// ]if ($result['loginState'] === Constants::S_AUTH) {
// 微信用户信息:`$result['userinfo']['userinfo']`
} else {
// 登录失败原因:`$result['error']`
}
```### 检查请求登录态
```php
use \QCloud_WeApp_SDK\Auth\LoginService;
use \QCloud_WeApp_SDK\Constants;$result = LoginService::check();
// $result => [
// loginState: 1 // 1表示登录成功,0表示登录失败
// userinfo: [] // 用户信息
// ]if ($result['loginState'] === Constants::E_AUTH) {
// 登录失败原因:`$result['error']`
return;
}// 使用微信用户信息(`$result['userinfo']['userinfo']`)处理其它业务逻辑
// ...
```### 使用信道服务
业务在一个路由上(如 `/tunnel`)提供信道服务,只需把该路由上的请求都交给 SDK 的信道服务处理即可。
```php
use \QCloud_WeApp_SDK\Tunnel\TunnelService;
use \QCloud_WeApp_SDK\Tunnel\ITunnelHandler;class TunnelHandler implements ITunnelHandler {
// TODO: 传入登录的用户信息
public function __construct($userinfo) {}
// TODO: 实现 onRequest 方法,处理信道连接请求
public function onRequest($tunnelId, $tunnelUrl) {}
// TODO: 实现 onConnect 方法,处理信道连接事件
public function onConnect($tunnelId) {}
// TODO: 实现 onMessage 方法,处理信道消息
public function onMessage($tunnelId, $type, $content) {}
// TODO: 实现 onClose 方法,处理信道关闭事件
public function onClose($tunnelId) {}
}$handler = new TunnelHandler();
TunnelService::handle($handler, array('checkLogin' => TRUE));
```使用信道服务需要实现处理器,来获取处理信道的各种事件,具体可参考接口 [ITunnelHandler](/API.md#itunnelhandler) 的 API 文档以及配套 Demo 中的 [ChatTunnelHandler](/application/business/ChatTunnelHandler.php) 的实现。
### MySQL 操作类
SDK 在 PDO 的基础上完成了对增删改查等常用操作的封装,并默认会在初始化 SDK 的时候连接数据库,直接通过如下代码可以快速使用 MySQL 操作类:
> **注意:**MySQL 操作类为静态类
```php
use \QCloud_WeApp_SDK\Mysql\Mysql as DB;// 查询数据
$res = DB::row('cSessionInfo', ['*'], ['open_id' => '1234567890']); // 查询一条
$res = DB::select('cSessionInfo', ['*'], ['open_id' => '1234567890']); // 查询多条// 插入数据
$res = DB::insert('cSessionInfo', ['open_id' => '1234567890']);// 更新数据
$res = DB::update('cSessionInfo', ['open_id' => '1234567890'], ['uuid' => '1']);// 删除数据
$res = DB::delete('cSessionInfo', ['open_id' => '1234567890']);
```具体配置项说明请查看:[API 文档](/API.md#MySQL)。
### COS 实例
SDK 导出了一个 COS V5 API 实例,可以使用以下代码获取:
```php
use \QCloud_WeApp_SDK\Cos\CosAPI as Cos;$cosClient = Cos::getInstance();
$cosClient->upload('mybucket', 'test.txt', 'Hello World')->toArray();
```更多关于 `Cos::getInstance()` 返回 COS 实例的 API,可以查看 [COS PHP SDK V5 文档](https://github.com/tencentyun/cos-php-sdk-v5)
### 详细示例
参见项目:[Wafer2 服务端 DEMO - PHP](https://github.com/tencentyun/wafer2-quickstart-php)
## LICENSE
[MIT](LICENSE)
[packagist-image]: https://img.shields.io/packagist/v/qcloud/weapp-sdk.svg
[packagist-url]: https://packagist.org/packages/qcloud/weapp-sdk
[license-image]: https://img.shields.io/github/license/tencentyun/wafer-php-server-sdk.svg
[license-url]: LICENSE