1. 程式人生 > >微信公眾號開發(3)---使用開源組件開發進行接口驗證

微信公眾號開發(3)---使用開源組件開發進行接口驗證

lse getwriter mon res 幫我 完成 app private als

在經過一系列的微信開發後,關於微信的開發確實內容很龐大,一些基礎的組件都要有我們開發者進行編寫,有沒有簡單的方法呢?

哈哈----在開源社區中無意中找到了關於微信全套開發的sdk,裏面包含了微信開發中所有的功能實現,作者是binarywang,也是一直在更新,社區還是挺活躍的。

獻上 github地址: https://github.com/Wechat-Group/weixin-java-tools !裏面有一些開發的文檔,大大便利我們的開發--

技術分享圖片

接口配置(無需我們的工具類,一些驗證已經幫我們進行了實現):

1.導入pom依賴:

<!-- 微信開發Java SDK公共模塊 -->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-common</artifactId>
<version>3.1.0</version>
</dependency>

<!-- 微信公眾號Java SDK-->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>3.1.0</version>
</dependency>

2,微信驗證(只需要創建 WxMpInMemoryConfigStorage--存放配置信息,和 WxMpServiceImpl 兩對象就可完成驗證):

  (1) 我使用spring 將這兩個類進行管理,代碼直接註入就可以  

<!-- 微信相關組件交給spring 管理 -->
	<!-- 微信基礎配置,存放token 秘鑰,我們也可以直接將後臺微信配置放進去 -->
	<bean id="config" class="me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage"></bean>
	<!-- 功能實現的方法 -->
	<bean id="wxMpService" class="me.chanjar.weixin.mp.api.impl.WxMpServiceImpl"></bean>

  (2),註入後直接使用

  @Autowired
    private WxMpInMemoryConfigStorage config;//微信後臺配置
    @Autowired
    private WxMpService wxMpService;//實現方法
    
    /*
     * 該方法與微信後臺配置的url進行對接,是get的請求,是微信開發的第一步
     * 微信後臺會給我們接口傳入signature,timestamp,nonce,echostr
     * 進行sha1 加密與signature比較,TRUE 則返回echostr給微信
     * author:cys
     */
    @RequestMapping(value="/wxopen" ,method=RequestMethod.GET)
    public void wxopen(HttpServletResponse response,String signature,String timestamp,
                    String nonce,String echostr) throws IOException {
        
         response.setContentType("text/html;charset=utf-8");
        //用來存放我們後臺配置的信息
        config.setToken("chenyuesong");
        wxMpService.setWxMpConfigStorage(config);

        //此方法對微信的驗證進行了封裝--我們無需自己實現
        wxMpService.checkSignature(timestamp, nonce, signature);
            @Cleanup//lombok 管理釋放資源,類似於try catch finally,用不上可直接去除
            PrintWriter writer =response.getWriter();
        //驗證返回false時候
         if (!wxMpService.checkSignature(timestamp, nonce, signature)) {
              // 消息簽名不正確,說明不是公眾平臺發過來的消息
                 
             writer.println("非法請求");
              return;
            }
        
         //驗證返回true時候,返回微信echostr
         if (StringUtils.isNotBlank(echostr)) {
              // 說明是一個僅僅用來驗證的請求,回顯echostr
             writer.println(echostr);
              return;
            }
         else {
             return;
         }
    }

微信公眾號開發(3)---使用開源組件開發進行接口驗證