微信公众号开发
第二章 创建菜单
1.字定义回复主菜单:
1.回复文本消息:
2.回复单图文消息:
3.回复多图文消息:
4.回复单图片和回复音频:
2.Java后台处理逻辑:
/** * 后台返回给微信 */ @Override 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"); String message = null; //根据msgType判断消息类型 if(MessageUtil.MESSAGE_EVENT.equals(msgType)){ //事件推送 String eventType = map.get("Event");//获取事件推送中的具体事件类型 if(MessageUtil.MESSAGE_SUBSCRIBE.equals(eventType)){ //关注 message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.menuText());//关注推送 }else if(MessageUtil.MESSAGE_CLICK.equals(eventType)){ //click按钮点击回复 message = MessageUtil.initNewsMessage(toUserName, fromUserName); }else if(MessageUtil.MESSAGE_VIEW.equals(eventType)){ //view类型按钮 String url = map.get("EventKey");//得到url //message = MessageUtil.initText(toUserName, fromUserName, url);//回复一个url }else if(MessageUtil.MESSAGE_SCANCODE.equals(eventType)){ //扫码类型按钮 String key = map.get("EventKey"); //message = MessageUtil.initText(toUserName, fromUserName, key);//回复一个key值 } System.out.println(message); out.print(message); }else if(MessageUtil.MESSAGE_LOCATION.equals(msgType)){ //地理位置回复 String label = map.get("Label"); message = MessageUtil.initText(toUserName, fromUserName, label);//回复一个地理位置 System.out.println(message); out.print(message); } } catch (DocumentException e) { e.printStackTrace(); }finally{ out.close(); } }
以上几章基本上涵盖了微信公众号几个常用的模块,都是demo的形式展现出来,实际项目需要的话可以在此基础上修改完善。
码字不易,还请诸位看官多多赐教啊。。