1.前端传微信code获取openid
public static final String CODE2SESSION = "https://api.weixin.qq.com/sns/jscode2session";
if (StringUtils.isNotEmpty(apUserBean.getWxCode())) {
StringBuffer param = new StringBuffer();
param.append("appid=").append(WechatParam.APPID).append("&secret=")
.append(WechatParam.APPSECRET).append("&js_code=")
.append(apUserBean.getWxCode()).append("&grant_type=authorization_code");
String res = HttpUtil.sendGet(WechatParam.CODE2SESSION, param.toString());
JSONObject jsonObject = JSONObject.fromObject(res);
apUserBean.setOpenid(jsonObject.getString("openid"));
}
2.获取手机号
public static final String GETPHONE = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=";
if (StringUtils.isNotEmpty(apUserBean.getPhoneCode())) {
StringBuffer param = new StringBuffer();
param.append("appid=").append(WechatParam.APPID).append("&secret=")
.append(WechatParam.APPSECRET).append("&grant_type=client_credential");
String res = HttpUtil.sendGet(WechatParam.GETACCESSTOKEN, param.toString());
JSONObject jsonObject = JSONObject.fromObject(res);
String token = jsonObject.getString("access_token");
String jsonCode = "{\"code\":\"" + apUserBean.getPhoneCode() + "\"}";
String resPhone = com.kuyuntech.appraisal.appraisalplatform.util.core.HttpUtil.sendPostRequestStr(WechatParam.GETPHONE + token, jsonCode);
JSONObject jsonObject1 = JSONObject.fromObject(resPhone);
int errcode = jsonObject1.getInt("errcode");
if (errcode != 0) {
return ResponseBean.serverError("获取手机号失败,请重试!");
}
JSONObject phoneInfo = jsonObject1.getJSONObject("phone_info");
String phone = phoneInfo.getString("phoneNumber");
apUserBean.setPhone(phone);
}
3.获取无限制的小程序码
public static final String GETUNLIMITEDQRCODE = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=";
@RequestMapping
public Object getUnlimitedQrcode(HttpServletRequest request, HttpServletResponse response) {
ApUserBean loginUserBean = (ApUserBean) request.getSession().getAttribute(LoginSession.USER_LOGIN_INFO);
if (null == loginUserBean) {
response.setStatus(401);
return ResponseBean.unAuthorize("请先登录");
}
StringBuffer param = new StringBuffer();
param.append("appid=").append(WechatParam.APPID).append("&secret=")
.append(WechatParam.APPSECRET).append("&grant_type=client_credential");
String res = HttpUtil.sendGet(WechatParam.GETACCESSTOKEN, param.toString());
JSONObject jsonObject = JSONObject.fromObject(res);
String token = jsonObject.getString("access_token");
com.alibaba.fastjson.JSONObject paramJson = new com.alibaba.fastjson.JSONObject();
paramJson.put("page", "pages/index/index");
paramJson.put("scene", "inviteCode=" + loginUserBean.getInvitationCode());
paramJson.put("check_path", "true");
paramJson.put("env_version", "release");
logger.info(paramJson.toString());
byte[] bytes = com.kuyuntech.appraisal.appraisalplatform.util.core.HttpUtil.sendPostRequest(WechatParam.GETUNLIMITEDQRCODE + token, paramJson.toString());
return bytes;
}
4.生成小程序二维码携带参数
public static final String CREATEQRCODE = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=";
StringBuffer param = new StringBuffer();
param.append("appid=").append(WechatParam.APPID).append("&secret=")
.append(WechatParam.APPSECRET).append("&grant_type=client_credential");
String res = HttpUtil.sendGet(WechatParam.GETACCESSTOKEN, param.toString());
JSONObject jsonObject = JSONObject.fromObject(res);
String token = jsonObject.getString("access_token");
String jsonCode = "{\"path\":\"pages/antique-detial/antique-detial?code=" + appraisal.getCode() + "\"}";
byte[] bytes = HttpUtil.sendPostByte(WechatParam.CREATEQRCODE + token, jsonCode);