[b]1. 获取code[/b]
[b]1.1关注公众号后采用https://open.weixin.qq.com/connect/qrconnect[/b]
https://open.weixin.qq.com/connect/qrconnect?appid=wxd01b****c55a&redirect_uri=my-***.com%2fcheckout%2fcart&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
[b]1.2 h5网页版采用[/b]
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx87a****09713&redirect_uri=http%3A%2F%2F10.88.75.139%3A8082%2Fpay%2Fwechat.htm&response_type=code&scope=snsapi_base&state=1#wechat_redirect
[b]2.根据appid,secret,code获取openId[/b]
详细见http://572327713.iteye.com/blog/2388251
[b]1.1关注公众号后采用https://open.weixin.qq.com/connect/qrconnect[/b]
https://open.weixin.qq.com/connect/qrconnect?appid=wxd01b****c55a&redirect_uri=my-***.com%2fcheckout%2fcart&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
[b]1.2 h5网页版采用[/b]
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx87a****09713&redirect_uri=http%3A%2F%2F10.88.75.139%3A8082%2Fpay%2Fwechat.htm&response_type=code&scope=snsapi_base&state=1#wechat_redirect
[b]2.根据appid,secret,code获取openId[/b]
详细见http://572327713.iteye.com/blog/2388251
/*
* (non-Javadoc)
* @see com.baozun.store.manager.wechat.WechatAccessTokenService#getOpenIdByAccessTokenUrl(java.lang.String, java.lang.String)
*/
@Override
public String getOpenIdByAccessTokenUrl(String code,String authType){
// 用来存储用户的openid
String openid = "";
// 过滤无效数据
if (StringUtils.isBlank(code) || StringUtils.isBlank(authType)){
return null;
}
// 构建accessTokenUrl
String accessTokenUrl = this.buildGetAccessTokenUrl(authType, code);
LOGGER.debug("wechat get access token url is {}", accessTokenUrl);
// 从接口中取出accessToken数据
String json = HttpUtils.doGetReq(accessTokenUrl);
JSONObject jsonobject = JSONObject.fromObject(json);
// 如果调用接口成功,不会出现Errcode值
if (Validator.isNullOrEmpty(jsonobject.get("errcode"))){
openid = jsonobject.get("openid").toString();
LOGGER.info("## Get access token success,open_id is [{}]", openid);
}else{
LOGGER.error(
"## Get access token failed, status code is:[{}],errmsg is:[{}]",
jsonobject.get("errcode"),
jsonobject.get("errmsg"));
}
return openid;
}
/*
* (non-Javadoc)
* @see com.baozun.store.manager.wechat.WechatAccessTokenService#buildGetAccessTokenUrl(java.lang.String)
*/
@Override
public String buildGetAccessTokenUrl(String oAuthType,String code){
//顺序链接获取微信code的url配置参数,转换于url地址
Map<String,String> connectionParam=new LinkedHashMap<String, String>();
connectionParam.put("appid", appId);
connectionParam.put("secret", appSecret);
String getAccessTokenUrl;
// 根据授权方式选择不同url地址链接 (链接参数地址的顺序不能改变)
if (WechatConstants.AUTH_TYPE_2.equalsIgnoreCase(oAuthType) || WechatConstants.AUTH_TYPE_3.equalsIgnoreCase(oAuthType)){
connectionParam.put("code", code);
connectionParam.put("grant_type", WechatConstants.GRANT_TYPE_AUTHORIZATION_CODE);
getAccessTokenUrl=ParamUtil.addParameterSingleValueMap(oAuthAccessTokenUrl, connectionParam, null);
}else{
connectionParam.put("grant_type", WechatConstants.GRANT_TYPE_CLIENT_CREDENTIAL);
getAccessTokenUrl=ParamUtil.addParameterSingleValueMap(globalAccessTokenUrl, connectionParam, null);
}
LOGGER.info("-------buildGetAccessTokenUrl of [{}]",getAccessTokenUrl);
return getAccessTokenUrl;
}