`

微信公众号支付,获取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里面获取传递的所有参数,...

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

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

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

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

    微信公众号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公众号支付等场景

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

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

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

    主要介绍了微信h5静默和非静默授权获取用户openId的方法和步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    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中...

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

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

    php微信支付类demo

    demo的相关资料,微信支付商户号 PartnerID 通过微信支付商户资料审核后邮件发送,公众号APPID 通过微信支付商户资料审核后邮件发送,调用【网页授权获取用户信息】接口获取到用户在该公众号下的Openid。

    php微信支付类.zip

    demo的相关资料,微信支付商户号 PartnerID 通过微信支付商户资料审核后邮件发送,公众号APPID 通过微信支付商户资料审核后邮件发送,调用【网页授权获取用户信息】接口获取到用户在该公众号下的Openid。

    wechat_pay_payment支付_wechatpay_wechat_wechatpay_wechat49明版网_

    Jsp版微信公众号支付接口及调用,微信网页授权获取用户基本信息,先获取 code,跳转 url 通过 code 获取 openId

    微信H5支付

    下载后直接配置你自己的 APPID,商户号,API密钥。还有就是登陆你的微信商户平台:进入产品中心-&gt;...微信H5支付不用获取openid,而且支持开放平台申请的应用和公众号申请的服务号(亲测都行),商户号必须有开通H5支付

Global site tag (gtag.js) - Google Analytics