赞
踩
新版本:
我使用的是RestTemplate的get、post方法进行访问
第一个接口要获取access_token
根据官方文档,Get方式提交,将appid,grant_type,secret参数传过去,获取access_token
https://api.weixin.qq.com/cgi-bin/token?grant_type=xx&appid=xx&secret=xx
2. 第二步
获取到access_token以后进行第二个接口访问
String url="https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token="+accessToken;
注意:微信小程序新改版api,access_token要在地址栏中进行传递,code放在body中进行传递
code:前端点击获取code按钮,将code传递给后端接口
末尾有完整代码,没有耐心可移至末尾。
// 注意:前端获取code的按钮要注意,老版本获取的code是通过wx.login()获取,如采用新版本前端也要更新获取code按钮 @ResponseBody @PostMapping("getPhones") public RespInfo getPhoneBycode(@RequestBody PhoneForm phoneForm) throws Exception { Map<String,String> params=new HashMap<>(); params.put("grant_type",grant_type); params.put("appid",appid); params.put("secret",appsecret); ResponseEntity<String> responseEntity=restTemplate.getForEntity("https://api.weixin.qq.com/cgi-bin/token?grant_type={grant_type}&appid={appid}&secret={secret}",String.class,params); Map map = JSONObject.parseObject(responseEntity.getBody(), Map.class); if(!StringUtils.isEmpty(map.get("errcode"))){ return RespInfo.mobiError("获取token参数有误"); } if(!StringUtils.isEmpty(map.get("access_token"))){ String accessToken=map.get("access_token").toString(); String code=phoneForm.getCode(); Map<String,String> param = new HashMap<>(); if(!StringUtils.isEmpty(code)){ param.put("code",code); } HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.set("Accept", "application/json"); HttpEntity<Map<String, String>> httpEntity = new HttpEntity< Map<String, String>>(param,headers); String url="https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token="+accessToken; ResponseEntity<String> postResponseEntity=restTemplate.postForEntity(url,httpEntity,String.class); System.out.println(postResponseEntity.getBody()); Map postMap=JSONObject.parseObject(postResponseEntity.getBody(),Map.class); if(!StringUtils.isEmpty(postMap.get("errcode"))){ String errcode=postMap.get("errcode").toString(); if(errcode.equals("-1")){ return RespInfo.mobiError("系统繁忙,请稍后重试"); } if(errcode.equals("40029")){ return RespInfo.mobiError("code不存在或已过期,请重试"); } if(errcode.equals("40013")){ return RespInfo.mobiError("不合法AppId"); } if(errcode.equals("0")){ return RespInfo.mobiSuccess(postMap); } } } return RespInfo.mobiError("未获取到手机号"); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。