微信公众号_微信公众号开发 - CSDN
微信公众号 订阅
微信公众号是开发者或商家在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家可在微信平台上实现和特定群体的文字、图片、语音、视频的全方位沟通、互动 。形成了一种主流的线上线下微信互动营销方式。2016年1月18日,腾讯在北京发布消息称,中国政务微信公号已逾10万。2018年4月,腾讯已查处9.9万多个违规公众号 [1]  。11月16日,微信公众平台发布公告称,个人注册公众号数量上限调整为1个 [2]  。2019年12月26日,微信公众号文章无法打开,点击文章链接后显示空白。随后,微信团队道歉,公众号后台大部分功能已经修复。 [3-4] 展开全文
微信公众号是开发者或商家在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家可在微信平台上实现和特定群体的文字、图片、语音、视频的全方位沟通、互动 。形成了一种主流的线上线下微信互动营销方式。2016年1月18日,腾讯在北京发布消息称,中国政务微信公号已逾10万。2018年4月,腾讯已查处9.9万多个违规公众号 [1]  。11月16日,微信公众平台发布公告称,个人注册公众号数量上限调整为1个 [2]  。2019年12月26日,微信公众号文章无法打开,点击文章链接后显示空白。随后,微信团队道歉,公众号后台大部分功能已经修复。 [3-4]
信息
外文名
Wechat Official Account
类    型
开放应用平台
分    类
订阅号和服务号
中文名
微信公众号
认证收费
服务号、订阅号认证均需300元/年
隶属企业
腾讯公司
微信公众号发展历程
2018年6月27日,微信官方宣布,微信公众平台上线开放转载功能,文章可以直接被转载,不需要人工再次确认。 [5]  2018年11月16日,微信公众平台发布公告称,即日起,公众号注册将做调整:个人主体注册公众号数量上限由2个调整为1个;企业类主体注册公众号数量上限由5个调整为2个。 [2]  2018年12月29日,微信公众平台运营功能再次升级,修改已发送文章的错别字上限由5个上调至10个,同时支持增、删和替换,但标题和摘要依然无法修改,修改机会依然有且仅有一次。 [6]  2019年8月,滴滴出行宣布,与万达酒店及度假村达成战略合作。用户可在万达酒店微信公众号内使用滴滴叫车。 [7]  2020年6月29日,微信公众号增加两项新功能,在文章底部新增了“分享”和“赞”。其中,用户点击“分享”可“分享到朋友圈”或“发送给朋友”。这两项新功能已陆续全量开放。 [8] 
收起全文
精华内容
参与话题
  • 课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决...
  • 开发微信公众号(二)

    万次阅读 2018-05-23 00:35:56
    看完昨天的文章「开发微信公众号(一)」 估计不少人已经开始期待我继续更新了,这不赶紧马不停蹄,加班加点给你们更新了第二篇。现在的你已经有了一个属于自己的微信公众号,那么你想如果按照微信公众号的自动回复...


                            


    看完昨天的文章「开发微信公众号(一)」 估计不少人已经开始期待我继续更新了,这不赶紧马不停蹄,加班加点给你们更新了第二篇。


    现在的你已经有了一个属于自己的微信公众号,那么你想如果按照微信公众号的自动回复,来实现用户发送电影名就可以获得想要的电影链接,那是得设置多少的呀,这显然是不可能的,那么我们就要用到服务器来帮我们实现了的,腾讯,阿里云的都可以,当然如果你是学生那么就可以享有购买服务器时的福利了的,有10元/月支持学生购买服务器的,个人感觉还是蛮划算的。那么问题又来了,不是学生党购买似乎会觉得有点贵,这里我直接给大家一个福利,关注我的微信公众号,回复「令牌」,不知道令牌是什么?没关系,先接着往下看的!我直接把我的令牌给大家用,直到服务器崩掉,先到先得,崩了之后我再修改令牌! 但是你如果想做好一个项目的有收益的话,肯定是要付出的,就像你加入张哥的星球也是通过付费获得知识,这是同样的一个道理,就算之后可能会失败,没有收益,但是你收获到了技术上的知识,我想这也是不错的! 


    购买服务器(我以腾讯服务器作为例子)


    1、百度搜索「腾讯云」,学生党百度搜索「腾讯云校园服务」进入腾讯云网站首页


                        


    2、点击--产品--计算--云服务器


                                


    3、进入云服务器选购界面点击--立即购买,如果没有登录的话需要登录,自己的QQ号就可以;


                                


    5、选择需要的配置,提交订单支付即可

    一定要选择选择 Ubuntn Serve !

    一定要选择选择 Ubuntn   Serve !

    一定要选择选择 Ubuntn   Serve !


                            


    重要的事情说三遍,使用 Ubuntn 会比 window 方便太多了的,而且我也是用的Ubuntn,不怎么清楚其他的服务器,如果不知道用没关系,我会详细描述好操作的,而且作为一位优秀的程序员,你迟早的接触到 Linux ,没有图形界面的,这个时候了解一下,绝对是没有坏处的,只会让你变的更优秀!


    接口微信公众号如果你有了自己的服务器之后呢,你需要你的服务器与微信之间产生联系的,这里我们需要用到别人已经开发好的微信公众号开发框架  WeRoBot 建议看到这里了,去百度一下 WeRoBot 官方文档了解,否则可能会有点不知道什么意思!如果现在的你还处于迷茫的状态,也请硬着头皮操作下去,登录进入你的服务器, 现在我们先直接部署好,让你看到效果再解释原因的,看到现在的不懂 Ubuntn 下的 Vim 操作,可以现在就学下的,简单的基本操作,现在请执行好以下命令:


    vim rebot.py     //创建一个rebot.py 

    键盘按下 i      //切换到 vim 的输入模式   复制以下代码   


    import werobot

    robot = werobot.WeRoBot(token='tokenhere') 

    // tokenhere 这里自己可以随便填写的,比如 token = 'aaa'


    @robot.handler

    def hello(message):

        return 'Hello World!'


    # 让服务器监听在 0.0.0.0:80


    robot.config['HOST'] = '0.0.0.0'

    robot.config['PORT'] = 80

    robot.run()


    按下 Esc    然后按下  Shift + :      

      

    //切换到 Vim 下的命令模式 


    输入 wq                     

                     

    //保存并退出


    sudo python3 rebot.py       

       

    //运行程序rebot 接下来不用动了的,按下 Ctr + C 可以取消,但是现在不要动


                            


                           


    回到微信公众号的后台了,基本配置里面,将你的服务器IP 与令牌(token)

    就是你之前代码里写的那个 token ,填入微信公众号后台,消息加密,点随机生成,明文模式,点击启用,OK 到这里应该就是部署好了的,发送消息,微信就会自动回复hello world 是不是特别的激动,没错到了这里就说明接口配置已经成功完成好了的!甚至你还可以回复图文消息,将代码改成这样!相信某些聪明的人大概已经知道实现原理是什么了吧!


    import werobot

    robot = werobot.WeRoBot(token='tokenhere')

    @robot.text

    def articles(message):

        return [

            [

                "title",

                "description",

                "img",

                "url"

            ],

            [

                "whtsky",

                "I wrote WeRoBot",

                "https://secure.gravatar.com/avatar/0024710771815ef9b74881ab21ba4173?s=420",

                "http://whouz.com/"

            ]

        ]

    robot.run()





    这些代码在 Werobot 都可以看得到,所以要多看文档的,如果已经配置成功了的,可以留言扣个1 ,如果存在疑惑,不懂,请多看微信的官方文档以及 Werobot 的官方文档,多看官方文档是最好的学习方法,或者直接私聊我!!

    有人说:我把服务器退出了就实现不了呀,那么 Linux 的强大就体现出来了


    sudo nohup python3 rebot.py &


    一条命令,这样退出服务器,后台也是可以运行的!

    最后,你需要学什么:Vim 的基本操作,Ubuntn 的基本操作,以及 Werobot!终于完成好了服务器接口微信公众号后台了的,下次将会介绍如何建立好自己的数据库!




    推荐阅读:  开发微信公众号(一)



    PS:如果觉得文章还不错的话,还请大家点赞分享下。算是对「fightjiang」最大的支持!



           每 天 分 享 Python 干 货

         

    展开全文
  • 微信公众号开发小记(一)开篇

    万次阅读 2018-08-10 12:33:33
    接下来的时间里,我会以连载的形式分享微信公众号开发的相关文章,其中也会说一下我遇到的问题以及解决的思路,以及在开发过程中的一些感悟!因为是一个连载系列,所以会以一个初学者,也就是接触过编程但是没有接触...

    接下来的时间里,我会以连载的形式分享微信公众号开发的相关文章,其中也会说一下我遇到的问题以及解决的思路,以及在开发过程中的一些感悟!因为是一个连载系列,所以会以一个初学者,也就是接触过编程但是没有接触过微信公众号开发的角度去写文章,希望能给大家带来微信公众号开发相关知识的同时更多的给初学者一种解决问题的思路以及学习的方法!

    在我的印象当中,微信公众号开发好像一直都是PHP干的事,之前也从未接触过微信公众号开发,可以说是头一次做微信公众号开发的知识!

    因为一直在运营微信公众号,所以多多少少都会经常看到这个

    image

    也就是微信公众平台开发文档,但是一直觉得自己不会做这块,所以也就没有当回事,谁知世事难料,没想到有一天自己也做起了微信公众号的开发。

    那就开始吧!首先做微信公众号开发,你必须离不开的就是这个官方技术文档了,因为需要经常的去看,去查!建议先把这个技术文档看一遍!

    然后你就会看到很重要的一条文档,就是它

    image

    就是这个接入指南,有这么三个步骤

    1. 填写服务器配置
    2. 验证服务器地址的有效性
    3. 根据接口文档实现业务逻辑

    首先,作为一个初学者,肯定有些不懂,那该怎么办?这里的不懂应该就是这个服务器配置,什么玩意,什么服务器配置,如何验证以及实现业务逻辑?

    其实在做了一遍微信公众号开发之后发现,这个技术文档真的已经很详细了,仔细看技术文档,这三步都有解释,首先是这个服务器配置

    image

    这里面比较重要的就是这个URL,文档中解释这个URL是用来接收微信服务器发送过来的消息的,而下面的那个token则是做验证用的。

    首先,要明白先来看一张图

    image

    比如说,我们在手机上给微信公众号发送一个消息,这就相当于一个request请求,然后这个request到达微信服务器,紧接着微信服务器对这个request做出解析,然后开始响应一个response给你,这样你就收到了相应的回复。

    以上是正常的没经过对微信公众平台的二次开发的请求和响应,但是,现在我们进行了微信公众号的开发,就变成了这样

    image

    也就是说,当我们进行微信公众号的开发之后,用户的请求就不再有微信服务器去做处理了,而是由我们自己的服务做处理,然后把消息传给微信服务器,微信服务器再将消息返回给我们的用户。

    在这个过程中,微信服务器起了一个中间商的作用,所以经过这样的分析,微信公众号开发要把我的一点就是,你只要返回给微信服务器正确的数据,微信服务器就能帮你做正确的事情。

    所以作为微信公众号开发的第一步就是接入,你需要将自己的服务器和微信服务器做接通,只有接通之后,用户发送的请求到达微信服务器之后,微信服务器才知道该将这个请求转发给哪个服务器来处理。

    那么该如何接通,这就是技术文档中的接入指南三步走了,也就是这个

    1. 填写服务器配置
    2. 验证服务器地址的有效性
    3. 根据接口文档实现业务逻辑

    首先第一个问题就是这个服务器配置到底该填写啥,技术文档中说是填写一个url,可是这个url具体是什么呢?

    那首先就要搞明白,这个url是用来干嘛的,技术文档中说了,这个url是用来接收微信服务器发送过来的请求的,要对请求做处理?想一想,request?处理?该怎么做呢?

    看一段代码

    
    public class OneServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doGet(req, resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doPost(req, resp);
        }
    }

    你知道这个URL,也就是服务器配置该填写上什么了吗?

    未完待续!

    展开全文
  • 微信公众号开发——项目搭建

    万次阅读 2018-09-11 15:23:25
    前往微信公众平台(https://mp.weixin.qq.com/)获取开发权限和开发账号,公众号分为好几种,小程序,订阅号,服务号,企业号,个人只能用订阅号,权限比较少(api接口权限); 二 想要自定义模块功能或者是回复...

    一 

    前往微信公众平台(https://mp.weixin.qq.com/)获取开发权限和开发账号,公众号分为好几种,小程序,订阅号,服务号,企业号,个人只能用订阅号,权限比较少(api接口权限);

    想要自定义模块功能或者是回复信息啥的,就得有一个自己的后台来写接口,所以要配置自己的服务器

    基本配置:服务器配置(首页-开发-基本配置-服务器配置)

    进入修改配置,这里的服务器地址必须是外网(没有服务器的小伙伴如果这里分不清。。外网特征就是别人可以通过你的本机ip直接访问到,在简单点就是,你如果使用WiFi连接的网络那就肯定是内网或者说是局域网,查看方式,window键加R键,输入cmd回车,然后输入ipconfig 查看你当前的ip,然后百度本机ip,不一样的话就不是外网,解决办法是使用natapp进行内网穿透或者是用路由器进行端口映射,将服务器的某个端口映射出去,在最后会有详细步骤)而且是80端口,格式为ip/域名+wx(接口名 ,固定,但是前面可以加路由比如ip/home/wx)Token随便写个;

    然后是后台不多说先上代码:

    /// <summary>
    /// 配合微信服务器验证域名或者是ip的可用行或者是获取消息的推送--pxj
    /// </summary>
    [AtSkipAuthorize]
    public void wx()
    {
    	//获取消息推送,或者是事件推送,类型是xml文件流
    	if (Request.RequestType == "POST")
    	{
    
    	}
    	else
    	{
    		#region 验证请求来源是否是微信
    		string signature = Request["signature"].ToString();
    		string timestamp = Request["timestamp"].ToString();
    
    		string nonce = Request["nonce"].ToString();
    		string echostr = Request["echostr"].ToString();
    		string token = "hellowb";
    		List<string> list = new List<string>() { token, timestamp, nonce };
    		list.Sort();
    		string data = string.Join("", list);
    		byte[] temp1 = Encoding.UTF8.GetBytes(data);
    		SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
    		byte[] temp2 = sha.ComputeHash(temp1);
    
    		var hashCode = BitConverter.ToString(temp2);
    		hashCode = hashCode.Replace("-", "").ToLower();
    
    		if (hashCode == signature)
    		{
    			Response.Write(echostr);
    			Response.End();
    		}
    		LogHelper.WriteLog("signature:" + signature + " timestamp:" + timestamp + " nonce:" + nonce + " echostr:" + echostr);
    		#endregion
    	}
    }

    写好后台配置好服务器就可以在微信公众号网站也就是刚才的那个页面点击提交了,点击提交后微信的服务器会向你所配置的服务器80端口的这个接口发送GET请求,验证接口是否正确,如果提交成功,恭喜你可以进入下一个坑了;

    当你在写微信公众号的页面的时候,你有时候会用到上传图片或者打开摄像机等要求,这时候要接入JS_SDK,配置签名等等,这个签名应该算是配置里最难受的一块了。。。

    签名的获取有几个步骤,先是要通过appid和appSecret来获取access_token,然后用access_token来获取jsapi_ticket,代码如下

     //获取access_token
    string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appId, appSecret);
    var wc = new WebClient();
    string access_tokenRet = wc.DownloadString(url);
    string access_token = JsonHelper.JsonToObj<AccessTokenModel>(access_tokenRet).Access_Token;
    accesstokenstatic = access_token;
    
    //获取jsapi_ticket
    string Jsapi_TicketUrl = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", access_token);
    var jsapiRet = wc.DownloadString(Jsapi_TicketUrl);
    string ticket = JsonHelper.JsonToObj<TickModel>(jsapiRet).ticket;
    ticketstatic = ticket;

    然后获取十位的时间戳和自己写的随机字符串和页面传来的url,将jsapi_ticket,url,timestamp(时间戳),nocestr(随机字符串随便写一个就行)sort方法排序,然后根据这几个的顺序进行赋值并用sha1加密如下

    string signaturestring = "jsapi_ticket=" + ticket + "&noncestr=" + nocestr + "&timestamp=" + timestamp + "&url=" + url2;
    byte[] temp1 = Encoding.UTF8.GetBytes(signaturestring);
    
    SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
    byte[] temp2 = sha.ComputeHash(temp1);
    var hashCode = BitConverter.ToString(temp2);
    hashCode = hashCode.Replace("-", "").ToLower();

     如此一来全部的都有了,返回这些就行了,如果报错了说url不合法就要取配置以下域名,二级域名也能用;

    四 ,带参二维码的扫描和事件的推送

    当你的公众号涉及到分享二维码给其他人,每一张二维码上还得要有你的信息的时候,需要在公众号的二维码上添加上一个场景值,比如你的用户id,当客户或者是其他用户通过你分享的二维码进入公众号的时候,微信服务器会推送给你一个xml包,其中一个子节点上就存着那个场景值;

    直接上代码--获取部分,

     public void GetQrCode()
     {
    	 string accesstoken = accesstokenstatic;
    	 if (string.IsNullOrEmpty(accesstoken))
    	 {
    		 //先主动取获取以下所需要的变量
    		 getaccesstoken(null, null);
    		 accesstoken = accesstokenstatic;
    		 Timer();
    	 }
    	//使用匿名对象作为post的参数然后再序列化
    	 var datap = new
    	 {
    		 //二维码的有效期(10天)
    		 expire_seconds = 864000,
    		 //类型动态的二维码
    		 action_name = "QR_SCENE",
    		 //信息
    		 action_info = new
    		 {
    			 scene = new {
    				 //自定义参数数值型为scene_id ,字符为scene_str
    				 scene_id = 15552300793
    			 }
    		 }
    	 };
    	 //使用流发送post带参请求
    	 string url = string.Format("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}",accesstoken);
    	 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
    	 request.Method = "POST";
    	 request.ContentType = "application/json";
    	 byte[] data = Encoding.UTF8.GetBytes(JsonHelper.ModelToJson(datap));
    	 request.ContentLength = data.Length;
    	 using (Stream strea = request.GetRequestStream())
    	 {
    		 strea.Write(data,0,data.Length);
    		 strea.Close();
    	 }
    	 HttpWebResponse respose = (HttpWebResponse)request.GetResponse();
    	 Stream stream = respose.GetResponseStream();
    	 string stringRespose = "";
    	 using (StreamReader sr = new StreamReader(stream, Encoding.UTF8))
    	 {
    		 stringRespose = sr.ReadToEnd();
    	 }
    	 if (string.IsNullOrEmpty(stringRespose))
    	 {
    		 Response.Write("sorry");
    	 }
    	 else { 
    		 //此时已经获取到二维码所使用的ticket
    		 string qrticket = JsonHelper.JsonToObj<QrCoderTicektModel>(stringRespose).ticket; 
    		 //二维码解析后的地址(可以自己转化为二维码)
    		 string qrurl =  JsonHelper.JsonToObj<QrCoderTicektModel>(stringRespose).url; 
    		 Response.Write("hhhhhh");
    		 LogHelper.WriteLog("getsometing:" + stringRespose);
    	 }
     }

    现在是获得了二维码的解析后的url,和获取二维码的ticket;有两种方式可以得到二维码,一种是直接将这个地址url返给前端,前端自己生成,二是后台获取到这个二维码后保存到服务器,前端自己去取;

    获取微信的推送,如刚才所说,扫码的时候会发送一个xml包;

    代码如下

    public void wx()
    {
    	//获取消息推送,或者是事件推送,类型是xml文件流
    	if (Request.RequestType == "POST")
    	{
    		#region 推送
    		//加载xml包,获取推送的内容
    		StreamReader sr = new StreamReader(Request.InputStream);
    		string xmlData = sr.ReadToEnd();
    		LogHelper.WriteLog(xmlData);
    		var doc = new XmlDocument();
    		doc.LoadXml(xmlData);
    		//获取xml包里的消息类型和事件类型,分类处理
    		var msgTypeNode = doc.SelectSingleNode("xml/MsgType");
    		var evenTypeNode = doc.SelectSingleNode("xml/Event");
    		string msgTypeString = msgTypeNode.InnerText;
    		if (evenTypeNode == null)
    		{
    			//此时为普通的消息推送
    		}
    		else
    		{
    			//此时为事件推送
    			string evenTypeString = evenTypeNode.InnerText;
    			//扫描带参的二维码的时候和关注和取关的推送
    			if (evenTypeString == "SCAN" || evenTypeString == "subscribe")
    			{
    				string SaoMaRenOpenId = doc.SelectSingleNode("xml/FromUserName").InnerText;
    				var BeiSaoRenCanShuNode = doc.SelectSingleNode("xml/EventKey");
    				if (BeiSaoRenCanShuNode != null)
    				{
    					string BeiSaoRenCanShuSting = BeiSaoRenCanShuNode.InnerText.Split('_')[1];
    					//已经获取扫码人和被扫人的个人id,下面就是存到数据库做关联就ok了,用到的时候取
    				}
    			}
    
    			//地理位置推送
    			if (evenTypeString == "LOCATION")
    			{
    
    			}
    
    			//点击自定义菜单拉去信息的时候的推送
    			if (evenTypeString == "CLICK")
    			{
    
    			}
    		}
    		#endregion
    	}

    五,

    natapp内网穿透:

    https://natapp.cn/注册,登录,获取自己的隧道,下载客户端,解压,cmd进入客户端的文件夹,natapp.exe -authtoken = "你的autotoken",

    如下则成功了

     

     

    展开全文
  • 微信公众号开发教程(一) 验证接入

    万次阅读 多人点赞 2018-06-22 14:22:35
    微信公众号开发教程(一)验证接入本篇文章主要介绍了微信公众号开发接入详细流程,希望对刚接触公众号开发的同学有所帮助,有兴趣的同学可多多关注叩丁狼公众号,后续会更新不同的公众号小案例。公众号的分类我们平常...

    作者:陈惠,叩丁狼教育高级讲师。原创文章,转载请注明出处。

    微信公众号开发教程(一)验证接入

    本篇文章主要介绍了微信公众号开发接入详细流程,希望对刚接触公众号开发的同学有所帮助,有兴趣的同学可多多关注叩丁狼公众号,后续会更新不同的公众号小案例。

    公众号的分类

    我们平常在微信应用上会看到有很多的公众号,但是各自并不一样,公众号也分很多种类型,不过最常见的就是服务号和订阅号了。下面我们来看一下他们的区别:

    1、订阅号
    为媒体和个人提供一种信息传播方式,主要偏于为用户传达资讯(类似报纸杂志),主要的定位是阅读,每天可以群发1条消息;

    2、服务号
    为企业,政府或组织提供对用户进行服务,主要偏于服务交互(类似银行提供服务查询),每个月只可群发4条消息;

    3、企业微信(企业号)
    为企业,政府,事业单位,实现生产管理和协作运营的移动化,主要用于公司内部通讯使用,旨在为用户提供移动办公,需要先有成员的通讯信息验证才可以关注成功企业微信;

    通过以下图片我们可以更清晰的看出不同公众号的区别:

    分类.jpg

    区别.jpg

    还有一个比较明显的区别就是,订阅号都是存放在一个名叫订阅号的文件夹中,点开才能看到所有关注过的订阅号,但是服务号却和好友一样直接就显示在聊天列表中。这个大家打开微信客户端便能看到。

    如果大家有需要申请公众号的,要根据实际需求考虑清楚应该申请哪一种公众号
    以下是官方给出的建议,大家可以多参考参考

    1)如果想简单的发送消息,达到宣传效果,建议可选择订阅号;
    2)如果想用公众号获得更多的功能,例如开通微信支付,建议可以选择服务号;
    3)如果想用来管理内部企业员工、团队,对内使用,可申请企业号;
    4)订阅号可通过微信认证资质审核通过后有一次升级为服务号的入口,升级成功后类型不可再变;
    5)服务号不可变更成订阅号。

    4.测试号(用于开发测试及功能体验)
    这种是平常普通用户是涉及不到的,是专门为开发人员准备的一种仅用于测试的公众号。

    由于用户体验和安全性方面的考虑,微信公众号的注册有一定门槛,某些高级接口的权限需要微信认证后才可以获取。所以,为了帮助开发者快速了解和上手微信公众号开发,熟悉各个接口的调用,微信推出了公众帐号测试号,无需公众帐号、快速申请接口测试号,通过手机微信扫描二维码即可获得,利用测试号我们可以体验和测试更多高级功能。

    申请地址:
    http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

    但测试号也不是万能的,部分高级功能,如微信支付,卡券功能等也是不开放的。
    如果要实现支付功能还是得去注册个正式的公众号。

    微信公众平台:

    我们注册的公众号都可以在这个平台上进行管理,比如想弄一些自定义菜单,或者自动回复,或者平常推送的文章,都可以在这上面操作。

    平台地址:
    http://mp.weixin.qq.com

    平台中分为两种管理模式:

    平台提供了两种管理模式给我们,应该根据我们的需求来选择使用不同的模式。

    下面我们来了解一下,两种模式的区别:

    编辑模式

    主要针对非编程人员及信息发布类公众帐号使用。
    开启该模式后,可以方便地通过界面配置“自定义菜单”和“自动回复的消息”。
    好处是可视化界面配置,操作简单,快捷,但是功能有限。

    开发模式

    主要针对具备开发能力的人使用。
    开启该模式后,能够使用微信公众平台开放的接口,但是编辑模式的设置会失效,比如“自定义菜单”和“自动回复的消息”功能。通过编程方式可以实现更多复杂的功能,提供个性化服务。

    总的来说,编辑模式就是为所有人提供的,如果你的需求仅仅只是最常见的菜单,自动回复等,使用编辑模式已经满足,但是如果你需求的功能比较复杂,有很多很多的想法,就需要使用到开发模式。

    下面我们来学习一下,怎么使用这个开发模式。

    开发模式配置流程

    1.登录测试号页面,可以看到该测试号相关的信息

    就是使用电脑打开http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
    使用微信扫一扫二维码,即可在打开的页面中看见微信给你分配的测试号的相关信息。

    下面两个属性是唯一的标识,每个测试号都会有自己的appid与appsecret ,是比较重要的信息,不要随意发给别人。

    appid:是公众号开发识别码,配合开发者密码可调用公众号的接口能力。
    appsecret:是校验公众号开发者身份的密码,具有极高的安全性。

    测试号信息.png

    如果是正式的公众号,登录公众平台官网之后,找到“基本配置”菜单栏也可以获取上公众号相关的信息。

    2.配置参数介绍

    再往下看,我们会看到URL和Token这两个属性,和上面appid/appsecret不同的是,上面的是微信分配给我们的,但是下面这两个是需要我们填进去的。

    我们先来了解一下,这两个属性有什么作用。

    URL:就是指我们自己的服务器地址
    该URL是开发者用来接收和响应微信消息和事件的接口URL
    (必须以http://或https://开头,分别支持80端口和443端口)

    Token:可任意填写,用作生成签名(必须为英文或数字,长度为3-32字符)
    该签名在后边会用到,这里暂时随便填个内容也可以

    接口信息配置.png

    接下来我们需要了解的是微信与我们的服务器交互的过程:

    当我们在微信app上,给公众号发送一条内容的时候,实际会发送到微信的服务器上,此时微信的服务器就会对内容进行封装成某种格式的数据比如xml格式,再转发到我们配置好的URL上,所以该URL实际就是我们处理数据的一个请求路径。所以该URL必须是能暴露给外界访问的一个公网地址,不能使用内网地址,生产环境可以申请腾讯云,阿里云服务器等,但是在开发环境中可以暂时利用一些软件来完成内网穿透,便于修改和测试,如NATAPP,花生壳等软件,使用起来也很方便,在本地安装对应的软件,配置运行后,直接使用软件分配的临时域名来访问本地应用即可,只是偶尔会存在网络不稳定的情况。这里不详细介绍如何使用了,具体教程可参考软件官网。

    交互流程.png

    在开发的过程中,我们会经常使用到微信公众号提供给开发者的开发文档
    具体地址:https://mp.weixin.qq.com/wiki
    大家打开后可以选择”接入指南”,参考微信提供的一些帮助信息。

    3.搭建本地应用(java/python/php等语言均可)

    基本概念都了解过后,我们马上就要开始开发了,因此需要先提供好一个应用,接下来就可以在该应用上添加公众号相关的功能了。

    本文项目使用java语言,SpringMVC+Spring+MyBatis框架

    4.URL接入验证

    我们需要先来了解一下接入的过程是怎么样的。下图是微信官方对接入过程的介绍。

    图片.png

    由以上介绍可知,当我们填入url与token的值,并提交后,微信会发送一个get请求到我们填写的url上,并且携带4个参数,而signature参数结合了开发者填写的token参数和请求中的timestamp参数、nonce参数来做的加密签名,我们在后台需要对该签名进行校验,看是否合法。实际上,我们发现微信带过来的4个参数中并没有带token参数,仅有signature是和token有关的,所以我们应该在本地应用中也准备一个和填入的token相同的参数,再通过微信传入的timestamp与nonce做相同算法的加密操作,若结果与微信传入的signature相同,即为合法,则原样返回echostr参数,代表接入成功,否则不做处理,则接入失败。

    详细流程可参考微信官方提供的逻辑流程图,我们的应用需要以该流程图的步骤来实现。

    图片.png

    代码示例:

    @Controller
    public class WeChatController {
            /**
             * 微信URL接入验证
             * @param signature
             * @param timestamp
             * @param nonce
             * @param echostr
             * @return
             */
            @RequestMapping(value="/weChat",method= RequestMethod.GET)
            @ResponseBody
            public String validate(String signature,String timestamp,String nonce,String echostr){
                //1. 将token、timestamp、nonce三个参数进行字典序排序
                String[] arr = {timestamp,nonce,WeChatUtil.TOKEN};
                Arrays.sort(arr);
                //2. 将三个参数字符串拼接成一个字符串进行sha1加密
                StringBuilder sb = new StringBuilder();
                for (String temp : arr) {
                   sb.append(temp);
                }
                //3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
                if(SecurityUtil.SHA1(sb.toString()).equals(signature)){
                    //接入成功
                    return echostr;
                }
                //接入失败
                return null;
            }
    }
    

    备注:

    1. 代码中WeChatUtil.TOKEN是一个常量,常量值必须要和我们在页面上填入的token值相同,通常可以抽取到配置文件中来注入值比较灵活。
      2.SecurityUtil是一个工具类,提供了sha1加密的方法。

    接入成功后即可根据开发文档实现一些小案例了。文章暂时使用的是测试号来做开发,后续有些高级功能权限不够可能会改成正式公众号来进行开发。


    展开全文
  • 微信公众号开发技术要点

    万次阅读 多人点赞 2019-03-08 09:29:26
    微信公众号开发技术要点 微信公众号开发技术要点 微信公众号及其接口功能介绍 基本概念 公众号开发者模式 代码验证及图示 Open ID与Union ID 基本概念 使用说明 Access_token 基本介绍 注意事项 获取流程 ...
  • 微信公众号授权登录、获取用户信息(openid) 实现方式也是两种: 1.静默授权登录 授权登录以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知...
  • 项目实现地址。查看我的[Github地址]... 目前具体可获取指标(包含但不局限):阅读数、点赞数(在看)、评论内容及总数、正文内容及图片、是否为头条、是否为原创。
  • 微信公众号开发之发送模板消息

    万次阅读 多人点赞 2018-11-10 13:06:36
    在我们做微信公众号开发时,发送模板消息往往是必不可少的功能。今天我们就来说说吧! 1、申请模板消息 首先我们应该知道,模板消息是需要申请的。这个申请就其本身来说是很easy的(我前一天晚上申请的,显示需要2...
  • 免费创建微信公众号全攻略

    万次阅读 2016-03-11 22:08:56
    微信的平台分为公众平台和开放平台。 公众平台就是面向公众的平台。 分为3类: 订阅号 : 发布信息用的,面向个人或企业俗称自媒体(无微信支付), 。 服务号 : 面向企业的公众平台,比如招行等企业的应用(和钱有关)。 ...
  • 微信公众号里可以添加小程序。 图片有点小,我把文字打出来吧: 可关联已有的小程序或快速创建小程序。已关联的小程序可被使用在自定义菜单和模版消息等场景中。 公众号可关联同主体的10个小程序及不同主体的3...
  • 如何创建一个微信公众号

    万次阅读 2018-08-29 21:46:46
    最近有不少问我怎样从0创建一个微信公众号,简单指导之后感觉大家都不太明白,所以打算写一篇教程文章来告诉大家如何创建订阅号,欣然提笔! 这里我们首先打开网址https://mp.weixin.qq.com/,我们会看到下面的界面...
  • 本文代码基于微信开发文档-用户管理一节编写 在使用代码之前请确认你已阅读并理解上面提到的 package cn.dbw.luckwheel.config; import cn.dbw.luckwheel.po.LuckUser; import cn.dbw.luckwheel.po.WxPojo; import...
  • 微信公众号开发详细教程

    千次阅读 2019-05-24 17:53:17
    微信公众号开发之配置开发服务器 微信公众号开发之获取access_token 微信公众号开发之关键词回复 微信公众号开发之模板消息 微信公众号开发之授权回调 ...
  • 获取微信公众号的关注链接地址

    万次阅读 2019-10-29 17:17:01
    获取微信公众号的关注链接 1.打开PC端微信,点击公众号 2.左键点击公众号图标,然后再点击中间的那个按钮(查看历史消息按钮) 3:点击复制链接地址 4.这样你就得到微信公众号的链接地址了。 ...
  • 在工作中经常遇到公众号的开发,其中公众号的缓存问题是比较恶心人的。 解决办法: 找到 文件传输助手,发送 debugtbs.qq.com ,打开链接,清楚TBS内核,success ...
  • 获取微信公众号二维码接口

    万次阅读 2019-05-14 17:20:49
    地址 https://open.weixin.qq.com/qr/code?username=gh_b10f0123b741 参数为 公众号微信号或原始id
  • android跳转微信指定公众号界面

    万次阅读 2016-12-01 14:41:03
    android跳转微信指定公众号界面注:跳转到微信公众号,首先需要到微信开发平台,绑定对应的公众号String appId = "你的ID";//开发者平台ID IWXAPI api = WXAPIFactory.createWXAPI(getActivity(), appId, false); ...
  • 微信页面不能使用session,不知道如何才能在页面中使用session,请大神不吝赐教!!!!
  • [458]抓取微信公众号(一)

    千次阅读 2020-07-19 22:35:55
    微信文章抓取(1):微信公众号文章抓取常识之临时链接、永久链接 曾经尝试过抓取微信文章的小伙伴,一定很熟悉搜狗微信。搜狗微信是腾讯官方提供的搜索引擎,专门用来搜索微信公众号发表的文章(不包含服务号)。 ...
1 2 3 4 5 ... 20
收藏数 272,079
精华内容 108,831
关键字:

微信公众号