• 由于微信的限制,公众号关注二维码只能在一段时间内有效!这样给开发者带来了很多不便。 在网上找了很多资料,大多方法已经失效,目前如下方法比较实用: 1. 大家注意如下的链接,红色*号为公众号,只需将...

    由于微信的限制,公众号关注二维码只能在一段时间内有效!这样给开发者带来了很多不便。

    在网上找了很多资料,大多方法已经失效,目前如下方法比较实用:


    1. 大家注意如下的链接,红色*号为公众号,只需将*替换为你的公众号,下连接就可以实现类似一键关注功能  

    https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=********==#wechat_redirect

    2.获取自己公众号

    打开公众号,点击查看历史消息,随便点开一篇文章,复制链接:会看到类似下边的一串链接,由于个人原因无法上图,见谅

    http://mp.weixin.qq.com/s?__biz=MzIxODcwODk4NQ==&mid=2247484790&idx=1&sn=12c40bdfc81b607567d1cc42a01b44e8&chksm=97e72be0a090a2f63d4f0427471884b0c18f32ab4cbab6577c11937b7a35bd1494901499f016&mpshare=1&scene=22&srcid=05175BgHMNTcJaFIw5erC81Z#rd


    3.链接红色部分为公众号,将*号替换为公众号即可

    4.https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzIxODcwODk4NQ==#wechat_redirect,将链接生成二维码即可

    5.此方法目前可用,失效时间未知


    展开全文
  • 扫描下方二维码可关注 你我杂志刊 关注或者 微信搜索公众号 你我杂志刊 开发者通过signature对请求进行校验,若确认此次校验来自微信服务器,请原样返回echostr参数内容,则接入成功,否则接入失败! 打开IDE

    转载自 http://blog.csdn.net/lyq8479/article/details/8944988
    访问我的个人博客 秋码个人博客
    文中所用到的jar dom4j XStream的jar包
    扫描下方二维码可关注 你我杂志刊 关注或者 微信搜索公众号 你我杂志刊
    这里写图片描述
    开发者通过signature对请求进行校验,若确认此次校验来自微信服务器,请原样返回echostr参数内容,则接入成功,否则接入失败!
    打开IDE,创建一个Java Web工程,并新建一个能够处理请求的Servlet,命名任意。

    package com.zhenqi.servlet;
    
    import com.zhenqi.util.CheckUtil;
    import com.zhenqi.util.MessageUtil;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    
    /**
     * Created by wuming on 2017/9/15.
     */
    public class HandleWeiXinMessageServlet extends HttpServlet {
    
        public static final Logger logger = LoggerFactory.getLogger(HandleWeiXinMessageServlet.class);
        /**
         * VersionUID
         */
        private static final long serialVersionUID = 1L;
       
    
        /*
         * URL验证
         * (non-Javadoc)
         * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         */
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
    
            String signature = req.getParameter("signature");
            String timestamp = req.getParameter("timestamp");
            String nonce = req.getParameter("nonce");
            String echostr = req.getParameter("echostr");
            logger.info("echostr" + echostr);
            PrintWriter out = resp.getWriter();
            if(CheckUtil.checkSignature(signature, timestamp, nonce)){
            	out.write(echostr);
            } 
        }
    

    以上servlet doGet方法请求用到了校验signature的方法,以下是CheckUtil.java完整代码。
    其中要注意Token要与微信相对应。
    这里写图片描述

    package com.zhenqi.util;
    
    import java.security.MessageDigest;
    import java.util.Arrays;
    
    public class CheckUtil {
    	//与接口配置信息中的Token要一致 
    	private static final String token="weixinStudy";
    	
    	public static boolean checkSignature(String signature,String timestrap,
    			String nonce){
    		
    		String[] arr=new String[]{token,timestrap,nonce};
    		// 将token、timestamp、nonce三个参数进行字典序排序 
    		Arrays.sort(arr);
    		
    		StringBuffer buf=new StringBuffer();
    		for(int i=0;i<arr.length;i++){
    			buf.append(arr[i]);
    		}
    		
    		String temp=getSha1(buf.toString());
    		return temp.equals(signature);
    	}
    	
    	public static String getSha1(String str){
    		if(null==str || str.length()==0){
    			return null;
    		}
    		char hexDigits[]={'0','1','2','3','4','5','6','7','8','9',
    				'a','b','c','d','e','f'};
    		try{
    			MessageDigest mdTemp=MessageDigest.getInstance("SHA1");
    			mdTemp.update(str.getBytes("UTF-8"));
    			
    			byte[] md=mdTemp.digest();
    			int j=md.length;
    			char[] buf=new char[j*2];
    			int k=0;
    			for(int i=0;i<j;i++){
    				byte byTemp=md[i];
    				buf[k++]=hexDigits[byTemp >>> 4 & 0xf];
    				buf[k++]=hexDigits[byTemp & 0xf];
    			}
    			return new String(buf);
    		}catch(Exception e){
    			return null;
    		}
    	}
    
    }
    

    而后再回到servlet请求类里,编写doPost方法。用户关注就是触发一个事件。

    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
    
        	req.setCharacterEncoding("UTF-8");
            resp.setCharacterEncoding("UTF-8");
            PrintWriter out = resp.getWriter();
            try {
                Map<String,String> map = MessageUtil.xmlToMap(req);
                String toUserName = map.get("ToUserName");
                String fromUserName = map.get("FromUserName");
                String msgType = map.get("MsgType");
                String content = map.get("Content");    
                //判断请求是否事件类型 event
               if(MessageUtil.MESSAGE_EVENT.equals(msgType)){
                    String eventType = map.get("Event");
                    //若是关注事件  subscribe
                    if(MessageUtil.EVENT_SUB.equals(eventType)){
                        String mycontent = MessageUtil.menuText();
                        message = MessageUtil.initText(toUserName, fromUserName, mycontent);
    
                    }
                } 
                out.print(message);
            } catch (Exception e) {
            	e.printStackTrace();
                out.close();
            }   
           
        }
    

    MessageUtl.java类如下:

    public class MessageUtil {
    	public static final String MESSAGE_TEXT = "text";
        public static final String MESSAGE_IMAGE = "image";
        public static final String MESSAGE_VOICE = "voice";
        public static final String MESSAGE_VIDEO = "video";
        public static final String MESSAGE_LINK = "link";
        public static final String MESSAGE_LOCATION = "location";
        public static final String MESSAGE_EVENT = "event";
    
        public static final String EVENT_SUB = "subscribe";
        public static final String EVENT_UNSUB = "unsubscribe";
        public static final String EVENT_CLICK = "CLICK";
        public static final String EVENT_VIEW = "VIEW";
    
        /**
         * xml转为map
         * @param request
         * @return
         * @throws DocumentException
         * @throws IOException
         */
        public static Map<String, String> xmlToMap(HttpServletRequest request ) throws DocumentException, IOException
        {
            Map<String,String> map = new HashMap<String, String>();
    
            SAXReader reader = new SAXReader();
    
            InputStream ins = request.getInputStream();
            Document doc = reader.read(ins);
    
            Element root = doc.getRootElement();
            List<Element> list = root.elements();
            for (Element e : list) {
                map.put(e.getName(), e.getText());
            }
            ins.close();
            return map;
        }
    
        public static String textMessageToXml(TextMessage textMessage){
            XStream xstream = new XStream();
            xstream.alias("xml", textMessage.getClass());
            return xstream.toXML(textMessage);
    
        }
        public static String initText(String toUserName, String fromUserName, String content){
            TextMessage text = new TextMessage();
            text.setFromUserName(toUserName);
            text.setToUserName(fromUserName);
            text.setMsgType(MESSAGE_TEXT);
            text.setCreateTime(new Date().getTime());
            text.setContent(content);
            return textMessageToXml(text);
        }
    
        public static String menuText(){
            StringBuffer sb = new StringBuffer();
            sb.append("      你关注,\n");
            sb.append("     或者不关注,\n");
            sb.append("      【你我杂志刊】都在这里!\n");
            sb.append("     不离,\n");
            sb.append("      不弃!\n\n");
            sb.append("该公众号已实现以下功能:\n");
            sb.append("回复“天气”、“翻译” 将有该功能的介绍与使用,\n");
            sb.append("如您在使用该公众有任何宝贵意见,欢迎反馈!\n\n");
            sb.append("反馈邮箱:zhenqicai@sohu.com");
            return sb.toString();       
        }
    }
    

    最终效果如下图
    这里写图片描述
    扫描下方二维码可关注 你我杂志刊 关注或者 微信搜索公众号 你我杂志刊
    这里写图片描述

    展开全文
  • 用户主动点击某个按钮,触发二维码的展示

    Question. 问题

    微信端商城首页制作一个引导关注公众号的二维码,对于公众号的引流可以起到很大的作用。一般商城上的二维码有按照某种逻辑被动推送的形式,比如未关注过公众号的用户,第一次进入商城跳出一个二维码;另一种是用户主动点击某个按钮,触发二维码的展示,有点类似苹果手机上的小黑点(AssistiveTouch)。

    Solution. 解决

    HTML 部分:

    <!-- 触发按钮 -->
    <div class="alert-click" id="alert-click"></div>
    
    <!-- 底部透明灰色层 -->
    <div class='mask'></div>
    <!-- 二维码层 -->
    <div class='board'>
        <div class="logo"><span>德玛乃康</span></div>
        <div class='qrcode'><img src='images/qrcode.jpg'></div>
        <div class="heart"><span>关注</span></div>
        <div class='text'>长按二维码关注公众号</div>
    </div>

    HTML部分主要构建触发按钮和二维码部分,二维码部分由两个层组成,底部的透明灰色层,和底部的二维码层。

    CSS 部分:

    /* 触发按钮 */
    .alert-click {
        width: 40px; height: 40px; display: block;
        background: rgba(0, 0, 0, 0.6) none repeat scroll 0 0;
        background-image: url(images/icon_qrcode.png);
        background-repeat:no-repeat;
        background-position: center;
        background-size: 24px;
        color: #fff; line-height: 2rem; text-align: center; font-size: 1.2rem;
        -webkit-border-radius: 50%; border-radius: 50%;
        position: fixed; right: 20px; top: 240px; z-index: 1001;
    }
    
    /* 透明灰色层 */
    .mask { 
        position: fixed; top: 0; left: 0; z-index: 998; 
        width: 100%; height: 100%; display: none;
        background-color: #000; opacity: 0.5; overflow: hidden;
    }
    
    /* 二维码层 */
    .board { 
        position: fixed; background-color: #fff; top: 25%; left: 20%; 
        width: 60%; height: 310px; z-index: 999; display: none;
    }
    
    .board .logo span {
        display: block; height: 54px; color: #000;
        font-size: 16px; line-height: 54px; font-weight: 700;
        padding-left: 35%; padding-top: 4px; margin: 0 auto;
        background: url(images/logo.png) no-repeat 11% 0; background-size: 54px;
    }
    .board .qrcode { 
        position: relative; width: 80%; 
        margin-left: 10%; margin-bottom: 8px;
    }
    .board .qrcode img { 
        width: 100%; border-radius: 6px;
    }
    .board .heart span {
        display: block;
        height: 32px; width: 70px;
        margin: 0 auto; padding-left: 34px;
        font-size: 18px; color: #cc0000; line-height: 32px; font-weight: 700; text-align: center; 
        background: url(images/icon_heart.png) no-repeat left 2px; background-size: 26px;
    }
    .board .text { 
        position: relative; width: 90%; 
        margin-left: 5%; margin-top: 2%; padding-bottom: 8px;
        text-align: center; color: #666;
    }

    CSS 中主要应用到的技术是display、position、z-index、opacity几个重要样式实现排版。

    JS部分:

    <script type="text/javascript">
    $("#alert-click").click(function(){
        $('.mask').css('display','block');
        $('.board').css('display','block');
    });
    $('.mask').click(function(){
        $('.mask').css('display','none');
        $('.board').css('display','none');
    });
    </script>

    添加几个部件的显示与隐藏的交互效果。

    Effection. 效果

    这里写图片描述

    展开全文
  • 微信公众号开发如何引导用户关注?如何一键关注?5个步骤:1. 打开公众号,点击右上角人像图标;2. 点击查看“全部消息”;3. 点击右上角三个点的图标,然后“复制链接”;4. 获得链接;5. 将该链接放进你想要做跳转...

    1. 打开公众号,点击右上角人像图标

     

    2. 点击查看“全部消息”

     

    3. 点击右上角三个点的图标,然后“复制链接”

     

    4. 获得以下链接(其中红色字体是该公众号的唯一码)

    https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI2MzMwNzU5MA==&scene=126&bizpsid=0&subscene=0#wechat_redirect

     

    5. 将该链接放进你想要做跳转的地方即可

    <a href="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI2MzMwNzU5MA==&scene=126&bizpsid=0&subscene=0#wechat_redirect" title="">关注公众号</a>
    window.location.href = 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI2MzMwNzU5MA==&scene=126&bizpsid=0&subscene=0#wechat_redirect';

     

    展开全文
  • 一、微信引导用户关注公众号 最新有效的方法,要在微信pc版才有效! 登录pc版微信,找到你要关注微信公众号== 如:https://mp.weixin.qq.com/mp/profile_ext?action=home&amp;__biz=MzU0NTkyNjA2Mw==...

    一、微信内引导用户关注公众号

     

    最新有效的方法,要在微信pc版才有效!

    登录pc版微信,找到你要关注的微信公众号==

    如:https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU0NTkyNjA2Mw==&scene=124#wechat_redirect

    就可以在微信环境内跳转到指定的公众号并关注了!!

     

     

    以下是旧方法,存在缺陷↓↓↓

     

    我随便找的一个公众号;第一步是查看历史消息:

    第二步是复制改页链接:

    然后就可以拿到地址,但是该方法对机型有要求:新版iPhone  <  旧版iphone  <  安卓   (友好程度排名)

     

    二、普通浏览器唤起微信,不到指定页面

    通过协议     weixin://  即可:

    <a href="weixin://" title="非微信打开微信">非微信打开微信</a>

     

    展开全文
  • 微信开发之入门教程

    2016-01-12 10:55:26
    微信开发也是有了一定的认识。在此,小宝鸽再次无私地分享给大家啦。其实微信开发跟web开发没有多大的区别,只是经过了微信,然后再由浏览器打开。因为经过微信,因此你的web会附加一些微信平台所提供的一些功能,...
  • 1.首先有个公众号 2.点击右上角人头——查看全部消息... 得到链接地址:红色的删除即可。绿色的是自己的公众号  ...amp;__biz=MzUyNzcyMTE5NQ==&...scene=126#wechat_redirect ...最后将链接赋值到你想要的按钮上或...
  • 1 后盾向军微信开发宝典... 4 后盾向军微信开发宝典之公众号的关注与取消操作.mp4  5 后盾向军微信开发宝典之公众号的初始设置.mp4  6 后盾向军微信开发宝典之微信操作模式介绍与被添加自动回复操作.mp4  7 后盾
  • 在文档中书写关注微信号的两种方式:扫二维码和搜索关注,但是在某文章或者媒体中点击某一个链接跳转到微信公众号关注页面是怎么实现的呢?求解
  • 微信公众号开发,本质是一个网页的形式,用户进入这个网页系统,并不一定要关注公众号,只要提供链接,就可以直接进入。例如电动车充电桩系统,用户直接用微信的扫一扫,扫描插座二维码,就可以进入充电系统,并没有...
  • 微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 基础库 2.3.0 开始新出了一个组件,可以实现从小程序端直接关注公众号的组件,名为:official-account。 该组件的作用是: 公众号关注组件...
  • 近一年工作开发重点主要在微信开发。 微信的官方文档非常的粗略,有的地方很不严谨,而且对于各种异常情况也没有详细的说明 经常做着做着一头雾水,可以说是遍布着各种大大小小的坑 一年来,基本上现在主流的微信...
  • 在一些场景中,比如用户扫码直接使用公众号提供的功能需要先验证用户是否关注公众号,但是微信官方并没有提供直接跳转到公众号关注界面的接口 在公众号设置账户详情里有公众号关注二维码,准备一个过渡界面展示...
  • 本文介绍在微信公众平台上如何使用高级接口开发获取关注者列表的功能。 一、接口介绍 公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID...
  • 1、关注事件 $msgType = $postObj->MsgType; switch ($msgType){ case "event": $e=$postObj->Event; switch ($e){ case "subscribe": $contentStr = "欢迎关注关注事件"; ...
  • 微信开发——网页授权 项目需求:通过用户在微信中打开网页获取用户的openid来实现绑定消费卡的功能。 项目开发:首先我们需要配置微信的运行环境,这里请参考我的第一篇关于微信开发的日志。 第一步我们得去平台...
  • 看到微信api里面也有介绍到事件推送,那么这个关注事件是如何使用的呢? 今天不废话,直接上代码: <?php define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); $wechatOb...
  • 随着腾讯微信公众平台号的开放,围绕着微信的各种开发和营销如火如荼。很多商家也开始在微信上做文章,想充分利用微信平台4亿多的粉丝群体来进行各种营销和推广。这直接带来了很多公司开始做微信第3方营销平台,而...
  • 微信公众号强制关注

    2019-06-20 19:08:42
    比如笔者所在的公司行业,有公司开发功能进行推广小说,访问推广链接后,阅读到某一章时,弹出二维码才能继续阅读,其实这里就是变相的微信公众号强制关注了。关注他的二维码之后,公众号就会自动发送消息,给出继续...
  • 扫描关注后登录 ...填写JS接口安全域名 ,设置JS接口安全域后,通过关注该测试号,开发者即可在该域名下调用微信开放的JS接口,请阅读微信JSSDK开发文档。 注意:不知道啥原因,用自己的帐号申请测试
1 2 3 4 5 ... 20
收藏数 124,495
精华内容 49,798