亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信公眾號支付中怎樣獲取用戶openId

發布時間:2021-01-25 11:30:51 來源:億速云 閱讀:499 作者:小新 欄目:移動開發

這篇文章將為大家詳細講解有關微信公眾號支付中怎樣獲取用戶openId,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

 一、獲取apikey,appsecret與商戶號

  注冊公眾號、商戶號

二、獲取用戶的OpenId

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

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

微信公眾號支付中怎樣獲取用戶openId

  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”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长沙市| 灵寿县| 斗六市| 东港市| 普陀区| 乌鲁木齐市| 亚东县| 剑阁县| 庐江县| 瑞丽市| 开封市| 深水埗区| 桃源县| 米泉市| 蕲春县| 金昌市| 慈溪市| 平顶山市| 贵阳市| 乌什县| 景泰县| 高安市| 长泰县| 中牟县| 新邵县| 铁力市| 射阳县| 海淀区| 蓝田县| 陕西省| 诏安县| 遂昌县| 马龙县| 湖南省| 朔州市| 嵩明县| 建始县| 高雄市| 平湖市| 石家庄市| 延津县|