午夜国产福利一区二区三区_日韩激情无码不卡_视频二区一区在线_a国产在线∨的不卡视频_人妻无码久久一二三区免费_午夜毛片不卡免費觀看視頻_日韩高清无码专区_中国一级黄色录像片_亚洲韩国在线视频_丰满少妇伦精品无码专区在线观看

您所在的位置: 首頁>關(guān)于我們>公司動態(tài)>建站知識>微信公眾號開發(fā)并沒有那么難

微信公眾號開發(fā)并沒有那么難

發(fā)表于:2019-09-10 閱讀:7051 關(guān)鍵詞: 微信公眾號開發(fā) 公眾號開發(fā)

  微信公眾號開發(fā)需要很多前期需要準備的東西,如一臺服務(wù)器,以及對應(yīng)的域名、備案等問題。在完成這一切之后,開始準備微信公眾號的開發(fā)。


微信開發(fā)前期準備


  首先,需要進行微信開發(fā)者驗證。填寫完頁面上的服務(wù)器配置項。

微信開發(fā)者驗證


  url為在服務(wù)器上對應(yīng)的接口,微信接入只支持80端口和443端口,此時可以使用nginx將服務(wù)反向代理到這些端口。Token是一個固定的字符串,這個字符串是在接下來的字典排序中所用到的。EncodingAESKey是一個密鑰。使用這個密鑰可以使用AES算法將微信服務(wù)器傳給自己的服務(wù)器的消息進行解密。

  寫接口這一步比較簡單,通過實現(xiàn)一個接口,將nonce、timestamp、Token進行字典排序并完成SHA1哈希加密算法后與服務(wù)器端signature相同,此時原樣返回加密字符串echostr。


public String validate(String signature,String timestamp,String nonce,String echostr){

        logger.info("獲取到的signature:"+signature);

        logger.info("獲取到的timestamp:"+timestamp);

        logger.info("獲取到的nonce:"+nonce);

        logger.info("獲取到的echoStr:"+echostr);

        logger.info("獲取到的token:"+token);

        //1. 將token、timestamp、nonce三個參數(shù)進行字典序排序

        String[] arr = {timestamp,nonce,token};

        Arrays.sort(arr);

        //2. 將三個參數(shù)字符串拼接成一個字符串進行sha1加密

        StringBuilder sb = new StringBuilder();

        for (String temp : arr) {

            sb.append(temp);

        }

        Log log = new Log();

        //3. 開發(fā)者獲得加密后的字符串可與signature對比,標識該請求來源于微信

        try {

            String sign = SHA1Utils.getSha(sb.toString());

            logger.info("自己生產(chǎn)的sign:"+sign);

            if(sign.equals(signature)){

                //接入成功

                log.setLogContent("接入微信接口成功");

                log.setType("access_verification");

                logger.info("接入微信接口成功");

                return echostr;

            }

        } catch (Exception e) {

            logger.error("接入失敗",e);

        }

        //接入失敗

        return null;

    }


  其中,signature為服務(wù)器加密之后的哈希串,timestamp為服務(wù)器進行哈希加密時的時間戳,nonce為一個最長10位的隨機數(shù),echostr為加密字符串。

  此處的Token與accessToken不同。

  實現(xiàn)加密算法后,可以獲得微信公眾平臺頒發(fā)的appId和APPSecret。APPSecret只展示一次,如果忘記,只能進行重置操作,比較繁瑣。建議加到服務(wù)的配置文件中。此外,還需要配置accessToken白名單。只能使用該白名單的IP來獲取accessToken。如果白名單為空,則無法獲取accessToken。

  獲取accessToken時,使用GET方法請求接口,如下所示:


https請求方式: GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET


  獲取到的返回值如下所示:


{"access_token":"ACCESS_TOKEN","expires_in":7200}


  accessToken即為token值,expires_in為accessToken的過期時間。accessToken每天只能獲取2000次,每次獲取的token在7200秒內(nèi)均可使用。所以,為了避免頻繁調(diào)用accessToken,將token值存入redis中,設(shè)置對應(yīng)的7200秒過期。如果redis中的token過期,再調(diào)用接口獲取accessToekn。