Giter Site home page Giter Site logo

weapp-php-server-sdk's Introduction

Wafer 服务端 SDK - PHP

Latest Stable Version License

注意

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 文档

详细示例

参见项目:Wafer2 服务端 DEMO - PHP

LICENSE

MIT

weapp-php-server-sdk's People

Contributors

jas0ncn avatar khs1994 avatar miusuncle avatar techird avatar xiaoshangmin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

weapp-php-server-sdk's Issues

deleted

如题,怎么样添加第三方sdk呢?

readme文档有误

use \QCloud_WeApp_SDK\Conf;

Conf::setup(array(
    'ServerHost' => '业务服务器的主机名',
    'AuthServerUrl' => '鉴权服务器服务地址',
    'TunnelServerUrl' => '信道服务器服务地址',
    'TunnelSignatureKey' => '和信道服务器通信的签名密钥',
));

PHP 业务环境支持 MySQL 扩展

背景

腾讯云默认的一站式解决方案购买的 PHP 业务服务器,默认并没有安装 MySQL 扩展。

解决方法

对于现有的业务服务器,执行下面 4 行代码即可安装 MySQL 扩展。

wget 'https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi.repo' -O /etc/yum.repos.d/remi.repo
yum --enablerepo=remi-php56 -y update php
yum --enablerepo=remi-php56 -y install php-mysql
service php-fpm restart

新购买一站式解决方案的用户,镜像已经包含 MySQL 扩展,无需安装。

update sdk后登录失败

更新前,登录返回数据如下:

"returnData": {
"id":"abc",
"skey":"abc",
"user_info":{
"openId":"abv","nickName":"abv","gender":1,"language":"zh_CN","city":"Shenzhen","province":"Guangdong","country":"China","avatarUrl":"abv",
"watermark":{"timestamp":1509190947,"appid":"abv"}},

"duration":7200},
"version":1,
"componentName":"MA"}

sdk更新后,登录返回数据如下:

"returnData":{
"user_info":{
"openId":"abv",
"nickName":"adds",
"gender":1,"language":
"zh_CN",
"city":"Shenzhen",

"province":"Guangdong","country":"China","avatarUrl":"add",
"watermark":{"timestamp":1509190947,"appid":"dddd"}}},

"version":1,
"componentName":"MA"}

没有返回id和skey了。。。客户端处理的时候,又没更新,一直提示:
var errorMessage = '登录请求没有包含会话响应,请确保服务器处理 ' + options.loginUrl + ' 的时候正确使用了 SDK 输出登录结果';

返回给客户端的result为:
data:""
errMsg:"request:ok"

求解答

AuthApi:检查登录部分异常处理存在混淆

image
如上图,不存在sky和检查最后访问时间是两种不同的异常,但是从返回值无法判断和区分,这样业务无法进行log,这给定位问题和解决问题带来了难度。

对于Mysql的操作

请问一下,如果我想条件查询数据如查找30岁以下且为男性的人的信息改如果去写这个条件查询语句。
我尝试了DB::select("table",["*"],['age<"30"','sex="male"'],"and")但是不管用。

php-sdk信道服务将正常tunnelId当无效信道返回

跟踪到tunnelAPI.php的sendRequest函数,后面涉及到信道服务器没办法继续了,根据错误日志可以看到该请求返回的 $body中的invalidateTunnelIds中就把有效信道当成无效的返回了。到腾讯云提交工单了,官方建议我不要再使用信道服务,这个东西已经处于无人维护的状态,不免心中愤慨,花了大把精力现在不敢用了。后面的避坑

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.