微信公众号的后台开发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信公众号的后台开发相关的知识,希望对你有一定的参考价值。

  公司想要做一个微信公众号,经理叫我去研究怎么自动回复信息,自定义菜单。

  弄了几天,功能基本上都实现了,下面就讲讲步骤吧。

  首先当然是需要一个微信公众号啦,没有的话可以先去申请(个人订阅号不支持自定义菜单,这个挺坑的,最后还是拿公司的工作号做的测试)。申请完成后需要进行开发的基本配置。

 

技术分享   

URL需要一个外网能够访问的地址(最好是映射到自己本机方便调试),Token与你程序中定义的token变量需要一致,用于接入微信的接口。

微信服务器转发request数据包含下面信息(在CoreServlet中的doGet方法中处理)

// 微信加密签名

String signature = request.getParameter("signature");

// 时间戳

String timestamp = request.getParameter("timestamp");

// 随机数

String nonce = request.getParameter("nonce");

// 随机字符串

String echostr = request.getParameter("echostr");

String[] arr = new String[] { token, timestamp, nonce };  //此处token为网页上设置的token

   // tokentimestampnonce三个参数进行字典序排序加密后与signature比对,一致时表示请求来自微信服务器

out.print(echostr);

这个时候就接入成功了。

 

在CoreServlet中的doPost方法中处理你要做的操作,也就是自动回复这些

request里面传递的格式是XML,需要进行解析

// 发送方帐号(open_id)  

    String fromUserName = requestMap.get("FromUserName");  

// 公众帐号  

     String toUserName = requestMap.get("ToUserName");  

// 消息类型  

     String msgType = requestMap.get("MsgType");

// 消息内容

     String content= requestMap.get("Content");

// 事件类型  

   String eventType = requestMap.get("Event"); 

可以自己根据需要返回对应的消息,格式也是XML

 

  自定义菜单就稍微麻烦一些

首先要请求这个接口

"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"APPID是开发者帐号,APPSECRET是开发者密码,请求方式是GET

 

返回一个json数组,其中“access_token”是创建自定义菜单的凭证,“expires_in”是过期时间(7200秒) 

 

接着调用下面这个接口(ACCESS_TOKEN是上个接口返回的“access_token”值,请求方式是POST

 

"https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";  

 

我们可以将菜单以json格式通过该接口传递(形式如下)

 

{  

"button":[  

{     

"type":"click",  

"name":"今日歌曲",  

"key":"V1001_TODAY_MUSIC"  

},  

{  

"type":"click",  

"name":"歌手简介",  

"key":"V1001_TODAY_SINGER"  

},  

{  

"name":"菜单",  

"sub_button":[  

{  

"type":"click",  

"name":"hello word",  

"key":"V1001_HELLO_WORLD"  

},  

{  

"type":"click",  

"name":"赞一下我们",  

"key":"V1001_GOOD"  

}]  

}]  

}  

传递成功之后会创建自定义的菜单

// 事件KEY值,与创建自定义菜单时指定的KEY值对应

String eventKey = requestMap.get("EventKey");

获取事件的KEY值,与自己定义的KEY值一致时,表示点击了菜单,可以在CoreServlet类中的doPost方法中进行相应的处理

还有一种菜单是点击之后直接跳转网页的,只是和普通的菜单的json拼装的属性不一样

 

{  "type":"view",  "name":"歌手简介",  "url":"http://www.qq.com/"  }  

type改成“view”类型,url为要访问的路径,没有key属性,点击后自动跳转

 

以上是关于微信公众号的后台开发的主要内容,如果未能解决你的问题,请参考以下文章

PHP开发微信公众号的问题

教你3分钟快速开发微信公众号[订阅号][服务号]

NodeJs 开发微信公众号准备工作

使用koa2开发微信公众号之网页授权

vux+vuex+vue+Es6开发微信公众号的坑

NodeJs 开发微信公众号微信事件交互