微信公众号支付,获取openId

[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


/*
* (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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值