package com.xnx3.weixin; import net.sf.json.JSONObject; import com.xnx3.BaseVO; import com.xnx3.net.HttpResponse; import com.xnx3.net.HttpsUtil; import com.xnx3.weixin.vo.Jscode2sessionResultVO; /** * 微信小程序 * @author 管雷鸣 */ public class XiaoChengXuUtil { private static String appId; //appId 小程序的 app_id private static String appSecret; //appSecret 小程序的 app_secret /** * 初始化 * @param appId 小程序的 app_id * @param appSecret 小程序的 app_secret */ public XiaoChengXuUtil(String appId, String appSecret) { XiaoChengXuUtil.appId = appId; XiaoChengXuUtil.appSecret = appSecret; } /** * https://api.weixin.qq.com/sns/jscode2session 根据code ,获取 openid、session_key 、 unionid * @param code 微信小程序端,通过js获取到的code,也就是 wx.login 获取到的 code * @return {@link Jscode2sessionResultVO} 微信jscode2session接口所返回的结果。 * <ul> * <li>result : {@link Jscode2sessionResultVO}.FAILURE 调用失败,通过 .getInfo() 返回失败结果</li> * <li>result : {@link Jscode2sessionResultVO}.SUCCESS 调用成功。即可正常获得 openid、session_key 等</li> * </ul> */ public static Jscode2sessionResultVO jscode2session(String code){ Jscode2sessionResultVO vo = new Jscode2sessionResultVO(); HttpsUtil https = new HttpsUtil(); HttpResponse hr = https.get("https://api.weixin.qq.com/sns/jscode2session?appid="+appId+"&secret="+appSecret+"&js_code="+code+"&grant_type=authorization_code"); if(hr.getCode() - 200 == 0 && hr.getContent() != null && hr.getContent().indexOf("session_key") > -1){ JSONObject json = JSONObject.fromObject(hr.getContent()); vo.setOpenid(json.get("openid") == null? "":json.getString("openid")); vo.setUnionid(json.get("unionid") == null ? "":json.getString("unionid")); vo.setSessionKey(json.get("session_key") == null? "":json.getString("session_key")); }else{ vo.setBaseVO(BaseVO.FAILURE, hr.getContent()); } return vo; } public static void main(String[] args) { } }