当前位置:   article > 正文

新版本根据微信小程序api获取手机号_business/getuserphonenumber

business/getuserphonenumber

新版本:

  1. 第一步,获取Access_token
	我使用的是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
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
2. 第二步

   获取到access_token以后进行第二个接口访问
    String url="https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token="+accessToken;
注意:微信小程序新改版api,access_token要在地址栏中进行传递,code放在body中进行传递
code:前端点击获取code按钮,将code传递给后端接口
末尾有完整代码,没有耐心可移至末尾。



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
// 注意:前端获取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("未获取到手机号");
    }



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/284665
推荐阅读
相关标签
  

闽ICP备14008679号