開發
話不多說我們直接進入主題
申請完成之后我們找到開發下的基本配置
然后找到進行基本配置,我們需要一個url地址來驗證,這里的地址必需要是外網,Token是我們任意填寫然后在程序后端填寫一致的token進行驗證
這里的外網地址也就是域名我們一般的同學肯定是沒有的辣,所以我們使用一個叫內網穿透的東東,我們先把網頁停留在這個頁面
我們利用natapp實現內網穿透(個人推薦natapp )
百度natapp:https://natapp.cn/注冊一個賬號下載natapp ,然后點擊購買隧道有免費的
然后我們點擊配置:
綁定域名我們自己任意填寫,地址端口如圖(tomcat端口是多少就是多少,地址為127.0.0.1)
接着在我的隧道里面找到隧道復制authtoken。也就是上面我末尾為e283的,你的只有你能看到
通過在DOS窗口運行natapp -authtoken *******(*******代表你在natapp官網他給你的authtoken)指令得到如下圖,啟動tomcat之后此時我們就可以通過tree.natapp1.cc訪問tomcat80端口了
注意:這里我域名為tree.natapp1.cc,小伙伴們需要根據自己設置的域名來訪問
我們啟動tomcat后能通過自己設置的域名(我的為tree.natapp1.cc)訪問到tomcat的8080端口就說明成功了!
好了,我們開始創建項目;
注意:Wechat 本次需要的jar包有servlet-api.jar(因為我自己開發的過程中沒有這個包是后面導入的所以提醒一下)
首先創建weixinServlet文件(在創建時我們可以修改訪問地址如圖)
我們將URL mapping中的內容選中,然后點擊Edit,改成任意自己想訪問的就行了。
通過微信開發文檔我們知道微信后台會通過GET方式發送signature,timestamp,nonce,echostr。
我們將token,timestamp,nonce進行字典序排序sha1加密后與signature進行對比。
通過則可以進行開發,其中涉及到的sha1加密算法及weixinServlet代碼如下
這些可以在羅召勇老師的視頻中有詳細的講解,鏈接我放在下面。
1 package servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.ServletInputStream; 8 import javax.servlet.ServletOutputStream; 9 import javax.servlet.annotation.WebServlet; 10 import javax.servlet.http.HttpServlet; 11 import javax.servlet.http.HttpServletRequest; 12 import javax.servlet.http.HttpServletResponse; 13 import service.WxService; 14 /** 15 * Servlet implementation class weixinServlet 16 */ 17 @WebServlet("/wx") 18 public class weixinServlet extends HttpServlet { 19 private static final long serialVersionUID = 1L; 20 21 /** 22 * Default constructor. 23 */ 24 public weixinServlet() { 25 // TODO Auto-generated constructor stub 26 } 27 /** 28 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 29 */ 30 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 31 32 String signature=request.getParameter("signature"); 33 String timestamp=request.getParameter("timestamp"); 34 String nonce=request.getParameter("nonce"); 35 String echostr=request.getParameter("echostr"); 36 37 if(WxService.check(timestamp,nonce,signature)) { 38 System.out.println("接入成功"); 39 PrintWriter out=response.getWriter(); 40 out.print(echostr); 41 out.flush(); 42 out.close(); 43 } 44 else { 45 System.out.println("失敗"); 46 } 47 } 48 49 /** 50 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 51 */ 52 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 53 ServletInputStream is=request.getInputStream(); 54 byte[] b=new byte[1024]; 55 int len; 56 StringBuilder sb=new StringBuilder(); 57 while((len=is.read(b))!=-1) { 58 sb.append(new String(b,0,len)); 59 } 60 System.out.println(sb.toString()); 61 } 62 }
WxService.java如下
package service; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; public class WxService { private static final String TOKEN="bestsegho0914"; public static boolean check(String timestamp,String nonce,String signature) { String[] strs=new String[] {TOKEN,timestamp,nonce}; Arrays.sort(strs); String str=strs[0]+strs[1]+strs[2]; String mysig=sha1(str); System.out.println(mysig); System.out.println(signature); return mysig.equals(signature); } private static String sha1(String src) { try { MessageDigest md=MessageDigest.getInstance("sha1"); byte[] digest=md.digest(src.getBytes()); char[] chars= {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; StringBuilder sb=new StringBuilder(); for (byte b:digest) { sb.append(chars[(b>>4)&15]); sb.append(chars[b&15]); } return sb.toString(); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
完成代碼后我們點擊運行 run as ->run on server,在tomcat上啟動
然后回到我們微信公眾號的后台,點擊配置信息的修改按鈕 點擊提交 這里就會顯示配置成功
配置成功如圖
這時我們就可以開始進行公眾號個人開發了。
本人也是初次進行微信的java開發,分享一些我正在看的資料希望能幫到想要學習微信開發的小伙伴們
羅召勇java開發:https://www.bilibili.com/video/av35042298
微信開發幫助文檔:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html
微信公眾號測試號申請入口:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
ps:所有文章用於個人學習,僅代表個人理解。