2023 Java和微信小程序登录获取手机号 【springboot接口三步走】

微信小程序准备工作:

        获取微信小程序的第一次的code,传给后端第一个接口

        获取微信小程序的第二次的code

               注意: code共分两次获取,两次不一致

Java后端准备工作:

         获取APPID和 SECRET

Java三个方法详情以及调用:

        ①第一个   通过微信小程序第一个code获取openid(微信小程序调用)

public JSONObject getWXSessionKey(String code) {
        String APPID = "你的APPID";
        String SECRET = "你的SECRET";
        //拼接微信官方的url来获取openid
        String urlResult= HttpRequestUrlUtil.httpGet("https://api.weixin.qq.com/sns/jscode2session?appid=" + APPID + "&secret=" + SECRET + "&js_code=" + code + "&grant_type=authorization_code");
        //转为json
        JSONObject jsonObject = JSON.parseObject(urlResult);
        return jsonObject;
}

        ②第二个    java后端获取 access_token(后端调用

                (在第三个接口中复用,也可以直接写在第三个接口中)

public JSONObject getWXAccessToken() {
    String APPID = "你的APPID ";
    String SECRET = "你的SECRET ";
    //拼接微信官方的url来获取access_token
    String urlResult= HttpRequestUrlUtil.httpGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + APPID + "&secret=" + SECRET);
        //转为json
        JSONObject jsonObject = JSON.parseObject(urlResult);
        return jsonObject;
}

        ③第三个   获取手机号(微信小程序调用

                参数解析:

                        openid第一个接口获取的

                        code微信上第二个code

 public Store storelogin(String openId, String code) throws IOException {
        //获取当前登录的商家
        QueryWrapper storeQueryWrapper = new QueryWrapper<>();
        Store queryStore = storeService.getOne(storeQueryWrapper.eq("open_id", openId));
        HashMap hashMap = new HashMap<>();
        //判断当前登录的商家是否存在,登录成功,
        if (queryStore != null) {
            return queryStore;
        } else {
            //不存在新增并登录
            Store store = new Store();
            //根据微信官方链接 获取access_token(这里是复用第二个接口)
            String getAccessTokenUrl = HttpRequestUrlUtil.httpGet("http://localhost:9023/exploringstores/login/getWXAccessToken");
            //转为json格式
            JSONObject jsonObject = JSON.parseObject(getAccessTokenUrl);
            String access_token = jsonObject.getString("access_token");

            //根据微信官方链接 获取手机号
            String getPhoneNumberUrl = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + access_token;
            JSONObject json = new JSONObject();
            json.put("code", code);
            json = URLConnection.postResponse(getPhoneNumberUrl, json);
            String phoneNumber = json.getJSONObject("phone_info").getString("phoneNumber");
            //存储手机号
            store.setPhoneNumber(phoneNumber);
            //存储openId
            store.setOpenId(openId);
            //保存店铺
            storeService.save(store);
            //返回对象
            return store;
        }
    }

你可能感兴趣的:(微信小程序,java)