国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

微信公眾號支付(一)如何獲取用戶openId

2019-11-26 15:00:12
字體:
來源:轉載
供稿:網友

一、獲取apikey,appsecret與商戶號

  注冊公眾號、商戶號

二、獲取用戶的OpenId

  1.設置【授權回調頁面域名】

    官方解釋:用戶在網頁授權頁同意授權給公眾號后,微信會將授權數據傳給一個回調頁面,回調頁面需在此域名下,以確保安全可靠。回調頁面域名不支持IP地址。

      

  2.用戶同意授權

    我是把這個url寫在微信菜單下的,當進入這個頁面的時候就讓用戶同意。注意:好像是靜默授權的,用戶不知道

    1.url:
https://open.weixin.qq.com/connect/oauth/authorize?appid=appid&redirect_uri=url&response_type=code&scope=snsapi_userinfo&state=park#wechat_redirect

    參數:appid:公眾號的唯一標識

       redirect_uri:重定向的url,就是授權后要跳轉的頁面

       scope:應用授權作用域

          snsapi_base:不彈出授權頁面,直接跳轉,只能獲取用戶openid

          snsapi_userinfo:彈出授權頁面,可通過openid拿到昵稱、性別、所在地

       state:重定向后帶的參數

    2.用戶同意后會產生一個code,只有分鐘時間的有效期。

String code = request.getParameter("code")

    3.code換openId

/** * 常量類 * @author rory.wu * */public class Constants { // 第三方用戶唯一憑證 public static String appid = ""; // 第三方用戶唯一憑證密鑰 public static String appsecret = ""; //商戶ID public static String mch_id=""; //獲取openId public static String oauth_url = "https://api.weixin.qq.com/sns/oauth/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";}

/** * 通用工具類 * @author rory.wu * @version . * @since 年月日 */ public class CommonUtil { private static Logger log = Logger.getLogger(CommonUtil.class); public static JSONObject httpsRequestToJsonObject(String requestUrl, String requestMethod, String outputStr) {  JSONObject jsonObject = null;  try {  StringBuffer buffer = httpsRequest(requestUrl, requestMethod, outputStr);  jsonObject = JSONObject.fromObject(buffer.toString());  } catch (ConnectException ce) {  log.error("連接超時:"+ce.getMessage());  } catch (Exception e) {  log.error("https請求異常:"+e.getMessage());  }  return jsonObject; }  private static StringBuffer httpsRequest(String requestUrl, String requestMethod, String output)  throws NoSuchAlgorithmException, NoSuchProviderException, KeyManagementException, MalformedURLException,  IOException, ProtocolException, UnsupportedEncodingException {  URL url = new URL(requestUrl);  HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();  connection.setDoOutput(true);  connection.setDoInput(true);  connection.setUseCaches(false);  connection.setRequestMethod(requestMethod);  if (null != output) {  OutputStream outputStream = connection.getOutputStream();  outputStream.write(output.getBytes("UTF-"));  outputStream.close();  }  // 從輸入流讀取返回內容  InputStream inputStream = connection.getInputStream();  InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-");  BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  String str = null;  StringBuffer buffer = new StringBuffer();  while ((str = bufferedReader.readLine()) != null) {  buffer.append(str);  }  bufferedReader.close();  inputStreamReader.close();  inputStream.close();  inputStream = null;  connection.disconnect();  return buffer; } }   /** * 獲取用戶的openId,并放入session * @param code 微信返回的code */ private void setOpenId(String code) {  session.put("code", code);  String oauth_url = Constants.oauth_url.replace("APPID", Constants.appid).replace("SECRET", Constants.appsecret).replace("CODE", String.valueOf(session.get("code")));  log.info("oauth_url:"+oauth_url);  JSONObject jsonObject = CommonUtil.httpsRequestToJsonObject(oauth_url, "POST", null);  log.info("jsonObject:"+jsonObject);  Object errorCode = jsonObject.get("errcode");  if(errorCode != null) {  log.info("code不合法");  }else{  String openId = jsonObject.getString("openid");  log.info("openId:"+openId);  session.put("openId", openId);  } }oauth_url返回的格式是:  {    "access_token":"ACCESS_TOKEN",    "expires_in":,  "refresh_token":"REFRESH_TOKEN",  "openid":"OPENID", "scope":"SCOPE",  "unionid": "o_bmasdasdsad_sgVthMZOPfL"  }Code無效時:  {   "errcode":   ,"errmsg":"invalid code" }

以上內容就是武林網的小編給大家分享的微信公眾號支付(一)如何獲取用戶openId,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夏河县| 岢岚县| 龙游县| 龙川县| 江西省| 九龙县| 鄂托克旗| 三穗县| 逊克县| 营山县| 平遥县| 海城市| 甘南县| 景德镇市| 临泽县| 佛山市| 浦东新区| 满洲里市| 林芝县| 安义县| 金塔县| 太仆寺旗| 德格县| 德江县| 大同县| 永康市| 西峡县| 西丰县| 安庆市| 会同县| 长沙县| 溆浦县| 肇源县| 高阳县| 阜康市| 荣成市| 丰原市| 威远县| 惠水县| 乐昌市| 柞水县|