恒泰博远,专家级研发软件定制开发公司,为企业定制营销、办公、管理软件 在线咨询 :
咨询电话:010-82969001

设备功能设备功能接口--微信公共平台开发

来源:http://www.hengtaiboyuan.com 作者:恒泰博远 时间:2014-11-13

[摘要]设备功能设备功能接口,介绍设备功能的相关接口,以及设备功能的流程、权限申请、错误处理、特殊逻辑等内容,希望对大家有帮助。

设备功能设备功能接口,介绍设备功能的相关接口,以及设备功能的流程、权限申请、错误处理、特殊逻辑等内容,希望对大家有帮助。

                   

 

第一、流程

 

问题:第三方进行设备相关功能的开发和调试,需要哪些步骤进行?

方法:主要按照以下步骤进行:

1、需要先熟悉公众平台已有功能

2、详细阅读本文档的“第三方协议”相关章节

3、向公众平台后台提交“设备功能”的API使用权限申请,否则无法使用相关API(申请方法见“权限申请”章节)

4、向公众平台提交device id的授权,否则devcie id无法被用户绑定(申请方法见“权限申请”章节)

5、确保第三方服务url可用,第三方服务url的修改:登录公众平---功能---高级功能---开发模式---URL---修改

6、获取二维码,开发、调试

 

第二、权限申请

 

问题:如何申请“设备功能”API的使用权限?

方法:第三方提供该公众账号的appid给到公众平台产品或者后台负责人,appid的获取:登录公众平---功能---高级功能---开发模式---appid

 

问题:如何申请device id的使用权限?

方法:向公众平台提交device id的授权(需要提供设备类型(目前支持蓝牙、WIFI两种设备)、device id、原始id,原始id的获取:登录公众平台---设置---账号信息---原始ID)

 

问题:api调用的频率控制:

方法:目前,公众平台的api调用是有频率控制的,设备api的频率控制如下: api 功能 频率 transmsg 第三方主动发送消息给设备 20w/day get_openid 获取设备绑定openID 2k/day create_qrcode 获取设备二维码 2w/day authorize_device 设备授权 2w/day get_stat 设备状态查询 2k/day verify_qrcode 验证二维码 50w/day api频率控制 每个api调用超过频率限制后,需要等到第二天凌晨0点,才可以恢复服务

 

第三、错误处理

 

问题:调用设备功能相关的API,返回错误信息”user unauthorized”

方法:第三方没有使用API的权限,需要向公众平台后台提交“设备功能”的API使用权限(申请方法见“权限申请章节”)

 

问题:为什么设备发给微信的数据和第三方云端接收到的公众平台平台发送的请求数据不一样?

方法:公众平台目前对第三方的协议采用的是“文本协议”方式,因此,对于设备消息数据是经过base64加密后的数据,因此:

1、对于设备给第三方发数据,数据流是:设备数据---微信---公众平台base64加密数据---第三方云;因此,第三方收到的数据是对设备原始数据进行base64加密的数据,第三方需要base64解密,才能得到原始数据

2、对于第三方给设备发送响应,数据流是:第三方base64加密数据---公众平台---微信终端base64解密得到原始数据---设备;因此第三方云发送给设备的数据一定是经过base64加密的,而设备收到的数据则是base64解密后的原始数据

 

问题:为什么扫描设备二维码,提示设备不存在?

方法:确认device id是否已经申请授权(授权方式见“权限申请”章节)

 

问题:为什么调用“主动发消息给设备”的API提示“get device_id error”?

方法:请确认公众账号是否申请授权了该device id,并且详细确认调用API中的device_id,device_type,opend_id是否正确?device_type目前为公众账号的原始ID,open_id必须绑定了该device_id

 

问题:为什么调用“主动发消息给设备”的API提示成功,但是设备没有收到消息?

方法:确保发送的消息中content字段是经过base64加密的数据,确保openid对应的用户已经扫描且绑定了该device id,确保该公众号账号拥有且授权了该device id,

 

问题:为什么第三方收到的base64解码后的数据和设备发送的原始数据不一样?

方法:base64算法有很多变种:被编码字符长度不是3的倍数的时候,则都用0代替,对应的输出字符为=,当然,这个输出字符是可以定制为其他符号,公众平台平台采用的是原始默认的=作为补充字符,此外,很多framework在http的包体中将英文=字符识别为特殊字符,因此用到相关framework的第三方开发人员需要做好兼容处理

 

问题:发现文档中示例,最终返回失败

方法:目前连调发现api调用失败的主要原因有:

1、请求的url中带有空格,导致取ulr参数出错

2、post请求包的json串中有多余空格、有中文标点(引号,冒号等),json的字段顺序和文档描述不符

 

第四、特殊逻辑

 

问题:对于绑定、解绑定、设备通信三类请求,第三方是否可以不回给公众平台回包?

方法:这三类请求,都需要第三方回包,因为公众平台后台给第三方发包后,会超时等待第三方的回包,如果第三方不回包,会严重影响公众平台后台性能,一经发现,我们将会踢掉该公众账号。对于“绑定”和“解绑定”请求,第三方可以回一个空包,即:post响应只包含http包头,不包含数据,对于空数据,公众平台后台会直接屏蔽掉该消息,而不会下发给微信客户端,也到达不了设备。对于“设备通信”请求,是需要回复非空的符合消息协议的http的post响应

 

问题:我有两个公众账号,可否用一个公众账号来给另一个账号的device id绑定的用户发消息?

方法:不行!不少第三方用户混淆了两个账号,导致消息无法送达设备,用户绑定失败等错误,因此出现错误,请先确保<公众账号,device id,open id>之间的关联是完全正确的,然后再进行下一步排查

 

 

以上是北京恒泰博远小编为你分享的设备功能设备功能接口--微信公共平台开发,如有相关微信方面的开发像各行业的开发,敬请联系,希望我们可以帮助你。