package com.boco.nbd.wios.wx.call; import com.boco.nbd.cams.core.constant.CamsConstant; import com.ihidea.core.util.HttpClientUtils; import com.ihidea.core.util.JSONUtilsEx; import com.ihidea.core.util.PropertyUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Map; /** * 微信小程序访问类 * * @author Administrator */ @Component public class WeChatApi { public static final Logger logger = LoggerFactory.getLogger(WeChatApi.class); /** * 小程序code换取openid和session_key */ private final static String get_session_key_url = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code"; /** * 根据经纬度获取城市信息 */ private final static String baidu_map_api = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=c8zGDQn1tajuQwEKHX1BELG2n6zygA8C&output=json&location=LAT,LNG&pois=0"; /** * 获取小程序AccessToken */ private final static String get_xcx_accessToken_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; private static String minaAppId; @Value("${mina.appId}") public void setMinaAppId(String appId) { WeChatApi.minaAppId = appId; } private static String minaAppSecret; @Value("${mina.appSecret}") public void setMinaAppSecret(String appSecret) { WeChatApi.minaAppSecret = appSecret; } /** * 根据code获取openId及sessionKey * * @param code * @return * @author * @date */ @SuppressWarnings("unchecked") public static Map<String, String> getXcxOpenIdOrSessionKey(String code) { String requestUrl = get_session_key_url.replace("APPID", minaAppId) .replace("SECRET", minaAppSecret).replace("JSCODE", code); // 调用URL获取相应信息 return JSONUtilsEx.deserialize(HttpClientUtils.get(requestUrl), Map.class); } /** * 根据经纬度调用百度API获取城市信息 * * @param lat 经度 * @param lng 纬度 * @return * @author lvpeng * @date 2017年11月6日 */ public static String getLocationByLatAndLng(String lat, String lng) { String requestUrl = baidu_map_api.replace("LAT", lat).replace("LNG", lng); return HttpClientUtils.post(requestUrl); } /** * 获取小程序的accessToken * * @return */ public static Map<String, Object> getXCXAccessToken() { // 调用URL获取相应信息 String requestUrl = get_xcx_accessToken_url.replace("APPID", PropertyUtils.getProperty("mina.appid")).replace("APPSECRET", PropertyUtils.getProperty("mina.appSecret")); String jsonStr = HttpClientUtils.get(requestUrl, null, CamsConstant.UTF_8, CamsConstant.UTF_8); return JSONUtilsEx.deserialize(jsonStr, Map.class); } }