开发准备

申请微信公众号

开发者首先需要申请开通带设备功能的微信公众服务号。该公众号属于开发者,申请步骤由开发者完成(后文附申请地址)。申请成功后会得到对应的AppID和AppSecret。如下图所示:

所申请的微信公众号须为服务号,并开启“设备功能”,如下图:

开通“设备功能”时,接入方案请选择“平台基础接入方案”(参见微信硬件平台-接入方案介绍)。

微信公众号申请地址:https://mp.weixin.qq.com/。开发、测试阶段,开发者也可申请微信公众平台接口测试帐号:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login。测试号需要开发者手工开启设备功能。

准备服务器

AbleCloud不提供主机托管服务,因此需要开发者准备运行微信公众号后台的服务器,并为其配置域名解析。微信公众号正式上线时需要设置域名(JS接口安全域名及用户网页授权等配置项要求使用域名),并且使用服务器的80端口提供服务。

此外,还需按照微信公众号的要求配置好JS接口安全域名,网页授权获取用户基本信息的授权回调页域名等配置项。如下两图是JS接口安全域名的配置入口及界面。

如下两图是网页授权获取用户基本信息的授权回调页域名的配置入口及界面。

关于准备使用微信公众号的详细说明请参考微信公众平台开发者文档-接入指南

设备授权及二维码

设备授权

在销售或使用设备之前需要在微信硬件平台完成设备授权(请参考微信硬件平台-设备授权),也需要在AbleCloud平台完成设备入库。下图是微信硬件平台设备授权接口的使用说明。

上述参数中,需要注意的几项包括:

  • id

    设备的物理ID。 + auth_key, crypt_method, auth_ver

    用于指定设备与微信客户端或微信平台通信时采用的认证及数据加密方法。 对于通过AbleCloud平台与微信对接的设备(蓝牙设备除外),其身份认证与数据通信过程均由AbleCloud平台负责实施,采用AbleCloud平台的通信保密协议(已经集成在AbleCloud平台的WiFi固件中)。 因此,如无特殊需求,上述三个参数可分别取值为"","0"及"0",表示不加密。

其它参数请根据实际情况配置。

在AbleCloud平台执行设备入库(目前仅要求WiFi设备)的目的是注册设备的公钥,用于设备接入的安全认证。开发者可以登录AbleCloud的管理控制平台执行设备入库操作。

设备的二维码

为了方便用户绑定、使用WiFi设备,厂商需要使用“微信硬件平台-获取设备二维码”提供的接口生成设备的二维码。调用该接口时可以主动提供长度为16个字符的设备的物理ID。

微信AirKiss2.0及后续版本支持自动发现设备,允许设备使用统一的产品型号码而不需要为每个设备配置独立的二维码。所以支持AirKiss2.0及后续版本协议的设备可以省略该步骤。

配置微信公众号菜单

创建微信公众号菜单可参考微信公众平台开发者文档-自定义菜单创建接口

开发微信公众号功能

AbleCloud提供了Java及PHP版本的SDK辅助开发者开发微信公众号功能。以PHP SDK为例,类ACBridgeWeChat封装了AbleCloud与微信同步用户、用户与设备的绑定关系、设备工作状态的方法;类ACClient及其关联类则封装了AbleCloud云端服务的API。

本文档中的代码示例均以PHP语言为例。PHP SDK的API详细说明请参见SDK下载包中附带的文档。Java版本SDK的使用方法与之类似。

开发微信公众号功能时,开发者应按照其在AbleCloud平台注册的开发者帐号信息,修改PHP SDK提供的配置文件ACConfig.php中的配置项。这些配置项包括:

/**
 * AbleCloud服务配置信息。
 */
class ACConfig {
    public static $RuntimeMode = 'test';    // 运行模式:test(测试模式);production(生产模式)。
    public static $DeveloperId = 0;         // AbleCloud开发者帐号ID。整数。
    public static $AccessKey   = '';        // 开发者的AK/SK密钥对中的AK。字符串。
    public static $SecretKey   = '';        // 开发者的AK/SK密钥对中的SK。字符串。
    public static $MajorDomain = '';        // 开发者的主域的名字。
    public static $RouterUrl   = 'http://test.ablecloud.cn:5000';   // AbleCloud远程服务的访问入口地址,如:http://test.ablecloud.cn:5000。
    public static $RequestTimeout = 300;    // 访问云端API的超时时长(单位为秒)。取值小于或等于0时忽略该值。
}