Wafer 服务端 SDK - PHP
注意
Wafer PHP SDK 已经全面升级 2.0 以支持 Wafer2,如果您想查看 Wafer1 的 PHP SDK 文档,请点击这里。
介绍
Wafer 服务端 SDK 是腾讯云为微信小程序开发者提供的快速开发库,SDK 封装了以下功能供小程序开发者快速调用:
- 用户登录与验证
- 信道服务
- 图片上传
- 数据库
开发者只需要根据文档对 SDK 进行初始化配置,就可以获得以上能力。你还可以直接到腾讯云小程序控制台购买小程序解决方案,可以得到运行本示例所需的资源和服务,其中包括已部署好的相关程序、示例代码及自动下发的 SDK 配置文件 /etc/qcloud/sdk.config
。
安装
- 方法一(推荐):使用 PHP 包依赖管理工具
composer
执行以下命令安装
composer require qcloud/weapp-sdk
- 方法二: 直接下载本仓库
ZIP
包解压到项目目录中
API
参见 API 文档
使用
加载 SDK
// 方法一:使用 composer 加载
require_once 'path/to/vendor/autoload.php';
// 方法二:不使用 composer 加载
require_once 'path/to/qcloud/weapp-sdk/AutoLoader.php';
初始化 SDK 配置项
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 文档。
处理用户登录请求
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']`
}
检查请求登录态
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 的信道服务处理即可。
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 文档以及配套 Demo 中的 ChatTunnelHandler 的实现。
MySQL 操作类
SDK 在 PDO 的基础上完成了对增删改查等常用操作的封装,并默认会在初始化 SDK 的时候连接数据库,直接通过如下代码可以快速使用 MySQL 操作类:
**注意:**MySQL 操作类为静态类
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 文档。
COS 实例
SDK 导出了一个 COS V5 API 实例,可以使用以下代码获取:
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 文档