精华内容
下载资源
问答
  • 微信生成带参数二维码以及获取参数 废话不多说,先看一波文档: 生成带参数二维码 为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同...

    微信生成带参数二维码以及获取参数

    废话不多说,先看一波文档:

    生成带参数的二维码

    为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。

    目前有2种类型的二维码:

    1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
    2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。

    用户扫描带场景值二维码时,可能推送以下两种事件:

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

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

    获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。

    创建二维码ticket

    每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket过程。

    临时二维码请求说明

    http请求方式: POST
    URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
    POST数据格式:json
    POST数据例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}
    
    或者也可以使用以下POST数据创建字符串形式的二维码参数:
    {"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}
    

    永久二维码请求说明

    http请求方式: POST
    URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
    POST数据格式:json
    POST数据例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}
    
    或者也可以使用以下POST数据创建字符串形式的二维码参数:
    {"action_name": "QR_LIMIT_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}
    

    参数说明

    参数说明
    expire_seconds该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。
    action_name二维码类型,QR_SCENE为临时的整型参数值,QR_STR_SCENE为临时的字符串参数值,QR_LIMIT_SCENE为永久的整型参数值,QR_LIMIT_STR_SCENE为永久的字符串参数值
    action_info二维码详细信息
    scene_id场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1–100000)
    scene_str场景值ID(字符串形式的ID),字符串类型,长度限制为1到64

    返回说明

    正确的Json返回结果:

    {"ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm
    3sUw==","expire_seconds":60,"url":"http://weixin.qq.com/q/kZgfwMTm72WWPkovabbI"}
    
    参数说明
    ticket获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。
    expire_seconds该二维码有效时间,以秒为单位。 最大不超过2592000(即30天)。
    url二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片

    通过ticket换取二维码

    获取二维码ticket后,开发者可用ticket换取二维码图片。请注意,本接口无须登录态即可调用。

    请求说明

    HTTP GET请求(请使用https协议)https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
    提醒:TICKET记得进行UrlEncode
    

    返回说明

    ticket正确情况下,http 返回码是200,是一张图片,可以直接展示或者下载。

    HTTP头(示例)如下:
    Accept-Ranges:bytes
    Cache-control:max-age=604800
    Connection:keep-alive
    Content-Length:28026
    Content-Type:image/jpg
    Date:Wed, 16 Oct 2013 06:37:10 GMT
    Expires:Wed, 23 Oct 2013 14:37:10 +0800
    Server:nginx/1.4.1
    

    错误情况下(如ticket非法)返回HTTP错误码404。

    这里我生成的是临时的二维码,并且是字符串类型的。

    //用于获取带参数的二维码
    private static  String url1 = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=";
    //换取二维码url
    private static  final  String url2 = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=";
    
    static Logger logger = LoggerFactory.getLogger(TicketServic.class);
    
    /**
         * http请求方式: POST
         * URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
         * POST数据格式:json
         * 此方法用于获取带参数的二维码 ticket
         * str : str 请按照指定格式拼接字符串 -------------------------- 待确定
         * @return
         */
        public static String getTicketData(String str){
            String token = AccessTokenService.getToken();
            if(StringUtils.isEmpty(str) || token==null){ return null; }
            if(str.length()<64 && str.length()>0){
                //临时字符二维码url
                String  url =  url1 + token;
                //二维码参数,以及过期时间
                String data = "{\"expire_seconds\": 600000000, \"action_name\": \"QR_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\":"+ str +"}}}";
                String result = HttpUtil.sendHttpByPost(url, data);
                logger.info(" 带参数的二维码 : " + result);
                if (!StringUtils.isEmpty(result)){
                    JSONObject jsonObject = JSONObject.parseObject(result);
                    String string = jsonObject.getString("ticket");
                    logger.info("ticket = " + string);
                    return  string;
                }
            }else{
                try {
                    throw new Exception("scene_str:字符串类型,长度限制为1到64");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
    

    然后根据用获取到的 ticket 取换取二维码,也可以通过 返回的json里面的url第三方生成二维码工具生成二维码

    /**
     * 此方法通过 ticket换取二维码 , 返回一个二维码 url
     * 获取二维码ticket后,开发者可用ticket换取二维码图片。请注意,本接口无须登录态即可调用。
     * 请求说明
     * HTTP GET请求(请使用https协议)https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
     * @param data
     * @return
     */
    public static String getTicket(String data) {
        String url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket="+data;
        String result = HttpUtil.sendHttpByGet(url);
        return result;
    }
    

    测试

    <!DOCTYPE html>
    <html lang="en" xmlns="http://www.w3.org/1999/html">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    
    <script>
    
        var url_ticket = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=";
        var t ="gQF68DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyTFNNR1FRQS1lY2wxZktEU05zYzQAAgTuWg9cAwQAjScA";//获取到的ticket 
      window.location.href = url_ticket + t;
    </script>
    
    </body>
    </html>
    

    在这里插入图片描述

    获取参数

    工具类

    public class HttpUtil {
        /**
         * @param url
         * @param data 生成字符二维码的数据包
         * @return
         *
         */
        public static String sendHttpByPost(String url ,String data ){
    
            try {
                URL urlPost = new URL(url);
                URLConnection urlConnection = urlPost.openConnection();
                //要发送数据出去,必须设置为可发送状态
                urlConnection.setDoOutput(true);
                //获取输出流
                OutputStream outputStream = urlConnection.getOutputStream();
                //写出数据
                outputStream.write(data.getBytes());
                outputStream.flush();
                outputStream.close();
    
                //获取输入流
                InputStream is = urlConnection.getInputStream();
    
                int size ;
                byte[] jsonBytes = new byte[1024];
                StringBuilder stringBuilder = new StringBuilder();
                while ((size=is.read(jsonBytes))!=-1){
                    stringBuilder.append(new String(jsonBytes,0,size));
                }
                is.close();
                return stringBuilder.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
    
        /**
         * @param url
         * @param data 换取二维码的数据包
         * @return
         *
         */
        public static String sendHttpByGet(String url){
    
            try {
                URL urlGet = new URL(url);
                URLConnection urlConnection = urlGet.openConnection();
                InputStream is = urlConnection.getInputStream();
                int size ;
                byte[] jsonBytes = new byte[1024];
                StringBuilder stringBuilder = new StringBuilder();
                while ((size=is.read(jsonBytes))!=-1){
                    stringBuilder.append(new String(jsonBytes,0,size));
                }
                is.close();
                return stringBuilder.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    

    扫描带参数二维码事件

    用户扫描带场景值二维码时,可能推送以下两种事件:

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

    1. 用户未关注时,进行关注后的事件推送

    推送XML数据包示例:

    <xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[FromUser] ]></FromUserName><CreateTime>123456789</CreateTime><MsgType>< ![CDATA[event] ]></MsgType><Event>< ![CDATA[subscribe] ]></Event><EventKey>< ![CDATA[qrscene_123123] ]></EventKey><Ticket>< ![CDATA[TICKET] ]></Ticket></xml>
    

    参数说明:

    参数描述
    ToUserName开发者微信号
    FromUserName发送方帐号(一个OpenID)
    CreateTime消息创建时间 (整型)
    MsgType消息类型,event
    Event事件类型,subscribe
    EventKey事件KEY值,qrscene_为前缀,后面为二维码的参数值
    Ticket二维码的ticket,可用来换取二维码图片

    2. 用户已关注时的事件推送

    推送XML数据包示例:

    <xml> <ToUserName>< ![CDATA[toUser] ]></ToUserName> <FromUserName>< ![CDATA[FromUser] ]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType>< ![CDATA[event] ]></MsgType> <Event>< ![CDATA[SCAN] ]></Event> <EventKey>< ![CDATA[SCENE_VALUE] ]></EventKey> <Ticket>< ![CDATA[TICKET] ]></Ticket> </xml>
    

    参数说明:

    参数描述
    ToUserName开发者微信号
    FromUserName发送方帐号(一个OpenID)
    CreateTime消息创建时间 (整型)
    MsgType消息类型,event
    Event事件类型,SCAN
    EventKey事件KEY值,是一个32位无符号整数,即创建二维码时的二维码scene_id
    Ticket二维码的ticket,可用来换取二维码图片

    获取到数据

    扫描后台获取,控制台打印出

    //处理消息与事件推送
    Map<String, String> xmlData = RequestParamType.getXmlData(request.getInputStream());//此处解析了xmL
      logger.info(xmlData.toString());//接受到的消息
    

    map

    { Ticket=gQF68DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyTFNNR1FRQS1lY2wxZktEU05zYzQAAgTuWg9cAwQAjScA, CreateTime=1544539262, EventKey=123rt../jku0-7fg10.2544578, Event=SCAN, ToUserName=gh_275f186b7737, FromUserName=oZP6M1W239na_FwhBbVYk9Kwbkoc, MsgType=event
    
    }
    

    原xml

    <xml>
      <ToUserName>oZP6M1W239na_FwhBbVYk9Kwbkoc</ToUserName>
      <FromUserName>gh_275f186b7737</FromUserName>
      <CreateTime>1544539129</CreateTime>
      <MsgType>event</MsgType>
      <Event>SCAN</Event>
      <EventKey>123rt../jku0-7fg10.2544578</EventKey>
      <Ticket>gQF68DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyTFNNR1FRQS1lY2wxZktEU05zYzQAAgTuWg9cAwQAjScA</Ticket>
    </xml>
    

    其中的EventKey便是我们生成二维码时候设置的字符串了。

    github代码地址

    Java技术交流群 Q 731690200 可以一起交流学习

    展开全文
  • 小程序编译携带参数二维码,获取二维码参数进行缓存,不影响原来逻辑 最近要弄个需求,就是在原来小程序的基础上,加个携带参数的二维码,如果有二维码携带有参数,就走携带参数的逻辑,如果没有携带参数,就走原来...

    小程序编译携带参数二维码,获取二维码参数进行缓存,不影响原来逻辑

    最近要弄个需求,就是在原来小程序的基础上,加个携带参数的二维码,如果有二维码携带有参数,就走携带参数的逻辑,如果没有携带参数,就走原来的逻辑
    微信开发工具进行开发,先自定义编译规则
    在这里插入图片描述
    在这里插入图片描述
    1、在index首页onLoad的时候,判断是否携带有参数,如果有参数则用wx.setStorageSync进行缓存
    2、由于要保证原来的逻辑,微信小程序这边没有提供退出小程序触发的事件,只有onHide即切换到后台,隐藏小程序的事件,所以在app.js里面的onHide事件要进行清除缓存处理
    在这里插入图片描述
    3、如果有支付页面,拉起支付的时候,也会触发onHide的事件,这样拉起支付页面就会引起参数酒店编码参数丢失,解决办法是在拉起支付前,把当前的缓存保存在data里面,如果支付完进行跳转的时候携带data里面的参数,并在跳转后的页面重新设置参数缓存,如果取消付款,则需要在当前页面onShow的时候重新进行参数缓存
    4、ios和安卓机子,如果在当前页面用户拉起付款,不进行付款操作,安卓机子会重新刷新页面,ios不会,安卓机子重新刷新页面会把酒店携带的二维码丢失,因为拉起付款的时候其实是隐藏了小程序,隐藏小程序的时候已经把二维码携带的酒店编码给清除掉了,导致获取不到正确的酒店编码,所以,订单列表tab页面需要从订单子组件获取当前的data参数再重新进行缓存

    展开全文
  • 自己总结的二维码识读参数指标, 附22种二维码介绍.Specifications For Popular 2D Bar Codes
  • 懂开发的朋友直接通过公众号提供的开发文档实现功能,也可以直接使用微号帮平台渠道二维码生成功能,实现公众号二维码参数。 1、渠道二维码生成 微号帮平台生成带参二维码,自动批量打标签分组,精准统计粉丝来源。 ...

    公众号生成带参二维码,只有服务号才的权限,订阅号没有。懂开发的朋友直接通过公众号提供的开发文档实现功能,也可以直接使用微号帮平台渠道二维码生成功能,实现公众号二维码参数。

    1、渠道二维码生成

    微号帮平台生成带参二维码,自动批量打标签分组,精准统计粉丝来源。
    在这里插入图片描述
    2、创建渠道二维码

    渠道名称:星期四统计,扫码关注公众号粉丝会自动设置备注名。
    在这里插入图片描述
    3、二维码粉丝统计

    通过微号帮平台生成带参二维码关注的粉丝都可以统计到,为粉丝打标签分组或设置备注名都可以。
    在这里插入图片描述
    4、关注粉丝打标签分组或设置备注名

    通过二维码关注的粉丝打标签分组或设置备注名都与公众号用户管理同步。
    在这里插入图片描述
    5、二维码自定义消息推送

    粉丝扫码关注公众号自定义弹出消息,可以设置文本信息、单图文、多图文、图片、语音、视频、卡券、小程序。
    在这里插入图片描述

    展开全文
  • 微信小程序获取二维码参数

    千次阅读 2019-04-04 09:39:32
    微信扫描带参数的二维码,进入小程序获取二维码参数,可以用onLoad 函数在页面加载的时候获取参数 /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { this.data.topic = options.topic; /...

    微信扫描带参数的二维码,进入小程序获取二维码参数,可以用onLoad 函数在页面加载的时候获取参数

      /**
       * 生命周期函数--监听页面加载
       */
      onLoad: function (options) {
        
        this.data.topic = options.topic;  //topic 为参数名称,这样就可以获取到二维码里的参数
          
    
      }

    展开全文
  • 记录一些小程序获取二维码参数 控制网站实现登录 免签约 不用一年交300元 开发流程 电脑打开网站 如142536.vip网站生成一个二维码 然后网页根据值为s=/mqtt/api/log/id/6666轮询获取用户信息 用户用微信扫描这个...
  • 二维码参数 在线上调试开始没找到方法 在模拟器上可以选择编译方式 选择二维码编译后 就方便调试了
  • 二维码参数问题解决

    千次阅读 2018-03-13 09:05:12
    Qrcode生成二维码,做过很多实验,探索...2.根据调整的参数生成原图,这种图是比较清晰的,打印出来都可以很好的被识别。先说说第二种吧:根据测试,1.不设置任何东西时:根据测试 最小的二维码尺寸是45——47:宽...
  • 二维码参数设置问题

    千次阅读 2018-03-14 09:31:35
    例如这个,因为url的长度问题,所以需要设置不同的值,如何才能设置正确的值,过大或者过小都会出现问题,例如生成空白码,生成的二维码扫不出来,二维码样式难看,可以先设置最后一个参数为0。0是自适应,在设置第...
  • phpqrcode生成二维码参数一览

    千次阅读 2018-04-08 08:53:02
    $text,——转换成二维码的文本,必填项 $outfile=false,——生成本地文件名。默认不保存到本地,直接输出 $level=QR_ECLEVEL_L,——质量。默认为最低质量,还有QR_ECLEVEL_M、QR_ECLEVEL_Q、QR_ECLEVEL_H参数值 $...
  • 通过在微信内扫描普通二维码打开微信小程序。需要获取普通二维码中的信息。1.onLoad: function (options) { //src = decodeURIComponent(options.q); // src.match(/ id=(S*)&share=1/)[1]; ///console.log(src);...
  • 最近有个需求,扫码获取在微信中识别二维码直接跳转到指定的打卡圈,下面来介绍下如何实现这个功能。 分享海报的绘制保存教程点击这里 这里是引用 ...
  • 微信小程序二维码参数的获取

    万次阅读 2019-08-13 11:20:06
    微信为了方便推广和一些业务逻辑的实现,定义了一套标准的转发二维码中携带参数的函数,而且业务场景分的很详细, 在开发工具中我们可以使用该按钮选择不同的场景以方便调试,我们以单人聊天会中中的小程序消息...
  • 和 微信自身的扫一扫 都进入产品详情,假如使用小程序码就很不方便,因为通过小程序的自带的扫描功能扫小程序码,出来的数据无法获取具体参数,此时必须通过扫描普通二维码来实现功能。 扫描普通二维码打开小程序...
  • 要扫的二维码,通过草料二维码生成的,这个网站挺好的,用起来比较简单方便,可以直接输入文字生成二维码,也可以放入链接生成二维码。 草料二维码:https://cli.im/ index.wxml &lt;view class="...
  • 微信小程序 扫描二维码不能直接获取到参数跳转到对应页面,返回的是一个链接,需要解析链接 //扫描二维码方法 getScan: function () { wx.scanCode({ success: (res) => { console.log(res); if (res....
  • // 获取公众号带参数二维码  public function getqrcodeticket($value='')  {  // @header('Content-type: text/plain;charset=UTF-8');  // header("Access-Control-Allow-Origin: *");  // requ...
  • QRcode二维码 参数介绍

    千次阅读 2015-09-01 15:49:41
    // 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小 qrcodeHandler.setQrcodeErrorCorrect('M'); qrcodeHandler.setQrcodeEncodeMode('B'); // ...
  • 小程序接收二维码参数的问题

    千次阅读 2019-07-10 17:31:59
    首先看一下官网:...意思是:在别人通过扫面你的小程序码,并且你的小程序码是带参数的,那么在线上的版本就要加一个此方法进行转码; decodeURIC...
  • 小程序二维码生成官方文档链接 https://mp.weixin.qq.com/debug/wxadoc/dev/api/qrcode.html 接口地址:https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN getQCoder: function() {...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,139
精华内容 28,855
关键字:

二维码参数