在上一章节介绍了添加设备,并且添加的时候选择产品添加方式为每个产品唯一的二维码,也就是每台设备都有独立不同的唯一二维码,即一机一码,本章节我们就接着根据每个设备一个二维码来举例,具体型号二维码和唯一二维码的区别,会在稍后章节介绍。
根据官方文档http://iot.weixin.qq.com/wiki/new/index.html?page=3-4-6 的介绍,为了简化第三方厂商的生产流程,降低接入微信的门槛,公众平台提供了新的设备授权接口。新接口中,deviceid由微信生成,作为设备在微信平台的唯一标识,第三方不需要在固件中烧入deviceid。
获取deviceid和二维码
第三方获取deviceid和设备二维码。
接口调用请求说明
http请求方式: GET https://api.weixin.qq.com/device/getqrcode?access_token=ACCESS_TOKEN&product_id=PRODUCT_ID
参数说明:
字段 | 是否必须 | 描述 |
---|---|---|
product_id | 否 | 设备的产品编号(由微信硬件平台分配)。可在公众号设备功能管理页面查询。 当product_id 为‘1’时,不要填写product_id 字段(会引起不必要错误); 当product_id 不为‘1’时,必须填写 product_id 字段; |
返回结果
正确的Json返回结果:
{resp_msg:{"ret_code":0," error_info":"ok"},"deviceid":"XXX","qrticket":"XXX"}
错误的Json返回示例:
{resp_msg:{"ret_code":-1," error_info":"system error"}}
返回字段说明:
device_id | 设备id |
qrticket | 设备二维码生产串 |
devicelicence | 产品使用直连SDK时返回的设备证书 |
注意】 device_id由公众平台生成,是设备的唯一标识,且与二维码(qrticket字段)存在对应关系。
上面产品编号product_id 就是我们在上一篇介绍的添加产品后,产品列表中已分配的产品号
代码实现接口获取二维码和设备deviceId
package com.wepayweb.weixin.util.device; /*** * V型知识库 www.vxzsk.com */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class DeviceTest { public static String sendGet(String url, String charset, int timeout) { String result = ""; try { URL u = new URL(url); try { URLConnection conn = u.openConnection(); conn.connect(); conn.setConnectTimeout(timeout); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset)); String line=""; while ((line = in.readLine()) != null) { result = result + line; } in.close(); } catch (IOException e) { return result; } } catch (MalformedURLException e) { return result; } return result; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String access_token="";// String product_id=""; String data = DeviceTest.sendGet("https://api.weixin.qq.com/device/getqrcode?access_token="+access_token+"&product_id="+product_id, "utf-8", 30000); System.out.println("获取设备的deviceid和二维码:"+data); } }
上述代码直接复制,运行main方法即可,不过在运行之前,main方法中的两个参数要填写正确,access_token和product_id,access_token请参考 https://www.vxzsk.com/28.html在这里我不在累述,product_id 为产品编号。
正确的接口返回
{"base_resp":{"errcode":0,"errmsg":"ok"},"deviceid":"gh_17098c3460b9_004cb738ac631af0","qrticket":"http:\/\/we.qq.com\/d\/AQ2DBteOl389f6b19HSo_uPMm-7ubPTjFztb-iCSa"}
上述返回结果中的device_id和qrticket便是我们获取到的设备id和设备的唯一二维码,那么怎么把这个qrticket的字符串转换成图片二维码呢,我们把这个字段的值复制出来,然后百度二维码生成器,把连接复制到生成器里点击生成即可生成图片样式的二维码,操作如下:
上图的连接 微信坑爹,链接中的"\"一定要去掉,去掉,去掉啊,又被坑一次。
好了,到此我们已经获取到蓝牙设备的deviceid和二维码了,特别说明:我们这里生成的deviceid并不是硬件厂商给设备烧制的id而是微信公众平台自行给我们生成的设备id 和硬件厂商烧制的并不是同一个id。
提醒读者,生成设备的二维码图片不要急于打开微信和手机蓝牙,扫描绑定设备连接,因为我们只是生成了设备的二维码和id而已,即使绑定设备后,也是无法和设备的进行蓝牙连接的,因为我们还未给设备授权。
读者朋友们,别急着扫描绑定哈,还有一个重要的步骤咱们还没做完,就是设备授权,下一节将会讲解设备授权,敬请期待!
再次提醒读者,上图中生成二维码的连接有"\"符号,为了举例,我在这里没有去掉,读者生成二维码的时候一定要去掉,否则即使授权成功,扫描二维码绑定还是无法连接上设备。
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程