1. 获取code
1.1关注公众号后采用https://open.weixin.qq.com/connect/qrconnect
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
1.2 h5网页版采用
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
2.根据appid,secret,code获取openId
详细见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;
}
分享到:
相关推荐
java 微信公众号支付封装类,传入回调接口、用户openid、订单号、ip、fee即可无脑验签,返回数据直接前端调用。 用户授权获取用户信息,重定向方案设定。 推送通知 封装工具类,传入openid或者 List<openid>,可单推...
内容概要:微信公众号从获取openID,到公众号支付和页面发起支付。 适合人群:刚接触微信公众号开发的开发人员,此代码为借鉴;了解微信的接口对接模式,以此为基础来对接其他接口。 阅读建议:此代码以Servlet未...
微信支付工具类,这是一个Jsp版的微信公众号支付接口及调用实例,微信网页授权获取用户基本信息,先获取 code,跳转 url 通过 code 获取 openId,URLEncoder.encode 后可以在backUri 的url里面获取传递的所有参数,...
刚完成了一个和微信公众号支付相关的功能,整理了相关资源,按下面步骤使用: 1)公众号要求能够获取用户的openid权限 2)公众号开通了微信支付功能,下载了微信支付安全证书到本机,该文件地址需要在第5步进行设置 ...
微信h5授权获取用户openId的方法和步骤,用于用户登录和注册,代码已经封装好,下载就能用
基于java原生servlet的微信公众号h5支付,包含授权获取openid方法,以最基础的方式实现,适于用初学者学习,页面用的html实现,maven构建.
微信网页授权获取当前登录用户信息参照(WeiXinWYSQ.aspx页面),红包支付参照(PayForWeiXin.ashx),获取公众号下面所有用户OpenID用户信息参照(GetRmbByUnionId.ashx),所有内容都已经调通,记得修改密钥地址和...
本篇文章给大家介绍微信公众号支付如何获取用户openid,需要授权回调页面域名等一系列途径实现此功能,需要的朋友可以参考下
基于java原生servlet的微信公众号h5支付,包含授权获取openid方法,以最基础的方式实现,适于用初学者学习,页面用的html实现,maven构建. 上次页面有个事件忘记修改,应该是doPay(),原先的是doPrePayId().
odeJs 微信公众号功能开发,移动端 H5页面调用微信的支付功能。这几天根据公司的需要使用 node 和 h5页面调用微信的支付功能完成支付需求。现在把开发过程重新捋一遍,以帮助更多的开发者顺利的完成微信支付功能的...
php微信授权获取openid,并且跳转到当前页面。若是无法获取到相关微信授权信息,看看php.ini是否开启openssl,或打印json_error获取错误信息。openid用处很多,你可应用在微信扫码登录,jsAPI公众号支付等场景
openId是用户在当前公众号下的唯一标识(‘身份证’),就是说通过这个openId,就能区分在这个公众号下具体是哪个用户。 二、openId有什么用? 假如用户A在当前公众号下购买了一件商品,用户的下单信息肯定要存储到...
一个领先的整合微信公众号,微信支付(app付款,扫码支付,公众号和小程序支付)为目的微信工具类(持续更新中...) 主要提供两大类公众号wxpublic和微信wxpay wxpublic类提供方法 构造函数参数说明:interface ...
- 使用Access Token和OpenID,获取用户的微信基本信息,如昵称、头像等。 - 将这些信息与已有用户系统进行匹配或创建新用户,完成登录过程。 2. **login.cs文件** `login.cs`文件很可能是处理登录逻辑的主要类,...
开发者首先需要在微信商户平台注册并获取商户号,然后通过API创建订单,将订单信息发送给微信服务器,由微信生成预支付交易会话标识。用户在微信中确认支付后,微信会返回支付结果,开发者需要根据返回信息完成订单...
主要是Java调用微信公众号开发接口代码。包括: 1、创建菜单接口 2、根据code获取openid 3、获取令牌token 4、根据openid获取用户基本信息 5、根据openid发送模板/客服消息 6、微信支付:微信获取统一下单包/接收...
项目采用SpringBoot框架,可直接运行,更改WxPayConfig文件和WeixinController文件appid、mch_id、key、notify_ur等参数即可完成小程序支付和公众号支付及回调功能。包含统一下单(支付接口)即WeixinController中...
7. **应用场景**:微信OAuth2.0授权常用于微信登录、获取用户信息、分享、支付等场景,提升用户体验并实现用户行为的追踪和分析。 综上所述,基于ThinkPHP3.2.3实现微信OAuth2.0网页授权涉及到OAuth2.0协议理解、...
使用微信登录就是为了获取openid和用户的基本信息如昵称、头像、性别、所在城市这些内容。如果为了保持多个产品线的用户统一的话,还需要unionid这个大神器,前提是把APP、小程序、公众号、网站这些内容绑定到微信...