Controller
code:微信上获取的code
/*
* 获取小程序用户手机号
*/
@ResponseBody
@ApiOperation(value = "获取小程序用户基本信息(手机号)", httpMethod = "POST")
@RequestMapping(value = "/code2Session", method = RequestMethod.POST)
@ApiImplicitParams({
@ApiImplicitParam(paramType = "query", name = "code", dataType = "String", value = "微信的 code", required = true),
@ApiImplicitParam(paramType = "query", name = "openid", dataType = "String", value = "微信的 openid", required = true),
})
public Result code2Session(String code) throws Exception {
return appUserService.code2Session(code);
}
Serviceimpl
@Override
public Result code2Session(String code) throws ValidationException, IOException {
String phone = getPhone(code);
if(!StringUtil.isEmpty(phone)){
int size = selectList(ParamsBuilder.buildParam("phone", phone)).size();
if(size==0){
AppUser appUser=new AppUser();
appUser.setCheckStatus(0);
appUser.setPhone(phone);
Integer insert = insert(appUser);
return Result.success(phone);
}
return Result.success(phone);
}else{
return Result.error("登录失败未获取手机号!");
}
}
public String getPhone(String code) throws ValidationException, IOException {
final String appID="wx4400001214bccqwqw9ewea23e";
final String appSecret="155934cf45c98ds8e6488ff121212";
//使用appid和密钥获取access_token
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appID + "&secret=" + appSecret;
JSONObject jsonObject = HttpUtil.doGetJson(url);
//使用access_token和code获取手机号
String url1 = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + jsonObject.getString("access_token");
JSONObject data = new JSONObject();
data.put("code", code);
JSONObject jsonObject1 = HttpUtil.DO_POST(url1,data);
JSONObject phone_info = (JSONObject) jsonObject1.get("phone_info");
String phoneNumber = phone_info.getString("phoneNumber");
return phoneNumber;
}