JAVAの微信の小さいプログラム--携帯電話の番号は解読します
4759 ワード
最近、プロジェクトはバックグラウンド+微信ウィジェットを完成しています.バックグラウンドの方面の问题はそんなに大きくなくて、主に小さいプログラムはユーザーの携帯番号に対して解読を行う必要があって、する时确かにいくつかの问题が现れて、微信の公式サイトも関连するファイルをあげて、しかし解読してJAVAのdemoがないようです.多くのブログや関連資料を検索した結果、解読後の携帯電話番号を手に入れたのもラッキーでした.あまり話さないで、直接コードをつけます.
これにより、携帯電話番号(phoneNumber)を直接解析することができ、コード親測定が利用可能になります.
@ResponseBody
@RequestMapping("/loginapp.do")
public DataResponse decodeUser(@RequestParam("encryptedData")String encryptedData,
@RequestParam("iv")String iv,
@RequestParam("code")String code) { //
DataResponse response = new DataResponse();
Map map = new HashMap<>();
//
if (code == null || code.length() == 0) {
/*map.put("status", 0);
map.put("msg", "code ");
return map;*/
response.setResult_code("failed");
response.setResult_msg("code ");
return response;
}
// ( )
String wxspAppid = " appid";
// app secret ( )
String wxspSecret = "" secret";
// ( )
String grant_type = "authorization_code";
// 1、 code session_key openid
//
String params = "appid=" + wxspAppid + "&secret=" + wxspSecret + "&js_code=" + code + "&grant_type=" + grant_type;
//
String sr = HttpRequest.sendGet("https://api.weixin.qq.com/sns/jscode2session", params);
// ( json )
Gson gson = new Gson();
JsonObject json = gson.fromJson(sr, JsonObject.class);
System.out.println(json);
// JSONObject json = JSONObject.fromObject(sr);
if (json.get("session_key") == null) {
/*map.put("status", 0);
map.put("msg", " ");
return map;*/
response.setResult_code("failed");
response.setResult_msg(" :" + json.get("errmsg").toString().replaceAll("\"", ""));
return response;
}
// (session_key)
String session_key = json.get("session_key").toString();
// (openid)
String openid = json.get("openid").toString();
//////////////// 2、 encryptedData AES ////////////////
try {
String result = AesCbcUtil.decrypt(encryptedData, session_key, iv, "UTF-8");
if (null != result && result.length() > 0) {
JsonObject userInfoJSON = gson.fromJson(result, JsonObject.class);
System.out.println("user: " + userInfoJSON);
Map userInfo = new HashMap<>();
userInfo.put("openId", openid.replaceAll("\"", ""));
userInfo.put("phoneNumber", userInfoJSON.get("phoneNumber").toString().replaceAll("\"", ""));
TUser tUser=new TUser();
String telnum=userInfoJSON.get("phoneNumber").toString().replaceAll("\"", "");
tUser.setTelnum(telnum);
String name="";
for(int i=0;i<6;i++){
int intVal=(int)(Math.random()*26+65);
name=name+(char)intVal;
}
TUser uu=tUserService.selectbytelnum(telnum);// ,
if(uu ==null){
tUser.setTest(0);
tUser.setName(name);
tUser.setSex(" ");
tUser.setAge(18);;
tUser.setOpenid(openid);
tUser.setSessionkey(session_key);
tUser.setCreatetime(new Date());
tUserService.insert(tUser);
}
map.put("userInfo", userInfo);
System.out.println("map: " + map);
response.setResult_code("success");
response.setResult_msg(" ");
response.setData(userInfo);
return response;
}
} catch (Exception e) {
e.printStackTrace();
}
response.setResult_code("failed");
response.setResult_msg(" ");
return response;
}
これにより、携帯電話番号(phoneNumber)を直接解析することができ、コード親測定が利用可能になります.