入门"/>
微信公众号开发基础入门
一、申请一个微信公众号
/
二、接口认证(证明你是一名合法的开发者)
在微信公众平台左侧菜单找到基本配置
开发者ID是注册完就有的,这里要注意的是开发者密码,非常重要,获取密码后,建议保存在文本文档里。还有一个IP白名单是干什么的呢?
开发者访问微信服务器时会携带ID和密码和IP地址,在服务器里IP白名单上的IP地址才允许访问。
点击修改配置
URL是访问地址,借助NATAPP工具获取
/
下载64位ZIP,解压出来运行后出现命令窗口,需输入指令。
先在NATAPP网页上找到免费隧道(需注册)
购买一个免费隧道
在命令窗口中输入 natapp -authtoken=(authtoken下的内容)
成功后显示online,http://…cc即是内网穿透后的地址(付费与免费的区别就是免费的URL每次都是不一样的)。
回到微信公众平台的配置网页,复制地址到URL栏,地址后接controller地址。Token随意取名,随机生成,明文模式。点击提交,提示失败。
打开IDEA新建工程,创建maven项目,因为与controlller交互,所以需要springmvc相关配置文件
1.pom.xml中引入依赖
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.20.RELEASE</version></dependency>
导入springmvc.xml配置文件
web.xml中初始化配置文件
<servlet><servlet-name>oa</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>oa</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
创建controller进行开发者认证
//1.按字典顺序排序TreeSet<String> set = new TreeSet<>();set.add(TOKEN);set.add(timestamp);set.add(nonce);//2.将三个参数拼接成一个字符串StringBuilder builder = new StringBuilder();for(String str:set){builder.append(str);}//3.通过SHA1加密String str = SHA1.encode(builder.toString());if(str.equals(signature)){System.out.println("接入成功");return echostr;}else {System.out.println("接入失败");return "failed";}
返回字符串需加@ResponseBody注解
再次点击提交,提交成功。
三、利用测试号进行测试
点击开发者工具,选择开发平台测试账号,微信扫码即可。
四、接收并回复用户发送的消息
//接收用户发送过来的信息(xml)@PostMapping(value="auth",produces = "text/xml;charset=utf-8")@ResponseBodypublic String receive(@RequestBody String strXml) throws DocumentException {System.out.println(strXml);//1.接收消息//sax dom dom4j//把xml数据变成document对象Document document = DocumentHelper.parseText(strXml);//得到根节点Element rootElement = document.getRootElement();//得到节点对象Element toUserNameElement = rootElement.element("ToUserName");Element fromUserNameElement = rootElement.element("FromUserName");//得到消息类型对象Element msgTypeElement = rootElement.element("MsgType");//得到节点中的数据String userNameText = toUserNameElement.getText();String fromUserNameElementText = fromUserNameElement.getText();String msgTypeElementText = msgTypeElement.getText();if("event".equals(msgTypeElementText)){Element eventElement = rootElement.element("Event");String eventType = eventElement.getText();if("subscribe".equals(eventType)){//关注return newsMessage(fromUserNameElementText,userNameText);}else {//取消关注System.out.println("取消了关注");return null;}}//2.回复消息Element contentElement = rootElement.element("Content");String contentElementText = contentElement.getText();String responseText = contentElementText+"hh";StringBuilder builder = new StringBuilder();builder.append("<xml>");builder.append("<ToUserName><![CDATA["+fromUserNameElementText+"]]></ToUserName>");builder.append("<FromUserName><![CDATA["+userNameText+"]]></FromUserName>");builder.append("<CreateTime>"+System.currentTimeMillis()+"</CreateTime>");builder.append("<MsgType><![CDATA[text]]></MsgType>");builder.append("<Content><![CDATA["+responseText+"]]></Content>");builder.append("</xml>");System.out.println(builder.toString());return builder.toString();
更多推荐
微信公众号开发基础入门
发布评论