通过微信接口获取带参数的二维码

来源:互联网 发布:好的自考软件 编辑:程序博客网 时间:2024/05/22 02:14

使用场景:客户通过微信扫描二维码,跳转到公众号中的相应业务页面,并且在二维码中需要携带相关参数。

实现过程:

第一步:通过搜索资料确定使用微信提供的带参数的二维码这个接口来获取二维码,对应的文档链接。

第二步:选择生成临时的二维码,实现代码如下:

    public static WeixinQRCode createTempTicker(String accessToken,String sceneStr){
    String requestUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN";
    requestUrl = requestUrl.replace("TOKEN", accessToken);
    String jsonMsg="{\"expire_seconds\": \""+604800+"\", \"action_name\": \"QR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": \""+sceneStr+"\"}}}";
    JSONObject json = CommonUtil.httpsRequest(requestUrl, "POST", String.format(jsonMsg));
    WeixinQRCode w = null;
    if(json!=null){  
             try{  
                 w=new WeixinQRCode();  
               
   w.setExpire_seconds(json.getInt("expire_seconds"));  
                 
     w.setTicket(json.getString("ticket"));  
               
                             w.setUrl(json.getString("url"));  
             }catch(Exception e){  
                 //e.printStackTrace();  
                 int errorCode=json.getInt("errorcode");  
                 String errorMsg=json.getString("errmsg");  
                 System.out.println(errorCode+":"+errorMsg);  
             }  
               
         }  
         return w;  
    }
         

在这里sceneStr,可以用来传递参数,并且这个参数是可以传递到微信公众号中的。

这里如果提交成功会返回,ticket,url

这里的url可以直接使用第三方软件生成二维码。

第三步:

如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。

            如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。

     上面两句是开发者文档中,根据这个,我们可以发现,如果客户在扫描二维码之前并没有关注过本公众号,则我们可以在coreService中获取的事件类型是event类型,我们可以在这里获取我们传递的sceneStr参数。如果用户在扫描二维码之前已经关注过了,则在coreSService中获得时间类型就是scan。

另外:根据本人的需求需要利用OAuth2.0授权接口,这里本来想直接在url中直接通过&传递多个参数,但经过测试发现,只能在returnURL后传递一个参数,其他的都会被微信屏蔽掉,后查看文档发现还可以使用state来传递一个参数,然并卵,还是不能满足需求。想了想,是不是可以让state=一个集合呢,发现json可以用来拼接。在这里需要注意两个问题,这个json数据中所有"之前都要加“\””,加完“\”后还必须进行两次urlencoding编码,不然json数据中汉字会乱码。

作为一个刚刚入门的小白,还希望若有大神路过,留下宝贵的修改意见。







原创粉丝点击