Java - 微信公众号 - 带领小白步入微信大门
1、开发准备
(1)获取微信的测试账号:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

(2)填写的URL当然不能使用IP,这时候就需要去Ngrok中映射一个域名,当然,自己要是有域名那就更好。(建议:使用Ngrok的话,最好直接花个10块大洋买个,那样会更稳定,不然有时候会好好的接不上了,那就不晓得去哪里找错了,自己看着办吧)
本机使用的话,本地端口那块直接127.0.0.1:8080就OK。
2、开发接入
(1)使用Controller来接入
@Controller @RequestMapping("/wxdemo") public class DemoController { private static final String appid = "填写你相对应的appid"; @RequestMapping(value = "/getMsg", method = RequestMethod.GET) public void getMsg(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); String signature = req.getParameter("signature"); String timestamp = req.getParameter("timestamp"); String nonce = req.getParameter("nonce"); String echostr = req.getParameter("echostr"); if(CheckUtil.checkSignature(signature, timestamp, nonce)){ //如果校验成功,将得到的随机字符串原路返回 resp.getWriter().write(echostr); } } }
public class CheckUtil { //配置微信公众号时填写的Token private static final String token = "iysbd55iwp2z3geood4mj4apwzut5e2t"; public static boolean checkSignature(String signature, String timestamp, String nonce) { // 拼接字符串 String[] arr = new String[] { token, timestamp, nonce }; // 排序 Arrays.sort(arr); // 生成字符串 StringBuffer content = new StringBuffer(); for (int i = 0; i < arr.length; i++) { content.append(arr[i]); } // SHA1加密 String tmp = DecriptUtil.SHA1(content.toString()); return tmp.equals(signature); } }
public class DecriptUtil { public static String SHA1(String decript) { try { MessageDigest digest = java.security.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 ""; } }
配置完接口信息后点击“提交”:

---------->>> 注:如果域名使用的是免费的,可能会出现配置失败的情况,域名服务器太慢,你可以多点几次提交。。。

controller接入完毕!!!
(2)使用Servlet来接入(其实Servlet和Controller都是一样的)
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); String signature = req.getParameter("signature"); String timestamp = req.getParameter("timestamp"); String nonce = req.getParameter("nonce"); String echostr = req.getParameter("echostr"); if(CheckUtil.checkSignature(signature, timestamp, nonce)){ //如果校验成功,将得到的随机字符串原路返回 resp.getWriter().write(echostr); } }
以上就是本人对Java接入公众号的总结,希望对大家能够有帮助!!!(第一次写博客,写的不好还望海涵 -_-)
浙公网安备 33010602011771号