获取硬件唯一类型的二维码以及设备deviceId

2018年06月02日 12:34 | 2834次浏览 作者原创 版权保护

在上一章节介绍了添加设备,并且添加的时候选择产品添加方式为每个产品唯一的二维码,也就是每台设备都有独立不同的唯一二维码,即一机一码,本章节我们就接着根据每个设备一个二维码来举例,具体型号二维码和唯一二维码的区别,会在稍后章节介绍。

根据官方文档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_tokenproduct_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而已,即使绑定设备后,也是无法和设备的进行蓝牙连接的,因为我们还未给设备授权。

读者朋友们,别急着扫描绑定哈,还有一个重要的步骤咱们还没做完,就是设备授权下一节将会讲解设备授权,敬请期待!

再次提醒读者上图中生成二维码的连接有"\"符号,为了举例,我在这里没有去掉,读者生成二维码的时候一定要去掉,否则即使授权成功,扫描二维码绑定还是无法连接上设备。



小说《我是全球混乱的源头》
此文章本站原创,地址 https://www.vxzsk.com/1790.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程