java微信公衆號開發及源碼分享


java微信公衆號開發源碼下載


剛做完微信公衆號項目,分享一下代碼,經驗!初寫博客,格式寫得不好,還請見諒。有不懂的可以留言或加qq 505281494交流下。

一.

第一步進行服務器接口配置,提交信息後,微信服務器將發送GET請求到填寫的服務器地址URL上,開發者通過檢驗signature對請求進行校驗。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成爲開發者成功,否則接入失敗。加密/校驗流程如下:


1)將token、timestamp、nonce三個參數進行字典序排序

2)將三個參數字符串拼接成一個字符串進行sha1加密

3)開發者獲得加密後的字符串可與signature對比,標識該請求來源於微信

(對應github源碼中的WXCommon.Validate方法,token需在此方法中配置  與填寫一致)

本地調試就需要做端口映射到外網,推薦ngrok,需指定80端口

(微信公衆平臺會通過80端口訪問本機)

如果啓用安全模式 可能遇到的問題:

消息的加解密接口JCE無限制權限策略

java.security.InvalidKeyException:illegalKey Size

異常java.security.InvalidKeyException:illegalKey Size的解決方案:

在官方網站下載JCE無限制權限策略文件,下載對應的jdk版本後解壓,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。如果安裝了JRE,將兩個jar文件放到%JRE_HOME% \lib\security目錄下覆蓋原來的文件,如果安裝了JDK,將兩個jar文件放到%JDK_HOME%\jre\lib\security目錄下覆蓋原來文件。

二:接口配置成功後,微信公衆號接收到的消息和事件推送都會以Xml數據包通過POST請求發送到此接口。如:


詳情見微信開發者文檔。

github中源碼中的工具包(MessageUtil)

parseXMLCrypt方法:安全模式下解析XML消息,然後封裝到一個map中。

ParseXML方法:明文模式下解析XML消息

getTextXmlMessage,getVoiceXmlMessage等方法:獲取文本,聲音回覆的XML格式消息。(回覆消息時需交換接收時XML的ToUserName和FromUserName)。

可根據消息,事件的XML標籤內容不同判斷用戶的操作,然後回覆相應的消息。儘量先回復消息,再處理之後的業務。因爲:


三:接口調用

WXCommonUtil. Getaccess_token:

首先獲得接口調用憑證。有效期:2小時。  存進redis中,設置過期時間。(需要appid和appsecret)

HttpRequestUtil.httpsRequest方法:

/**

        * 發送https請求

        *

        *@param requestUrl 請求地址

        *@param requestMethod 請求方式(GET、POST)

        *@param postStr 提交的數據

        *@return JSONObject(通過JSONObject.get(key)的方式獲取json對象的屬性值)

        */

MyX509TrustManager類:

發送Https請求時的證書信任管理器類,實現了接口X509TrustManager的類。  接口X509TrustManager有下述三個公有的方法需要我們實現:

  ⑴ oid checkClientTrusted(X509Certificate[]chain, String authType)

throws CertificateException

  該方法檢查客戶端的證書,若不信任該證書則拋出異常。由於我們不需要對客戶端進行認證,因此我們只需要執行默認的信任管理器的這個方法。JSSE中,默認的信任管理器類爲TrustManager。

  ⑵ oid checkServerTrusted(X509Certificate[]chain, String authType)

throwsCertificateException

  該方法檢查服務器的證書,若不信任該證書同樣拋出異常。通過自己實現該方法,可以使之信任我們指定的任何證書。在實現該方法時,也可以簡單的不做任何處理,即一個空的函數體,由於不會拋出異常,它就會信任任何證書。

  ⑶ X509Certificate[] getAcceptedIssuers()

返回受信任的X509證書數組。

一些常用的接口:(需用到access_token)

1.    根據openid獲取用戶消息

2.    發送模板消息

3.    自定義菜單

4.    獲取用戶列表

四.微信網頁授權登錄和帶參數的二維碼:

1.授權登錄跳轉網址:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect


獲取code後請求以下鏈接

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

可得到:

帶參數的二維碼:

然後會得到

url則爲二維碼的鏈接地址。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章