关于微信公众号支付获取用户openId的方法
2017-11-08 15:11
387 查看
关于微信公众号支付获取用户openId的方法
说明
内容是在参考了其他博主的内容后加上自己遇到的问题进行了整理,如果有什么地方有错误还望广大博友及时指。
代码块
代码块语法遵循标准markdown代码,例如:/** * 公众号支付时获取用户openId * 1.首先要想获取到微信公众号的openId,必须在微信公众平台设置一个回调授权目录(这个授权目录必须微信公众号通过微信认证才能设置) * 2.想要获取openId得先访问微信指定的地址 * 3.然后微信会重定向到你在请求时填的redirect_uri参数的地址(前提是这个地址必须在回调授权目录域名下) * 4.然后可以通过request.getParameter("code")获取到唯一的code * 5.然后再通过code去指定地址获取到openId */ //前端代码 var redrectUrl = "****/cust/getOpenId"; var appid = "";//微信公众号appid var wxUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=" + redrectUrl + "&response_type=code&scope=snsapi_userinfo&state="+ $("#cashin_id").val() + "#wechat_redirect"; /* scope:应用授权作用域 snsapi_base:不弹出授权页面,直接跳转,只能获取用户openid snsapi_userinfo:弹出授权页面,可通过openid拿到昵称、性别、所在地 state:这里是微信重定向后要传递的参数(这个参数只支持英文字母和数字)。比如你可以把自己的订单号传过去,然后通过request.getParameter("state")获取 */ //请求指定的微信地址 location.href = wxUrl; //后端代码 @RequestMapping(value = "/cust/getOpenId",method = RequestMethod.POST) public void getOpenId(){ String code = request.getParameter("code"); logger.info("^^^^^^^^^^CODE^^^^^^^^" + code); String openId = ""; //根据code获取openId if (code != null && EqualsUtils.isNotEquals("", code)) { String state = request.getParameter("state"); orderId = Long.parseLong(state); logger.info("^^^^^^^^^^state^^^^^^^^" + state); openId = getOpenId(code); logger.info("=========openId========" + openId); }else { orderId = Long.parseLong(request.getParameter("orderId")); } } /** * 根据微信返回的code获取公众号的用户信息 * @param code 微信重定向后发返回的code * @return 用户的openId */ private String getOpenId(String code) { String appid = "";//微信公众号appid String secret = "";//微信公众号密钥 String oauth2_url = "https://api.weixin.qq.com/sns/oauth2/access_token? appid=" + appid + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code"; JSONObject result = HttpRequestUtils.postData(oauth2_url, null); if (result == null) { logger.info("^^^^^^^^^获取用户openId失败^^^^^^^^^^"); return null; } Object errorCode = result.get("errcode"); if (errorCode != null) { logger.info("=========code不合法=============="); return null; }else { String openId = result.getString("openid"); logger.info("openId:"+openId); return openId; } }
相关文章推荐
- 微信公众号支付(一)如何获取用户openId
- 微信公众号支付(一):获取用户openId
- 微信公众号支付(一):获取用户openId
- 微信h5静默、非静默授权获取用户openId的方法和步骤
- 微信公众号网页授权获取用户openid
- 微信公众号开发之获取用户唯一的openid
- 微信公众号开发之获取微信用户的openID
- 获取微信用户的openid的方法
- 微信小程序获取用户openId的实现方法
- 微信公众号获取用户openid
- 微信公众号获取OpenId(用户授权)(无需关注公众号)以及获取用户基本信息
- 微信公众号开发中遇到的问题——支付回调,分享,获取openId
- 微信公众号开发访问第三方网页获取用户的openid
- 关于微信公众号开发时获取用户昵称作为参数乱码的问题
- .NET微信公众号获取OpenID和用户信息
- 微信公众号支付 (一、获取openId)
- 手把手教你如何获取微信公众号用户的个人信息(包括OpenId)
- 关于Android用户定位获取location值为null的解决方法
- 微信公众号开发-微信网页授权获取用户openid以及用户信息的步骤
- 微信公众号用户授权问题---openid获取失败,之后导致服务器内存耗尽