关于微信公众号支付获取用户openId的方法

来源:互联网 发布:sql增删改查面试题 编辑:程序博客网 时间:2024/06/05 03:36

关于微信公众号支付获取用户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;    }}
阅读全文
0 0
原创粉丝点击