微信公衆號,接口服務配置url驗證失敗的爲題

這段時間研究微信公衆號,發現了很多坑,現在貼出來做個記錄

1、微信公衆號在做開發的時候,首先就是對微信的服務接口的配置。讓微信能夠響應我們的接口。官方的接口文檔吧可以這麼說,你懂的或者瞭解他了吧可以說簡單些,但是當你剛接觸的時候,你會感覺寫的是啥啊,壓根看不懂。

好了步入正題

首先接口配置,這個就不多說了,圖上標的很清楚

這個配置好了就是後臺接收微信的 驗證參數了先來看看微信對這個接口的說明吧

就四個參數,你需要對這幾個參數進行加解密啊等操作,然後確認是不是微信發送來的請求,完事後,看到圖片上標紅的地方了吧,原樣返回。

1、什麼是原樣返回,我接收的string類型,那麼我這個接口返回spring類型就ok了,但是問題來了 驗證token是吧

2、繼續懷疑微信發來的參數都是加密的,需不需要給他解密下返回原來樣子了(猜想,但是我明顯勾選的的是明文啊),還是token驗證失敗

3、換個思路,是不是我這就return這種echostr不對了。那就像原來最老的那種返回,咱們把參數直接write到response裏面

上圖

@GetMapping("/welcome")
  public void checkName(@RequestParam(name = "signature") String signature,
                        @RequestParam(name = "timestamp") String timestamp,
                        @RequestParam(name = "nonce") String nonce,
                        @RequestParam(name = "echostr") String echostr,
                        HttpServletResponse response) throws IOException, AesException {
      System.out.println("-----------------------開始校驗------------------------");
      //排序
      String sortString = CheckoutUntil.sort(TOKEN, timestamp, nonce);
      //加密
      String myString = CheckoutUntil.sha1(sortString);
      //校驗
      if (myString != null && myString != "" && myString.equals(signature)) {
          System.out.println("簽名校驗通過");
          //如果檢驗成功原樣返回echostr,微信服務器接收到此輸出,纔會確認檢驗完成。
          PrintWriter out = null;
          try {
              out = response.getWriter();
              // 通過檢驗signature對請求進行校驗,若校驗成功則原樣返回echostr,否則接入失敗
              out.print(echostr);
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              out.close();
          }
      }

這樣返回,發現驗證成功了。

網上的說法五法八門的,有的說是要返回xml文本,有的說返回的格式不對,還有的說返回的編碼格式不對。最好這種直接寫的方法我是配置成功了。後來有人問我爲啥一直配置失敗,我把我的這個給他,反正他也成功了,記錄下。你要成功了點個贊吧哈哈哈 

 

 

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