每位运营过微信公众平台的野生小编都知道,微信提供给开发者的文档是很高深的,最近为了弄个带参数的二维码,同样技术小白的小编也死了不少脑细胞了,然而我终于知道官方生成带参数的二维码的方法了。

1、注意事项我知道你们是没有心情看注意事项的,但是很重要,所以我先摆上来。用户扫描带参数的二维码,可能推送以下两种事件:

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

2)如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。是的,是把参数返回给开发者,也就是你自己,不是给用户推送特定信息或跳转到页面。(我也想要那种用户扫描关注后跳到指定页面的高级功能,也有一些微信号实现了,但是穷人家没有技术人员没有第三方平台的,我暂时不知道怎么做。憋问,让我研究了以后再分享给大家!)

2、找入口

好了现在正式来制作我们带参数的二维码吧。首先登录你的微信公众号,点击左下角【接口权限】,然后找到“生成带参数的二维码”,点击进入,这样我们就到了微信开发者文档的相关地方了。
兑换二维码

如果上面的步骤都没有错误,这个时候以后就会返回一段ticket代码。复制“ticket”:后面双引号的那段代码,重新回到微信开发者文档,见下图红框内的链接点击进去,然后就会打开一个空白网页,然后把你复制的代码替代打开的网址链接后面的TICKET就可以了,见下图2的网址后面红色遮挡部分。这时就获得一个带参数的二维码图片啦,可以自行下载。
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=
拿到token后根据官方文档选择所需要的二维码,是否是永久,来传入需要的参数
获取到ticket后直接在任意浏览器请求


附java代码实现获取ticket

package cn.xxs.wexingongzhonghao;import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;public class CreateQRcode {private final static Logger log = LoggerFactory.getLogger(CreateQRcode.class);// 临时二维码private final static String QRSCENE = "QR_SCENE";// 临时二维码private final static String QRSCENESTR = "QR_STR_SCENE";// 永久二维码private final static String QR_LIMIT_SCENE = "QR_LIMIT_SCENE";// 永久二维码(字符串)private final static String QR_LIMIT_STR_SCENE = "QR_LIMIT_STR_SCENE";// 创建二维码private String create_ticket_path = "https://api.weixin.qq.com/cgi-bin/qrcode/create";// 通过ticket换取二维码private String showqrcode_path = "https://mp.weixin.qq.com/cgi-bin/showqrcode";/*** 创建临时带参数二维码 -- 数字* 获取临时带参二维码ticket** @param accessToken* @expireSeconds 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。* @param sceneId 场景Id* @return*/public String createTempTicket(String accessToken, String expireSeconds, int sceneId) {Map<String, Integer> intMap = new HashMap<>();intMap.put("scene_id", sceneId);Map<String, Map<String, Integer>> mapMap = new HashMap<>();mapMap.put("scene", intMap);Map<String, Object> paramsMap = new HashMap<>();paramsMap.put("expire_seconds", expireSeconds);paramsMap.put("action_name", QRSCENE);paramsMap.put("action_info", mapMap);String  jsonObject = JSONObject.toJSONString(paramsMap);String requestUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token="+accessToken;net.sf.json.JSONObject result = WeiXinUtil.doPostStr(requestUrl, jsonObject);log.info(result.get("ticket").toString());return result.get("ticket").toString();}/*** 创建临时带参数二维码 -- String* 获取临时带参二维码ticket** @param accessToken* @expireSeconds 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。* @param str 场景string* @return*/public String createTempStrTicket(String accessToken, String expireSeconds, String str) {Map<String, String> intMap = new HashMap<>();intMap.put("scene_str", str);Map<String, Map<String, String>> mapMap = new HashMap<>();mapMap.put("scene", intMap);Map<String, Object> paramsMap = new HashMap<>();paramsMap.put("expire_seconds", expireSeconds);paramsMap.put("action_name", QRSCENESTR);paramsMap.put("action_info", mapMap);String  jsonObject = JSONObject.toJSONString(paramsMap);String requestUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token="+accessToken;net.sf.json.JSONObject result = WeiXinUtil.doPostStr(requestUrl, jsonObject);log.info(result.get("ticket").toString());return result.get("ticket").toString();}@Test  //测试方法public void test(){createTempTicket("23_ASxxxxxxxxxxxxxxxxxxxxdmzSwAp2JHc59OIpYjuumDasBmTTAKQjxgtrouLTnTuoiryTmrXXxQLJt90cp5NoyfqjFQGYHEc_kmxATHM-wX4AYYgbz_0wHlFGt8JolC93ROZNeAJAITH","604800",100);createTempStrTicket("23_ASVQxxxxxxxxxxxxxxxxxxxxjgZveNdmzSwAp2JHc59OIpYjuumDasBmTTAKQjxgtrouLTnTuoiryTmrXXxQLJt90cp5NoyfqjFQGYHEc_kmxATHM-wX4AYYgbz_0wHlFGt8JolC93ROZNeAJAITH","604800","李四王五");createForeverTicket("23_ASVQdixxxxxxxxxxxxxxxxxxxxveNdmzSwAp2JHc59OIpYjuumDasBmTTAKQjxgtrouLTnTuoiryTmrXXxQLJt90cp5NoyfqjFQGYHEc_kmxATHM-wX4AYYgbz_0wHlFGt8JolC93ROZNeAJAITH",100);String ticket=  createForeverStrTicket("23_ASVQxxxxxxxxxxxxxxxxxxxxjgZveNdmzSwAp2JHc59OIpYjuumDasBmTTAKQjxgtrouLTnTuoiryTmrXXxQLJt90cp5NoyfqjFQGYHEc_kmxATHM-wX4AYYgbz_0wHlFGt8JolC93ROZNeAJAITH","张三");getRQcode(ticket,"D:/QR_code");//将二维码生成在D:/QR_code目录下}/*** 创建永久二维码(数字)** @param accessToken* @param sceneId*            场景Id* @return*/public String createForeverTicket(String accessToken, int sceneId) {Map<String, Integer> intMap = new HashMap<>();intMap.put("scene_id", sceneId);Map<String, Map<String, Integer>> mapMap = new HashMap<>();mapMap.put("scene", intMap);Map<String, Object> paramsMap = new HashMap<>();paramsMap.put("action_name", QR_LIMIT_SCENE);paramsMap.put("action_info", mapMap);String  jsonObject = JSONObject.toJSONString(paramsMap);String requestUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token="+accessToken;net.sf.json.JSONObject result =  WeiXinUtil.doPostStr(requestUrl, jsonObject);log.info(result.get("ticket").toString());return result.get("ticket").toString();}/*** 创建永久二维码(字符串)** @param accessToken* @param sceneStr*            场景str* @return*/public String createForeverStrTicket(String accessToken, String sceneStr) {Map<String, String> intMap = new HashMap<>();intMap.put("scene_str", sceneStr);Map<String, Map<String, String>> mapMap = new HashMap<>();mapMap.put("scene", intMap);Map<String, Object> paramsMap = new HashMap<>();paramsMap.put("action_name", QR_LIMIT_STR_SCENE);paramsMap.put("action_info", mapMap);String  jsonObject = JSONObject.toJSONString(paramsMap);String requestUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token="+accessToken;net.sf.json.JSONObject result =  WeiXinUtil.doPostStr(requestUrl, jsonObject);log.info(result.get("ticket").toString());return result.get("ticket").toString();}/*** 二维码ticket,然后凭借ticket到指定URL换取二维码  -----创建带参数的二维码* @param ticket        二维码ticket* @param savepath      二维码保存路径* @return*/public static String getRQcode(String ticket, String savepath){String filepath = null;String requestUrl = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET";try {requestUrl = requestUrl.replace("TICKET", URLDecoder.decode(ticket,"UTF-8"));} catch (UnsupportedEncodingException e) {e.printStackTrace();}try{URL url = new URL(requestUrl);HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();conn.setDoInput(true);conn.setRequestMethod("GET");if (!savepath.endsWith("/")){savepath += "/";}// 将ticket 作为文件名filepath = savepath + ticket + ".jpg";// 将微信服务器返回的输入流写入文件BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());FileOutputStream fos = new FileOutputStream(new File(filepath));byte[] buf = new byte[8096];int size = 0;while ((size = bis.read(buf)) != -1)fos.write(buf, 0, size);fos.close();bis.close();System.out.println(conn);conn.disconnect();System.out.println("根据ticket换取二维码成功");} catch (Exception e){filepath = null;System.out.println("根据ticket换取二维码失败" + e);}return filepath;}}

WeiXinUtil消息请求发送工具类

import net.sf.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class WeiXinUtil {/*** get请求* @param url* @return*/public static JSONObject doGetStr(String url){DefaultHttpClient httpClient = new DefaultHttpClient();HttpGet httpGet = new HttpGet(url);JSONObject jsonObject = null;try {HttpResponse response =httpClient.execute(httpGet);HttpEntity entity =response.getEntity();if(entity != null){String result = EntityUtils.toString(entity,"UTF-8");jsonObject = JSONObject.fromObject(result);}} catch (IOException e) {e.printStackTrace();}return jsonObject;}/*** post请求* @param url* @param outUrl* @return*/public static JSONObject doPostStr(String url,String outUrl){DefaultHttpClient httpClient = new DefaultHttpClient();HttpPost httpPost = new HttpPost(url);JSONObject jsonObject = null;try {httpPost.setEntity(new StringEntity(outUrl,"UTF-8"));HttpResponse response = httpClient.execute(httpPost);String result = EntityUtils.toString(response.getEntity(),"UTF-8");jsonObject = JSONObject.fromObject(result);} catch (IOException e) {e.printStackTrace();}return jsonObject;}}

微信公众号怎么生成带参数的二维码?相关推荐

  1. 微信公众号之生成带参数的二维码

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

  2. 微信公众号开发----生成带参数的临时二维码

    本文只提供代码实现,具体参数含义请先仔细阅读微信公众号技术文档之生成带参数的二维码 临时二维码请求说明: 一.常量类 public class WechartConst {//生成带参数的二维码pub ...

  3. 微信公众平台 生成带参数的二维码

    前言:最近一直在开发微信的东西,总结一下微信生成带参数的二维码.这个其实在参考文章的第一篇总结的非常详细,大家可以参考一下.这里总结一下微信生成带参数二维码的过程和主要开发代码. 注:本文使用Rest ...

  4. 微信开发生成带参数的二维码的讲解

    在微信公众号平台开发者那里,在"账号管理"那里,有一项功能是"生成带参数的二维码",通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微信公众号上 ...

  5. 微信生成带参数的二维码,合成海报,扫码后推送小程序?

    微信服务号渠道二维码功能,支持生成带参数二维码,合成海报二维码,微信扫码后推送内容:结合微号帮平台48小时信息推送,推送微信小程序. 带参二维码 海报二维码 微信扫码后回复 48小时信息推送 在微号帮 ...

  6. 生成带参数的二维码接口实例

    1.生成带参数的二维码接口介绍 为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送. 目前有2种类型 ...

  7. asp生成带参数的二维码并合成推广海报图片,asp合并合成推广海报图片asp代码

    最近做的一个项目中,客户要求用asp生成二维码,然后合并到一张背景图片上,合并生成一张推广海报来,可把我愁坏了,经过一个晚上的努力,成功了,下面把这个:asp生成带参数的二维码并合成推广海报,asp合 ...

  8. asp生成带参数的二维码并合成推广海报图片,asp合并合成推广海报图片asp代码...

    最近做的一个项目中,客户要求用asp生成二维码,然后合并到一张背景图片上,合并生成一张推广海报来,可把我愁坏了,经过一个晚上的努力,成功了,下面把这个:asp生成带参数的二维码并合成推广海报,asp合 ...

  9. 微信公众号生成带参数的二维码

    官网功能介绍:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433542 1.获取access_token:根据公众号的 ...

最新文章

  1. 服务器装什么系统可以模拟器多开,安卓模拟器多开哪个最好 流畅不卡、省资源、群控刷机都有...
  2. nodejs redis 发布订阅_SpringBoot整合Redis,怎么实现发布/订阅?
  3. svn文件同步到web服务器,即同步到网站根目录
  4. mysql事务模式怎么查_Mysql InnoDB中的查询事务模式与锁定select ..for update
  5. C语言之strstr函数
  6. HTML5 创建热点图
  7. [转]Android Service Test——简单测试例子
  8. 经常和电脑、信息化设备打交道,食品保健养生非常重要!
  9. 20155330 第十一周课堂练习(20170503)
  10. excel删除行闪退_excel打开闪退解决 打开excel自动退出 自动关闭的解决
  11. 南京大学计算机专业复试面试,南京大学计算机CS专业复试超全PPT及真题、面试内部资料(离散编译上机面试)...
  12. 80后的北漂IT人:你的未来在哪?该做好打算了!
  13. 可复制的领导力读书笔记-2
  14. 解决cmd中文输入法看不到待选文字
  15. 五种典型开发周期模型(瀑布、V、原型化、螺旋、迭代)
  16. 观点| 如何避免GitHub那样断网43秒瘫痪 24 个小时?
  17. tableau做折线图_用Tableau制作10种漂亮的折线图
  18. 计算机与学科教学的深度融合,【信息技术与学科教学的深度融合】_信息技术与学科教学深度融合的方式分析...
  19. oracle游标简介
  20. MOOC机器学习(浙大课程)第一章

热门文章

  1. 甘肃阿克塞百余只“岩壁精灵”雪中觅食
  2. 编译原理8:递归下降分析器、扩充巴斯克范式、JavaCC
  3. 安卓笔记侠周报|开源届捷报,React 凯旋而归
  4. 利用pyecharts显示微信好友性别比例
  5. 自协方差函数,自相关函数,协方差矩阵
  6. utorrent无传入连接_utorrent设置教程~
  7. 浙大与北大计算机考研分数线,2017浙大考研复试分数线及相关问题
  8. apk安装法之三--application/vnd.android.package-archive是什么?
  9. GEE学习笔记 六十七:【GEE之Python版教程一】GEE学习背景介绍
  10. LuoguP2472 SCOI2007 蜥蜴