java微信学习 接入
現(xiàn)在實習的公司要做微信開發(fā),然而一直沒安排任務,所以一直在看微信接口,記錄下學習的內容
微信開發(fā)肯定要看的就是微信公眾平臺開發(fā)者文檔,上面有每種接口的調用格式,剛開始學習的時候自己申請了一個訂閱號,個人類型的,這個玩玩還可以,學習的話,貌似有點接口沒有權限調用,所以我學習的時候是用的微信測試號,至于測試號的申請,很簡單,在文檔里面,開發(fā)者工具下面就可以看到。
微信開發(fā),第一步,接入指南,看文檔上面的
當然,弄這個之前要有一個服務器,或者就應用放在網(wǎng)上,微信后臺其實和網(wǎng)站開發(fā)后臺差不多
url填寫域名加action的地址,比如說我的一個servlet ,
@WebServlet("/msg") public class TestWeixin extends HttpServlet {那么我的url就應該填寫 域名/msg
token是用來校驗請求是不是微信服務器發(fā)過來的,這里填寫的token就是程序里面用的token,
至于EncodingAESKey 隨機生成,我自己測試接口的時候沒用這個,是以明文形式,真正開發(fā)的時候應該會用這個,我還沒接觸正在的微信開發(fā)。
填寫完提交后,微信服務器會根據(jù)填寫的url發(fā)get請求,帶上4個參數(shù)signature,timestamp,nonce,echostr
參數(shù)的作用,我就抄開發(fā)者文檔的:
signature:微信加密簽名,signature結合了開發(fā)者填寫的token參數(shù)和請求中的timestamp參數(shù)、nonce參數(shù)。
timestamp:時間戳
nonce:隨機數(shù)
echostr:隨機字符串
?
加密/校驗流程如下: 1. 將token、timestamp、nonce三個參數(shù)進行字典序排序 2. 將三個參數(shù)字符串拼接成一個字符串進行sha1加密 3. 開發(fā)者獲得加密后的字符串可與signature對比,標識該請求來源于微信加密后的字符串和signature相等,則返回echostr,此時校驗成功
?
根據(jù)上面的步驟,可以看到,微信服務器是判斷是否校驗成功 是 根據(jù) 是否返回?echostr這個隨機字符串的,
如果不進行校驗,直接把得到的echostr返回給微信服務器也是可以校驗成功的。當然,最好還是進行校驗。
校驗的代碼,就是新建一個servlet
在doGet方法里面進行校驗
@WebServlet("/msg") public class TestWeixin extends HttpServlet {private static final long serialVersionUID = 1L;private String TOKEN = "luolei";/*** @see HttpServlet#HttpServlet()*/public TestWeixin() {super();// TODO Auto-generated constructor stub }/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubString signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");String[] str={TOKEN,timestamp,nonce};Arrays.sort(str);String yanzheng = str[0]+str[1]+str[2];String result = DigestUtils.sha1Hex(yanzheng.getBytes());if(result.equals(signature)){response.getWriter().print(echostr);}}上面的 token換成自己的token
還有DigestUtils.sha1Hex()方法 是commons-codec ?jar包里面的類。可以自己搜索怎么sha1加密,
剛剛說了,可以不進行校驗,doget里面只留:
String echostr = request.getParameter("echostr");
response.getWriter().print(echostr);
這兩行也是可以校驗成功的
?
最后上傳服務器,我是用bae應用引擎,上傳應用,將得到的二級域名+action的key填到url里面,token按照情況自己填寫,就可以了
轉載于:https://www.cnblogs.com/luolei/p/4682647.html
總結
以上是生活随笔為你收集整理的java微信学习 接入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关闭程序
- 下一篇: 【转】linux下tcp测试工具