1. 程式人生 > >小程式獲取微信使用者繫結的手機號

小程式獲取微信使用者繫結的手機號

/**      * 獲取微信繫結的手機號碼      * @param encryptedData       * @param vi      * @param sessionKey      * @param mbId      * @return      * @throws Exception      * 說明:encryptedData和vi 前端呼叫XXX返回      * sessionKey:在getOpenId多返回一個session_key      *     (https://api.weixin.qq.com/sns/jscode2session?appid="+appId+"&secret="+secret+"&js_code=" + jsCode + "&grant_type=authorization_code)      */     @RequestMapping("/m/getWxbindPhone")     @ResponseBody     public Map<String, Object> getWxPhone(String encryptedData,String vi,String sessionKey,Integer mbId)throws Exception{         Map<String, Object> res = new HashMap<String, Object>();         String code = MConstants.SUCCESS;         String msg = MConstants.SUCCESS_TXT; //        通過解密演算法將使用者的手機號解析出來。         byte[] encrypData = Base64.decodeBase64(encryptedData);         byte[] ivData = Base64.decodeBase64(vi);         byte[] session = Base64.decodeBase64(sessionKey);         AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivData);         Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");         SecretKeySpec keySpec = new SecretKeySpec(session, "AES");         cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);         String json = new String(cipher.doFinal(encrypData),"UTF-8");         Gson gson = new Gson();

//        Map<String, Object> object = gson.fromJson(json, Map.class);         res.put("phone", object);         res.put("code", code);         res.put("msg", msg);                  return res;     }