最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot獲取微信JSDK簽名信息的實現示例

 更新時間:2023年11月27日 14:43:30   作者:sccd2009  
本文介紹了如何在Spring Boot應用中獲取微信JSDK的簽名信息,包括獲取接口URL、參數設置、簽名算法和獲取簽名結果的步驟,具有一定的參考價值,感興趣的可以了解一下

目標

現實項目的需要,需要獲取微信jssdk簽名信息

步驟

1.  初始化配置信息

public Map initJSSDKConfigInfo(String shareUrl) throws Exception {
        //String accessToken = this.getAccessToken();
        String jsapiTicket = this.getJsApiTicket();
        String timestamp = Long.toString(System.currentTimeMillis() / 1000);
        String nonceStr = UUID.randomUUID().toString();
        String signature = this.buildJSSDKSignature(jsapiTicket,timestamp,nonceStr,shareUrl);

        Map<String,String> map = new HashMap<String,String>();
        map.put("shareUrl", shareUrl);
        map.put("jsapi_ticket", jsapiTicket);
        map.put("nonceStr", nonceStr);
        map.put("timestamp", timestamp);
        map.put("signature", signature);
        map.put("appid", WeChatConfig.appId);
        return map;
    }

2. ticket信息獲取

private String getJsApiTicket() {
        String jsApiTicket =redisCache.getCacheObject(JS_API_TICKET);
        if (!StrUtil.isNotEmpty(jsApiTicket)){
            //獲取全局的access_token,唯一票據
            String accessToken = redisCache.getCacheObject(ACCESS_TOKEN_KEY);
            //log.info("getJsApiTicket"+accessToken);
            if (StringUtils.isNotBlank(accessToken)) {
                //獲取jsapi_ticket
                String url = WeChatConfig.getTicketUrl+"access_token="+accessToken+"&type=jsapi";
                HttpHeaders headers = new HttpHeaders();
                headers.setContentType(MediaType.APPLICATION_JSON);
                //請求
                RestTemplate restTemplate = new RestTemplate();
                HttpEntity<String> request = new HttpEntity<>(headers);
                ResponseEntity<String> responseString = restTemplate.postForEntity(url, request, String.class);
                JSONObject json = JSONObject.parseObject(responseString.getBody());
                jsApiTicket = json.getString("ticket");
                redisCache.setCacheObject(JS_API_TICKET, jsApiTicket, 115, TimeUnit.MINUTES);
            }else {
                //access為空打印
                log.info("accessToken","重新獲取");
                this.creatAccessToken();
                accessToken = redisCache.getCacheObject(ACCESS_TOKEN_KEY);
                String url = WeChatConfig.getTicketUrl+"access_token="+accessToken+"&type=jsapi";
                HttpHeaders headers = new HttpHeaders();
                headers.setContentType(MediaType.APPLICATION_JSON);
                //請求
                RestTemplate restTemplate = new RestTemplate();
                HttpEntity<String> request = new HttpEntity<>(headers);
                ResponseEntity<String> responseString = restTemplate.postForEntity(url, request, String.class);
                JSONObject json = JSONObject.parseObject(responseString.getBody());
                jsApiTicket = json.getString("ticket");
                redisCache.setCacheObject(JS_API_TICKET, jsApiTicket, 115, TimeUnit.MINUTES);

            }
        }
        log.info("getJsApiTicket jsApiTicket: {}", jsApiTicket);
        return jsApiTicket.trim();
    }

3. 信息處理封裝

public static String buildJSSDKSignature(String ticket,String timestamp,String nonceStr ,String url) throws Exception {

        String orderedString = "jsapi_ticket=" + ticket
                + "&noncestr=" + nonceStr + "&timestamp=" + timestamp
                + "&url=" + url;
        return sha1(orderedString);
    }
    public static String sha1(String orderedString) throws Exception {
        String ciphertext = null;
        MessageDigest md = MessageDigest.getInstance("SHA-1");
        byte[] digest = md.digest(orderedString.getBytes());
        ciphertext = byteToStr(digest);
        return ciphertext.toLowerCase();
    }
    private static String byteToStr(byte[] byteArray) {
        String strDigest = "";
        for (int i = 0; i < byteArray.length; i++) {
            strDigest += byteToHexStr(byteArray[i]);
        }
        return strDigest;
    }
    private static String byteToHexStr(byte mByte) {
        char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
        char[] tempArr = new char[2];
        tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
        tempArr[1] = Digit[mByte & 0X0F];

        String s = new String(tempArr);
        return s;
    }

到此這篇關于springboot獲取微信JSDK簽名信息的實現示例的文章就介紹到這了,更多相關springboot獲取微信JSDK簽名信息內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • IntelliJ?IDEA導出WAR包詳細過程

    IntelliJ?IDEA導出WAR包詳細過程

    這篇文章主要介紹了IntelliJ?IDEA導出WAR包全指南,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2026-01-01
  • SpringCloud?Nacos服務分級存儲模型詳解

    SpringCloud?Nacos服務分級存儲模型詳解

    Nacos服務分級存儲模型是Nacos存儲服務注冊信息和配置信息的核心模型之一,本文將對?Nacos?服務分級存儲模型進行深入解析,感興趣的朋友一起看看吧
    2024-02-02
  • java實現簡易聊天功能

    java實現簡易聊天功能

    這篇文章主要為大家詳細介紹了java實現簡易聊天功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 淺談Java對象禁止使用基本類型

    淺談Java對象禁止使用基本類型

    本文主要介紹了淺談Java對象禁止使用基本類型,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Activiti常用類簡介

    Activiti常用類簡介

    這篇文章主要介紹了Activiti常用類,需要的朋友可以參考下
    2014-08-08
  • Java中使用JavaMail多發(fā)郵件及郵件的驗證和附件實現

    Java中使用JavaMail多發(fā)郵件及郵件的驗證和附件實現

    這篇文章主要介紹了Java中使用Java Mail多發(fā)郵件及郵件的驗證和附件實現,包括在郵件中加入圖片等功能的實現講解,需要的朋友可以參考下
    2016-02-02
  • spring AOP自定義注解方式實現日志管理的實例講解

    spring AOP自定義注解方式實現日志管理的實例講解

    下面小編就為大家分享一篇spring AOP自定義注解方式實現日志管理的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • java中文轉全拼工具類分享

    java中文轉全拼工具類分享

    這篇文章主要介紹了一個JAVA將漢字轉換為全拼的工具類,大參考使用吧
    2014-01-01
  • springboot + rabbitmq 如何實現消息確認機制(踩坑經驗)

    springboot + rabbitmq 如何實現消息確認機制(踩坑經驗)

    這篇文章主要介紹了springboot + rabbitmq 如何實現消息確認機制,本文給大家分享小編實際開發(fā)中的一點踩坑經驗,內容簡單易懂,需要的朋友可以參考下
    2020-07-07
  • Java中怎樣使用JSON進行文件解析

    Java中怎樣使用JSON進行文件解析

    這篇文章主要介紹了Java中怎樣使用JSON進行文件解析問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評論

吉林市| 肇州县| 从化市| 万载县| 舒城县| 新民市| 集贤县| 桃园市| 石阡县| 青浦区| 宁阳县| 会昌县| 南投市| 山丹县| 宜昌市| 淳化县| 孝义市| 米易县| 卓资县| 湖南省| 台中县| 峨眉山市| 乐业县| 永和县| 三台县| 富民县| 吐鲁番市| 颍上县| 南部县| 双峰县| 将乐县| 东海县| 抚顺市| 许昌市| 焦作市| 正定县| 安平县| 桑植县| 宝丰县| 游戏| 镇雄县|