`

微信公众号支付,获取openId

 
阅读更多
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 微信公众号支付、用户授权、推送通知 封装工具类以及公众号后台配置文档

    java 微信公众号支付封装类,传入回调接口、用户openid、订单号、ip、fee即可无脑验签,返回数据直接前端调用。 用户授权获取用户信息,重定向方案设定。 推送通知 封装工具类,传入openid或者 List&lt;openid&gt;,可单推...

    java微信公众号支付接口代码

    内容概要:微信公众号从获取openID,到公众号支付和页面发起支付。 适合人群:刚接触微信公众号开发的开发人员,此代码为借鉴;了解微信的接口对接模式,以此为基础来对接其他接口。 阅读建议:此代码以Servlet未...

    Jsp版微信公众号支付接口及调用实例.rar

    微信支付工具类,这是一个Jsp版的微信公众号支付接口及调用实例,微信网页授权获取用户基本信息,先获取 code,跳转 url 通过 code 获取 openId,URLEncoder.encode 后可以在backUri 的url里面获取传递的所有参数,...

    微信公众号支付案例(jsp)

    刚完成了一个和微信公众号支付相关的功能,整理了相关资源,按下面步骤使用: 1)公众号要求能够获取用户的openid权限 2)公众号开通了微信支付功能,下载了微信支付安全证书到本机,该文件地址需要在第5步进行设置 ...

    uniapp微信h5授权获取用户openId的方法和步骤,用于用户登录和注册

    微信h5授权获取用户openId的方法和步骤,用于用户登录和注册,代码已经封装好,下载就能用

    微信公众号H5支付demo(Servlet实现)

    基于java原生servlet的微信公众号h5支付,包含授权获取openid方法,以最基础的方式实现,适于用初学者学习,页面用的html实现,maven构建.

    微信网页授权获取当前登录用户信息,红包支付,获取公众号下面所有用户OpenID用户信息

    微信网页授权获取当前登录用户信息参照(WeiXinWYSQ.aspx页面),红包支付参照(PayForWeiXin.ashx),获取公众号下面所有用户OpenID用户信息参照(GetRmbByUnionId.ashx),所有内容都已经调通,记得修改密钥地址和...

    微信公众号支付(一)如何获取用户openId

    本篇文章给大家介绍微信公众号支付如何获取用户openid,需要授权回调页面域名等一系列途径实现此功能,需要的朋友可以参考下

    微信公众号H5支付demo(Servlet实现)-修正版

    基于java原生servlet的微信公众号h5支付,包含授权获取openid方法,以最基础的方式实现,适于用初学者学习,页面用的html实现,maven构建. 上次页面有个事件忘记修改,应该是doPay(),原先的是doPrePayId().

    nodejs微信公众号支付开发

    odeJs 微信公众号功能开发,移动端 H5页面调用微信的支付功能。这几天根据公司的需要使用 node 和 h5页面调用微信的支付功能完成支付需求。现在把开发过程重新捋一遍,以帮助更多的开发者顺利的完成微信支付功能的...

    php微信授权获取openid

    php微信授权获取openid,并且跳转到当前页面。若是无法获取到相关微信授权信息,看看php.ini是否开启openssl,或打印json_error获取错误信息。openid用处很多,你可应用在微信扫码登录,jsAPI公众号支付等场景

    微信h5静默和非静默授权获取用户openId的方法和步骤

    openId是用户在当前公众号下的唯一标识(‘身份证’),就是说通过这个openId,就能区分在这个公众号下具体是哪个用户。 二、openId有什么用? 假如用户A在当前公众号下购买了一件商品,用户的下单信息肯定要存储到...

    node-wxpayv3:一个领先的整合微信公众号,微信支付(app付款,扫码支付,公众号和小程序支付)为目的微信工具类

    一个领先的整合微信公众号,微信支付(app付款,扫码支付,公众号和小程序支付)为目的微信工具类(持续更新中...) 主要提供两大类公众号wxpublic和微信wxpay wxpublic类提供方法 构造函数参数说明:interface ...

    asp.net c#微信授权登录代码(包含所有代码)

    - 使用Access Token和OpenID,获取用户的微信基本信息,如昵称、头像等。 - 将这些信息与已有用户系统进行匹配或创建新用户,完成登录过程。 2. **login.cs文件** `login.cs`文件很可能是处理登录逻辑的主要类,...

    微信开发接口

    开发者首先需要在微信商户平台注册并获取商户号,然后通过API创建订单,将订单信息发送给微信服务器,由微信生成预支付交易会话标识。用户在微信中确认支付后,微信会返回支付结果,开发者需要根据返回信息完成订单...

    Java微信接口调用

    主要是Java调用微信公众号开发接口代码。包括: 1、创建菜单接口 2、根据code获取openid 3、获取令牌token 4、根据openid获取用户基本信息 5、根据openid发送模板/客服消息 6、微信支付:微信获取统一下单包/接收...

    【微信JSPI支付】小程序支付/公众号支付 Java后台源码 项目采用SpringBoot框架 可直接运行

    项目采用SpringBoot框架,可直接运行,更改WxPayConfig文件和WeixinController文件appid、mch_id、key、notify_ur等参数即可完成小程序支付和公众号支付及回调功能。包含统一下单(支付接口)即WeixinController中...

    基于ThinkPHP3.2.3的微信OAuth2.0微信网页授权

    7. **应用场景**:微信OAuth2.0授权常用于微信登录、获取用户信息、分享、支付等场景,提升用户体验并实现用户行为的追踪和分析。 综上所述,基于ThinkPHP3.2.3实现微信OAuth2.0网页授权涉及到OAuth2.0协议理解、...

    小程序微信登陆获取openid和unionid

    使用微信登录就是为了获取openid和用户的基本信息如昵称、头像、性别、所在城市这些内容。如果为了保持多个产品线的用户统一的话,还需要unionid这个大神器,前提是把APP、小程序、公众号、网站这些内容绑定到微信...

Global site tag (gtag.js) - Google Analytics