开启公众号开发者模式

来源:互联网 发布:瑞典街上帅哥知乎 编辑:程序博客网 时间:2024/04/20 09:09

第一步:必须拥有自己的服务器,有外网ip,域名要不要无所谓,像一些云服务器什么的都有免费体验的活动,可以去试一试;

第二步:登录自己公众号管理后台,如下图:


第三步:编写java代码,处理微信验证请求,这里的端口必须使用80端口,我设置的请求路径为http://ip/wechat

这里我简单地使用了Servlet,代码如下:

//微信验证默认走的get方法,下面几个参数是微信验证是传过来的
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println("进入了验证");// 微信加密签名String signature = request.getParameter("signature");// 随机字符串String echostr = request.getParameter("echostr");// 时间戳String timestamp = request.getParameter("timestamp");// 随机数String nonce = request.getParameter("nonce");String bigStr = WxUtils.sort(TOKEN, timestamp, nonce);// SHA1加密String digest = WxUtils.SHA1(bigStr);// 确认请求来至微信if (digest.equals(signature)) {   response.getWriter().print(echostr);}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");PrintWriter printWriter;System.out.println("进入聊天");//进入聊天printWriter=response.getWriter();// 接收消息并返回消息        // 调用核心服务类接收处理请求        String respXml = CoreService.processRequest(request);        System.out.println("最终xml:"+respXml);        printWriter.print(respXml);        printWriter.flush();        printWriter.close();}
其中用到的加密类也一起贴出来

public class WxUtils {/*** @Description: 排序方法* @author Mr.chen* @date 2017-3-7 下午01:31:28 */public static String sort(String token, String timestamp, String nonce) { String[] strArray = { token, timestamp, nonce }; Arrays.sort(strArray);   StringBuilder sbuilder = new StringBuilder(); for (String str : strArray) {  sbuilder.append(str); }   return sbuilder.toString();}/*** @Description: 加密* @author Mr.chen* @date 2017-3-7 下午01:31:40 */public static String SHA1(String decript) {try {   MessageDigest digest = MessageDigest.getInstance("SHA-1");   digest.update(decript.getBytes());   byte messageDigest[] = digest.digest();   // Create Hex String   StringBuffer hexString = new StringBuffer();   // 字节数组转换为 十六进制 数   for (int i = 0; i < messageDigest.length; i++) {    String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);    if (shaHex.length() < 2) {     hexString.append(0);    }    hexString.append(shaHex);   }   return hexString.toString();    } catch (NoSuchAlgorithmException e) {   e.printStackTrace();  }  return ""; }}

下面是web.xml配置

<welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>    <servlet>    <servlet-name>Start</servlet-name>    <servlet-class>cy.wx.servlevt.WeChatApi</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>Start</servlet-name>    <url-pattern>/wechat</url-pattern>  </servlet-mapping>

代码弄完以后,就只剩下将代码编译放到服务器上面了,我这里用的是tomcat,将tomcat默认的8080端口改为80,启动tomcat后就可以在微信公众号后台点击验证按钮验证了,快去试试吧。。。。。。。。。。。。。。


0 0