一、微信开发介绍
1.微信分为个人号,订阅号、服务号,需要去理解三个号的区别,对于开发来说也需要了解不同的账号所提供的功能
2.微信号需要审批,审批之后有一些功能才能使用
3.微信提供的功能及使用情况登陆http://mp.weixin.qq.com,通过左侧菜单“/开发/接口权限”查看
4.更多关于微信开发的信息,不是本文介绍的内容,此处指提出使用netsharp.weixin的要求
二、netsharp微信开发配置
netsharp平台可以支持多个微信公众号,具体配置如下列表和明细图,一些字段的意思保持和微信开发者一直便于理解
1.列表
2.表单
3.微信开发和netsharp的绑定
mp.weixin.qq.com下面当启用二次开发的时候,需要配置开发者的微信接收的地址,形如
http://host/wx?oid=gh_befcc6d4c40d
其中oid参数是微信的originalId
4.netsharp微信开发服务器接收代码
1 package org.netsharp.servlet; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.annotation.WebServlet; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpServletResponse; 11 12 import org.apache.commons.logging.Log; 13 import org.apache.commons.logging.LogFactory; 14 import org.netsharp.wx.mp.message.WeixinMessageDispatcher; 15 import org.netsharp.wx.mp.sdk.WeixinRequestParameters; 16 17 @WebServlet(name = "weixin", urlPatterns = "/wx") 18 public class WeixinServlet extends HttpServlet { 19 20 private static final long serialVersionUID = 1L; 21 private static Log logger = LogFactory.getLog("weixin." + WeixinServlet.class.getSimpleName()); 22 23 public WeixinServlet() { 24 super(); 25 } 26 27 // http://121.40.86.55/wx?oid=gh_befcc6d4c40d 28 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 29 30 response.setCharacterEncoding("utf-8"); 31 32 logger.error("微信开发者配置验证开始"); 33 34 response.getWriter().write(""); 35 36 WeixinRequestParameters par = this.getWeixinParameter(request); 37 38 try { 39 WeixinMessageDispatcher mc = new WeixinMessageDispatcher(); 40 mc.validate(par); 41 response.getWriter().write(par.Echostr); 42 } catch (Exception ex) { 43 logger.error("servlet 微信get异常", ex); 44 } 45 46 logger.error("微信开发者配置验证结束"); 47 } 48 49 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 50 51 response.setCharacterEncoding("utf-8"); 52 53 response.getWriter().write(""); 54 55 WeixinRequestParameters par = this.getWeixinParameter(request); 56 InputStream stream = request.getInputStream(); 57 // String xml = FileManager.read(stream); 58 // logger.error("[收到微信消息]:" + xml); 59 60 try { 61 WeixinMessageDispatcher mc = new WeixinMessageDispatcher(); 62 String content = mc.processRequest(par, stream); 63 64 logger.error("[回复消息]:" + content); 65 66 response.getWriter().write(content); 67 } catch (Exception ex) { 68 logger.error("servlet 微信post异常", ex); 69 } 70 } 71 72 private WeixinRequestParameters getWeixinParameter(HttpServletRequest request) { 73 74 WeixinRequestParameters par = new WeixinRequestParameters(); 75 { 76 par.Signature = request.getParameter("signature"); 77 par.Timestamp = request.getParameter("timestamp"); 78 par.Nonce = request.getParameter("nonce"); 79 par.Echostr = request.getParameter("echostr"); 80 par.Oid = request.getParameter("oid"); 81 } 82 83 logger.error(par.toString()); 84 85 return par; 86 } 87 }
三、Netsharp微信其他配置
1.菜单配置
微信启动二次开发了之后,菜单则需要通过接口创建,netsharp进行了封装并且提供了工具,菜单设置好以后在列表上点击“同步"按钮即可
重新生成菜单之后,开发者要及时看到菜单的最新设置,需要取消重新关注
现在netsharp的菜单还不能处理父子关系的菜单,但是数据库可以修改parent_id来修改其关系,界面会自动显示树状关系
2.文字及图文关注
3.微信回复和关注处理配置
文字和图文的回复是一种特殊的回复,微信的二次开发有大量的消息、关注的处理,这些处理除了js端,服务端都是可以配置的
netsharp提供了一些默认配置,
四、Netsharp微信框架介绍
本文之前主要介绍的是netsharp下的配置和管理功能,下面主要介绍Netsharp微信框架的技术部分