微信企業公衆號開發之回調模式

這幾天申請了一個企業公衆號玩一玩。當咱們想在基於微信平臺再次開發時,首先須要解決的是開啓開發者模式。php

1.怎樣申請企業公衆號,請見相關參考文獻,網上有不少。html

2.進入開啓企業公衆號開發者模式時,首先要開啓回調模式。java

3.在開啓回調模式時,咱們先要在應用中心建立一個應用中心。python

 
 
4.點擊回調模式
 
 
五、驗證本身的URL是否可以接受微信服務器的消息(保證本身有一個能夠公網訪問的服務器)
 
六、關鍵是驗證代碼:本文是以java 項目來實現的,PHP項目的網上有不少,相對來講也很簡單。
 
七、建立一個web 項目
 

8.當你開啓應用的回調模式時,企業號會要求你填寫應用的URL、Token、EncodingAESKey三個參數。   URL是企業應用接收企業號推送請求的訪問協議和地址,支持http或https協議。   Token可由企業任意填寫,用於生成簽名。EncodingAESKey用於消息體的加密,是AES密鑰的Base64編碼。驗證URL、Token以及加密的詳細處理請參考後續'接收消息時的加解密處理'的章節。企業能夠直接使用微信提供的庫進行加解密的處理,目前提供的有c++/python/php/java/c#等語言版本。代碼提供瞭解密、加密、驗證URL三個接口,可根據自身須要下載 (參見附錄的加解密庫下載)。項目中的com.qq.weixin.mp.aes中的.java文件就是從官方下載。c++

而後本身再編寫一個servlet來接受微信服務器回調時調用的GET方法。項目中是CoreServlet.java。它的GET方法以下:web

 1 public void doGet(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3 
 4         // 設置編碼
 5         response.setContentType("text/html;charset=utf-8");
 6         // response.setCharacterEncoding("utf-8");
 7         request.setCharacterEncoding("utf-8");
 8 
 9         // 企業號的基本信息,配置時填寫
10         String sToken = "weixin";
11         String sCorpID = "sCorpID";
12         String sEncodingAESKey = "sEnCodingAESKey";
13 
14         try
15         {
16             WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey,
17                     sCorpID);
18 
19             // 解析出url上的參數值以下:
20 
21             String sVerifyMsgSig = URLDecoder.decode(
22                     request.getParameter("msg_signature"), "utf-8");
23             String sVerifyTimeStamp = URLDecoder.decode(
24                     request.getParameter("timestamp"), "utf-8");
25             String sVerifyNonce = URLDecoder.decode(
26                     request.getParameter("nonce"), "utf-8");
27             String sVerifyEchoStr = URLDecoder.decode(
28                     request.getParameter("echostr"), "utf-8");
29 
30             // String sVerifyMsgSig =
31             // "5c45ff5e21c57e6ad56bac8758b79b1d9ac89fd3";
32             // String sVerifyTimeStamp = "1409659589";
33             // String sVerifyNonce = "263014780";
34             // String sVerifyEchoStr =
35             // "P9nAzCzyDtyTWESHep1vC5X9xho/qYX3Zpb4yKa9SKld1DsH3Iyt3tP3zNdtp+4RPcs8TgAE7OaBO+FZXvnaqQ==";
36 
37             PrintWriter out = response.getWriter();
38             String sEchoStr; // 須要返回的明文
39             try
40             {
41                 sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp,
42                         sVerifyNonce, sVerifyEchoStr);
43                 System.out.println("verifyurl echostr: " + sEchoStr);
44                 // 驗證URL成功,將sEchoStr返回
45                 out.print(sEchoStr);
46                 out.close();
47                 out = null;
48             }
49             catch (Exception e)
50             {
51                 e.printStackTrace();
52             }
53 
54         }
55         catch (AesException e1)
56         {
57             e1.printStackTrace();
58         }
59     }

注意:代碼中的sCorpID是你本身企業的sCorpID,sEncodingAESKey和你在輸入驗證URL時的sEncodingAESKey保持一致。c#

完成以上步驟,而後打成war部署到雲服務器上,這樣基本就能夠了。windows

總結下本身在驗證時出現的問題:tomcat

一、myeclipse編譯器的jdk和tomcat服務器的jdk不一樣,致使項目不能在本地服務器跑Windows=>preference=>Java=>Compiler / windows=>preference=>myeclipse=>servers服務器

 

二、特別注意的是:jdk版本必須是1.6及以上;須要替換JCE無限制權限策略文件,JDK7的下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html下載後解壓,能夠看到local_policy.jar和US_export_policy.jar以及readme.txt。若是安裝了JRE,將兩個jar文件放到%JRE_HOME%\lib\security目錄下覆蓋原來的文件,若是安裝了JDK,將兩個jar文件放到%JDK_HOME%\jre\lib\security目錄下覆蓋原來文件。這裏我耽擱了比較久。

相關文章
相關標籤/搜索