WxApiUtil.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package cn.efunbox.base.util;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.apache.commons.lang3.StringUtils;
  6. @Slf4j
  7. public class WxApiUtil {
  8. private static String appId = "wxf05800eea975a68b";
  9. private static String appSecret = "f0b98db85fab75286aba3971270985db";
  10. private static String accessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={APPID}&secret={SECRET}&code={CODE}&grant_type=authorization_code";
  11. private static String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token={ACCESS_TOKEN}&openid={OPENID}&lang=zh_CN";
  12. /**
  13. * 请求微信时的错误标志字段
  14. */
  15. public static final String WEIXIN_ERROR_CODE_FIELD = "errcode";
  16. /**
  17. * 请求微信时,成功标志字段
  18. */
  19. public static final int WEIXIN_SUCCESS_CODE = 0;
  20. public static boolean isWeixinRequestSuccess(JSONObject jsonObj) {
  21. if (jsonObj == null || (jsonObj.containsKey(WEIXIN_ERROR_CODE_FIELD)
  22. && jsonObj.getIntValue(WEIXIN_ERROR_CODE_FIELD) != WEIXIN_SUCCESS_CODE)) {
  23. return false;
  24. }
  25. return true;
  26. }
  27. public static JSONObject getWXAccessInfo(String code) {
  28. String requestUrl = accessTokenUrl.replace("{APPID}", appId).replace("{SECRET}", appSecret).replace("{CODE}", code);
  29. log.info("find wx access token requestUrl=="+requestUrl);
  30. String resp = HttpUtils.doRequest(requestUrl, "GET");
  31. JSONObject jsonObject = JSONObject.parseObject(resp);
  32. log.info("find wx access token resp:"+jsonObject.toString());
  33. if (WxApiUtil.isWeixinRequestSuccess(jsonObject)) {
  34. return jsonObject;
  35. }
  36. return null;
  37. }
  38. public static JSONObject getWxUserInfo(JSONObject accessObject) {
  39. String openid = accessObject.getString("openid");
  40. String access_token = accessObject.getString("access_token");
  41. if (StringUtils.isEmpty(openid) || StringUtils.isEmpty(access_token)) {
  42. return null;
  43. }
  44. JSONObject jsonObject = requestWxUserInfo(openid, access_token);
  45. log.info("requestWxUserInfo: {}", JSON.toJSONString(jsonObject));
  46. if (!WxApiUtil.isWeixinRequestSuccess(jsonObject)) {
  47. return null;
  48. }
  49. return jsonObject;
  50. }
  51. public static JSONObject requestWxUserInfo(String openid, String accessToken) {
  52. String requestUrl = userInfoUrl.replace("{ACCESS_TOKEN}", accessToken).replace("{OPENID}", openid);
  53. String resp = HttpUtils.doRequest(requestUrl, "GET");
  54. JSONObject jsonObject = JSONObject.parseObject(resp);
  55. return jsonObject;
  56. }
  57. }