公众号二维码带参数_微擎扫描二维码关注公众号怎么获取二维码带的参数 - CSDN
精华内容
参与话题
  • 最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我...

    最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助。

      我本次开发使用的是认证服务号。

    1 接入

      首先进入微信公众号 -> 基本配置 

      下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module(Decoration)的Action目录下新建一个类,比如叫:  WechatAction.class.php  ,在该Action中新建一个public方法,比如叫:  URLRedirect()  ,那么在这个URL中填写的就是  http://[IP]:[port]/index.php/Decoration/Wechat/UrlRedirect  ,然后填写Token,Token随意填,EncodingAESKey要不要都行,然后点击确认,微信会往这个URL上发送一个get请求,里面包含很多参数,其中大部分都是让我们自己核对这次访问是不是微信服务器请求的,我自己没有验证,他的要求是如果我们核对成功,即原样返回get请求中的一个参数echostr,这里的返回不是return,也不是ajaxReturn,而使用echo,如果用thinkPHP开发的话,直接使用  echo I('echostr');  即可。然后接口即验证成功了。

     

    2 带参数二维码的作用

      微信的带参数二维码有两种,一种是临时二维码,一种是永久二维码,但是永久二维码的生成是有个数限制的,我这次要实现的功能是用户未登录的情况下在网站上使用产品,比如获得某商品的详细报价,但是又不想注册,然而又想保存这个报价单,这个时候网页可以生成一张二维码,用户只要用微信扫一扫这个二维码,官方公众号就会给这个用户发送一天图文消息,图文消息点开后就是用户刚刚获得的报价单,而且可以随时点击查看并且分享给朋友进行比价。所以临时二维码即可正常使用。

      上面是我是怎么使用的,下面介绍一下整个交互的流程:

      当用户扫描这个二维码,如果用户关注了公众号,用户会直接进入与公众号的会话页面,微信服务器会给我们在上一步设置的服务器URL中推送一条消息,其中可以携带一个我们自定义的参数。如果用户未关注公众号,则用户首先会跳转到公众号关注页面,用户点击关注后,会直接进入公众号的会话页面,微信服务器这时也会给我们设置的URL推送一个事件消息,携带我们自定义参数,我们可以根据这个参数和事件类型做控制下一步动作。

     

    3 具体开发过程

    3.1 获取access_token

      这个access_token是我们程序调用微信接口的凭证,目前的有效期是7200秒,所以我们需要定时更新access_token。

      获得方法:

    方法 : GET
    url :https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

    其中的参数APPID和APPSECRET是我们公众号的APPID和APPSECRET,在微信公众号 -> 基本配置中可以查到,调用成功会返回如下JSON数据:

    {"access_token":"ACCESS_TOKEN","expires_in":7200}

    其中access_token就是调用接口凭证,expire_in是token有效时间。

      我本人是把access_token存在数据库中,同时保存过期时间,然后封装公用函数  getWechatAccessToken()  ,每次先检查access_token是否过期,如果过期则重新获取,否则直接使用数据库保存的access_token即可,我忘了在哪儿看加过,这个access_token每天的获取次数应该是有限制的。下面是  getWechatAccessToken()   的具体实现:

    //获取access_token
    function getWechatAccessToken(){
        $wechatInfo = M('wechat_info')->select();
        $wechatInfo = array_reduce($wechatInfo, create_function('$result, $v', '$result[$v["conf_name"]] = $v;return $result;'));
        $expireTime = $wechatInfo['PUBLIC_WECHAT_ACCESSTOKEN_EXPIRES']['conf_value'];                             //前面不用管,是我数据库相应设置
    
        if (time() < $expireTime){              //access_token未过期
            return $wechatInfo['PUBLIC_WECHAT_ACCESSTOKEN']['conf_value'];
        }else{                                  //access_token过期,重新获取
            $baseUrl = C('WECHAT_PUBLIC_GET_ACCESS_TOKEN');
            $url = str_replace("##APPSECRET##", $wechatInfo['PUBLIC_WECHAT_APPSECRET']['conf_value'], str_replace("##APPID##", $wechatInfo['PUBLIC_WECHAT_APPID']['conf_value'], $baseUrl));
            $result = file_get_contents($url);
            $result = json_decode($result, true);
    
            if (array_key_exists('errorcode', $result)){        //失败重试一次
                return false;
            }else{
                M('wechat_info')->where(array('conf_name' => 'PUBLIC_WECHAT_ACCESSTOKEN'))->save(array('conf_value' => $result['access_token']));
                M('wechat_info')->where(array('conf_name' => 'PUBLIC_WECHAT_ACCESSTOKEN_EXPIRES'))->save(array('conf_value' => time()+$result['expires_in']-200));
                return $result['access_token'];
            }
        }
    }
    C('WECHAT_PUBLIC_GET_ACCESS_TOKEN') = https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

    封装好这个之后,我们每次就可以安心的使用了。

    3.2 创建临时二维码

    3.2.1 获取ticket

    请求方式: POST
           接口:https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
            POST数据: {"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

    接口URL中的TOKEN即我们在3.1中获取的access_token,post数据中expire_seconds是二维码的有效时间,最多为30天,action_name临时二维码的话固定就是QR_SCENE,scene_id即我们自定义参数,是个32位非0整数,我在应用中把它设为订单的ID,微信服务器推送事件的时候会把这个值返回给我们设置的接口中,然后我会根据这个值去拿相应的订单数据展示在网页上,这是后话。

      下面是封装的生成临时二维码的方法:

    //创建临时二维码
    function getTemporaryQrcode($orderId){
        $accessToken = getWechatAccessToken();
        $url = str_replace("##TOKEN##", $accessToken, C('WECHAT_PUBLIC_GET_TEMPORARY_TICKET'));
        $qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": '.$orderId.'}}}';
        $result = api_notice_increment($url, $qrcode);
        $result = json_decode($result, true);
        return urldecode($result['url']);
    }

    其中的方法  api_notice_increment()  是我封装的一个POST方法函数,我试过很多POST的方法,可能由于微信接口对POST方法和参数的限制比较严格,这个浪费了好久时间,最后在网上找到了一个可以使用的封装好的POST方法,建议大家先自己试试,如果微信返回错误吗,就用这个吧,起码我测试微信这个接口的时候用postman测试返回的都是错误,而且一定要用JSON字符串,一定要是非常严格的JSON字符串。下面是这个方法:

    其中ticket是让我们用来进行下一步调用的凭证,expire_seconds是二维码的有效期,url是我们生成的二维码扫描后打开的链接。所以如果我们自己实现了生成二维码的方法,就不用再进行下一步调用,我本人即在这一步就停止了,直接返回url的值,然后利用这个url的值生成二维码存在本地即可。PHP生成二维码可以使用phpqrcode,挺好用的。下一步也大致提一下:

    3.2.2 获取二维码地址

    请求方式: GET
       接口:https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET

    这个接口的返回值是一张图片,可以直接展示或者下载,我们有具体使用过,所以也不知道应该怎么展示。

     

    3.3 用户扫描二维码之后发生的事情

    3.3.1 扫描后发生了什么

      上面提到了,用户扫描我们生成的临时二维码,如果用户未关注公众号,则首先会跳转到公众号的关注页面,点击关注后,会进入公众号的会话页面,同时会给我们设置的接口推送一个事件。如果用户已经关注了,用户微信会直接跳转到公众号会话页面,然后微信服务器会给我们设置的接口推送一个事件。

      用户关注与否微信服务器给我们推送的事件是差不多的,只是新关注用户推送的事件中scene_id前面会加一个前缀。下面是微信公众平台文档的说明:

     用户未关注时,进行关注后的事件推送
    <xml><ToUserName><![CDATA[toUser]]></ToUserName>        //开发者微信号
    <FromUserName><![CDATA[FromUser]]></FromUserName>       //发送者账号(openid)
    <CreateTime>123456789</CreateTime>                //消息创建时间(整型)
    <MsgType><![CDATA[event]]></MsgType>              //消息类型 event
    <Event><![CDATA[subscribe]]></Event>              //事件类型(subscribe)
    <EventKey><![CDATA[qrscene_123123]]></EventKey>        //事件KEY值,qrscene_为前缀,后面为二维码参数值
    <Ticket><![CDATA[TICKET]]></Ticket>               //二维码ticke值,可以用来换取二维码图片
    </xml>

    用户已关注时的事件推送

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>        //开发者微信号
    <FromUserName><![CDATA[FromUser]]></FromUserName>     //发送者账号(openid)
    <CreateTime>123456789</CreateTime>             //消息创建时间
    <MsgType><![CDATA[event]]></MsgType>                    //消息类型event
    <Event><![CDATA[SCAN]]></Event>               //事件类型 event
    <EventKey><![CDATA[SCENE_VALUE]]></EventKey>            //事件key值,是一个32位无符号整数,即创建二维码时的二维码scene_id
    <Ticket><![CDATA[TICKET]]></Ticket>                     //二维码的ticke,可以用来换取二维码图片
    </xml>

    完!!!

    文章转自:https://www.cnblogs.com/xiaocainiao2hao/p/5731800.html

    展开全文
  • 微信公众号生成带参数二维码

    千次阅读 2018-03-27 09:14:25
    最近写了关于微信公众号生成带参数二维码的一个工具类,直接上代码:import java.io.IOException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; ...

    最近写了关于微信公众号生成带参数的二维码的一个工具类,直接上代码:

    import java.io.IOException;
    import java.net.URLEncoder;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.TreeMap;
    
    import net.sf.json.JSONObject;
    
    import org.apache.http.ParseException;
    import org.apache.log4j.Logger;
    
    import com.qicha.model.weixin.AccessToken;
    /**
     * 
     * @author pc  dell
     * 创建微信公众号二维码工具类
     *
     */
    public class QrCodeUtil {
    	private static Logger logger = Logger.getLogger(QrCodeUtil.class);
    	
    	//创建二维码
    	private static final String CREATE_QRCODE_URL = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN";
    	private static final String SHOWCODE_PATH = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET";
    	
    	/***
    	 * 创建永久二维码Ticket
    	 * @param sceneStr  场景值id
    	 * @param accessToken  微信全局票据
    	 * @return
    	 * @throws ParseException
    	 * @throws IOException
    	 */
    	public static  String createForeverStrTicket(String sceneStr,String accessToken) throws ParseException, IOException {
    		String ticket="";
    		TreeMap<String,String> params = new TreeMap<String,String>(); 
    		params.put("access_token", accessToken); 
    		String url = CREATE_QRCODE_URL.replace("TOKEN", accessToken); 
    		Map<String,String> intMap = new HashMap<String,String>(); 
    		intMap.put("scene_str",sceneStr); 
    		
    		Map<String,Map<String,String>> mapMap = new HashMap<String,Map<String,String>>(); 
    		mapMap.put("scene", intMap); 
    		
    		Map<String,Object> paramsMap = new HashMap<String,Object>(); 
    		paramsMap.put("action_name", "QR_LIMIT_STR_SCENE");
    		paramsMap.put("action_info", mapMap); 
    		String data =JSONObject.fromObject(paramsMap).toString(); 
    		logger.info("data:"+data);
    		JSONObject jsonObject = WeixinUtil.doPostStr(url, data); 
    		logger.info("jsonObject:"+jsonObject);
    		if(jsonObject!=null){ 
    			ticket = jsonObject.optString("ticket"); 
    		} 
    		return ticket;
    	}
    	
    	
    	/***
    	 * 根据ticket票据,生成二维码图片路径(获取时用get方式)
    	 * @param ticket
    	 * @return 图片路径
    	 * @throws ParseException
    	 * @throws IOException
    	 */
    	public static String showQrCode(String ticket) throws ParseException, IOException {
    		ticket = URLEncoder.encode(ticket, "UTF-8"); 
    		String url = SHOWCODE_PATH.replace("TICKET",ticket);
    		
    		return url; 
    	}
    	
    	
    	public static void main(String[] args) throws ParseException, IOException {
    		//获取全局票据
    		String accessToken = "";
    		String ticked = createForeverStrTicket("10",accessToken);
    		logger.info("永久二维码ticked:"+ticked);
    		String url = showQrCode(ticked);
    		logger.info("永久二维码图片路径:"+url);//直接浏览器访问,下载即可
    	}
    }
    

    上边

    WeixinUtil.doPostStr方法:
    /**
    	 * POST请求
    	 * @param url
    	 * @param outStr
    	 * @return
    	 * @throws ParseException
    	 * @throws IOException
    	 */
    	public static JSONObject doPostStr(String url,String outStr) throws ParseException, IOException{
    		HttpClient client = HttpClients.createDefault(); 
    		HttpPost httpost = new HttpPost(url);
    		JSONObject jsonObject = null;
    		httpost.setEntity(new StringEntity(outStr,"UTF-8"));
    		HttpResponse response = client.execute(httpost);
    		HttpEntity entity = response.getEntity();
    		if (entity != null) {
    			String result = EntityUtils.toString(response.getEntity(),"UTF-8");
    			jsonObject = JSONObject.fromObject(result);
    		}
    		return jsonObject;
    	}


    展开全文
  • 用户进入扫描二维码进入我们的公众号后,会携带二维码参数值,我们的微信公众号后台程序就找到这些的照片,然后通过点击图片用户认证过程来实现照片和用户绑定。为了改善体验,我们还使用AI识别用户进入退出试衣镜...

    最近公司需要做一个智能试衣镜,微信导流是一个核心功能。就是用户扫描试衣镜上的二维码进入我们的公众号。为了唯一标识照片,需要动态生成二维码,该试衣镜后续的每张照片都会和一个二维码绑定。用户进入扫描二维码进入我们的公众号后,会携带二维码的参数值,我们的微信公众号后台程序就找到这些的照片,然后通过点击图片用户认证过程来实现照片和用户绑定。为了改善体验,我们还使用AI识别用户进入退出试衣镜行为,一个用户为一个session。同时增加用户手势识别等功能,以方便用户更换衣服实时查看用户试衣效果。

     

    微信场景二维码

     

          为了满足用户渠道推广分析的需要,微信公众平台提供了动态生成带参数二维码的接口。用户扫描后,公众号后台程序可以接收到事件推送。

         场景二维码分别两类:

              二维码:

                  有过期时间,最大为1800秒,但能够生成较多数量

            永久二维码:

                 无过期时间,数量较少(目前参数只支持1--100000)。

           两种二维码分别适用于帐号绑定、用户来源统计等场景。考虑到照片数量繁多,我们使用临时二维码实现,永久绑定通过用户微信认证绑定实现。

           用户扫描带场景值二维码时,后台服务器可接收到如下两种事件:

                 如果用户还未关注公众号,扫码后则用户跳转到关注也面,关注后微信会将带场景值关注事件推送给开发者,此时开发者可主动推送刚刚的照片Url, 在URL请求用户授权,进而将用户信息和照片信息绑定,进而形成永久绑定。

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

           获取带参数的二维码的过程包括两步:首先创建二维码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。

     

    扫描场景二维码事件

     

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

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

    关注公众号事件推送

       当用户在商品主页中关注公众号,微信会推送该事件到商户填写的URL。推送的内容包括关注用户的基本信息、时间、关注场景及对应的码信息。

    推送XML示例

    <xml>
      <ToUserName><![CDATA[gh_fbe8a958756e]]></ToUserName>
      <FromUserName><![CDATA[otAzGjrS4AYCmeJM1GhEOcHXXTAo]]></FromUserName>
      <CreateTime>1433259128</CreateTime>
      <MsgType><![CDATA[event]]></MsgType>
      <Event><![CDATA[subscribe]]></Event>
      <EventKey><![CDATA[scene|keystandard|keystr|extinfo]></EventKey>
    </xml>

    推送参数说明

    参数 说明
    ToUserName 商户的公众号原始id。
    FromUserName 用户的openid。
    CreateTime 消息创建时间(整型)。
    MsgType 消息类型,event。
    Event 事件类型,subscribe为关注公众号事件。
    EventKey ”分割。①scene表示场景:scanbarcode为扫码场景,scanimage为扫封面(图像)场景。②keystandard表示商品编码标准:barcode为条码。③keystr表示商品编码内容。④extinfo表示调用“获取商品二维码接口”时传入的extinfo,为标识参数。

       

         在获取到该事件时可主动推送带图片缩略图的消息,点击进入我们的页面或者小程序进一步绑定用户获取用户信息     

    进入公众号事件推送

       当用户从商品主页进入公众号会话时,微信会推送该事件到商户填写的URL。推送的内容包括用户的基本信息、时间、关注场景及对应的条码信息。

    推送XML示例

    <xml>
      <ToUserName><![CDATA[gh_fbe8a958756e]]></ToUserName>
      <FromUserName><![CDATA[otAzGjrS4AYCmeJM1GhEOcHXXTAo]]></FromUserName>
      <CreateTime>1433259128</CreateTime>
      <MsgType><![CDATA[event]]></MsgType>
      <Event><![CDATA[user_scan_product_enter_session]]></Event>
      <KeyStandard><![CDATA[ena13]]></KeyStandard>
      <KeyStr><![CDATA[6954767461373]]></KeyStr>
      <ExtInfo><![CDATA[]]></ExtInfo>
    </xml>
    

    推送参数说明

    参数 说明
    ToUserName 商户的公众号原始id。
    FromUserName 用户的openid。
    CreateTime 消息创建时间(整型)。
    MsgType 消息类型,event。
    Event 事件类型,user_scan_product_enter_session为进入公众号事件。
    KeyStandard 商品编码标准。
    KeyStr 商品编码内容。
    ExtInfo 调用“获取商品二维码接口”时传入的extinfo,为标识参数。

        后续流程和上面一样

     

    微信公众号后台服务程序实现

     

           推荐使用webot这个开源框架

         新用户关注事件处理代码

           

            已关注用户扫描事件处理代码

                 

    /**************************************************
    * 本文来自CSDN博主"一点码客",喜欢请顶部点击关注
    * 转载请标明出处:http://blog.csdn.net/itchosen
    ***************************************************/

    如需实时查看更多更新文章,请关注公众号"一点码客",一起探索技术

    展开全文
  • public void publicQR(  HttpServletResponse response,HttpServletRequest request,@RequestBody String dataid) {  ResultMap map = new ResultMap();  try {  JSONObjec...

        public void publicQR(
                HttpServletResponse response,HttpServletRequest request,@RequestBody String dataid) {
            ResultMap map = new ResultMap();
            try {
                JSONObject jsondata = JSONObject.fromObject(dataid);
                String udid = jsondata.getString("参数");
                if(MyUtil.isEmpty(“”参数“”)) {
                    map.setState(ResultMap.ERROR);
                    map.setMsg("参数不能为空");
                    return map;
                }
                String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+secret;
                String resultStr = HttpHelper.httpGet(url,null);
                System.out.println("resultStr"+resultStr);
                JSONObject json = JSONObject.fromObject(resultStr);
                String token = json.getString("access_token");
                System.out.println("access_token"+token);
                String qrUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token="+token;
                Map<String,String> idMap = new HashMap<String,String>();
                    idMap.put("scene_str", "参数");
                Map<String,Object> scenMap = new HashMap<String,Object>();
                    scenMap.put("scene", idMap);
                Map<String,Object> param = new HashMap<String,Object>();
                String expire_seconds ="10000";
                String action_name = "QR_STR_SCENE";
                    param.put("expire_seconds", expire_seconds);
                    param.put("action_name", action_name);
                    param.put("action_info", scenMap);
                String data = new Gson().toJson(param);
                String qrResult = HttpHelper.httpPost(qrUrl, data, null);
                System.out.println("qrResult"+qrResult);
                JSONObject qrJson = JSONObject.fromObject(qrResult);
                String qrCode = qrJson.getString("url");
                String ticket = qrJson.getString("ticket");
                System.out.println("ticket"+ticket);
                String qrsUrl = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket="+ticket; 

               response.getWriter().print(qrsUrl );
            } catch (Exception e) {

            }

        }

    展开全文
  • 生成带参数二维码详见微信公众平台之生成带参数二维码具体步骤:可在微信测试平台https://mp.weixin.qq.com/debug进行生成生成结果如下:拿到ticket 请求 ...如下图所示或者百度搜索二维码生成器,通...
  • 微信生成带参数二维码以及获取参数 废话不多说,先看一波文档: 生成带参数二维码 为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个不同...
  • 公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。 目前有2种类型的二维码: 1、临时二维码,是有过期时间的,最长可以设置为在...
  • 为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。 目前有2种类型的二维码: 1...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • TP5公众号带参数二维码生成 php代码示例(已测试): //二维码type public function qrcode($id,$type='1'){ if($type == 1){ $para='uid,'.$id; }else{ $para='container,'.$i...
  • 获取公众号二维码的ticket 我是用的永久的二维码获取方式 这里的scene_id不能重复,生成的二维码才不一样 public String getGZHCodeByPubKey(String sceneId) throws IOException { HttpUtil httpUtil = new ...
  • // 获取公众号带参数二维码  public function getqrcodeticket($value='')  {  // @header('Content-type: text/plain;charset=UTF-8');  // header("Access-Control-Allow-Origin: *");  // requ...
  • 最近做公众号开发,不同小程序绑定一个公众号完成企业打款,需要识别不同场景,也就是识别二维码来自哪个渠道,需要在用户扫描二维码时识别携带的参数 上网查到了解决办法 如下(永久二维码) 获取二维码的ticket ...
  • 结合了express+request+config+wechat等模块,实现了获取微信二维码url地址和ticket,事件推送服务
  • 获取微信公众号二维码接口

    万次阅读 2019-05-14 17:20:49
    地址 https://open.weixin.qq.com/qr/code?username=gh_b10f0123b741 参数公众号微信号或原始id
  • 1.创建带参数二维码:①微信接口http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/tags/create?access_token=ACCESS_TOKENPOST数据示例:{ "tag" : { "name" : &...
  • 公众号带参数二维码,自动统计关注粉丝渠道来源、自动打标签分组,通过公众号开发平台接口实现。不会开发的人员,可以使用微号帮平台的功能实现这效果,渠道二维码生成统计。 1、带参数二维码 公众号后台只有普通...
  • 微信公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。 二维码分类:1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的...
  • 通过自定义二维码参数,服务器可以接收到唯一的事件代码,服务器就可以根据这个事件来进行你想要的操作。 通过公众号的渠道二维码可以实现渠道统计的功能,典型场景如下: 粉丝来源统计 一般我们的公众号都会散发很...
  • 微信公众号二维码 链接

    千次阅读 2015-06-25 17:20:08
    http://open.weixin.qq.com/qr/code/?username=meitianxinlixue 参数【username】就是微信号。 ... 参数【__biz】就是微信号ID。 该公众号
1 2 3 4 5 ... 20
收藏数 25,264
精华内容 10,105
关键字:

公众号二维码带参数