1.在appsettings配置你的小程序配置信息
//微信小程序信息配置"WechatConfig": {"appid": "", //小程序ID"secret": "" //小程序秘鑰},
2.請求接口時先獲取Access_token
#region 獲取小程序的Access_tokenpublic object GetAccess_token(string appid, string secret){string strUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret;HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(strUrl);req.Method = "GET";req.ContentType = "textml;charset=UTF-8";HttpWebResponse response = (HttpWebResponse)req.GetResponse();Stream myResponseStream = response.GetResponseStream();StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);string jsonData = myStreamReader.ReadToEnd();myStreamReader.Close();myResponseStream.Close();string jsonSr = jsonData;JObject jsons = JObject.Parse(jsonSr);string accesstoken = jsons["access_token"].ToString();return accesstoken;}#endregion
3.授權時獲取手機號
#region 獲取微信綁定手機號public object GetPhoneNumber(string code, string appid, string secret){string errCode = "";try{var accesstoken = GetAccess_token(appid, secret);string serviceAddress = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + accesstoken;JObject codes = new JObject();codes["code"] = code;string sendData = JsonConvert.SerializeObject(codes);//換成Post請求方式string jsonString = UrlPost(sendData, serviceAddress);dynamic model = JToken.Parse(jsonString) as dynamic;JObject json = JObject.Parse(jsonString);errCode = json["errcode"].ToString();string purePhoneNumber = json["phone_info"]["phoneNumber"].ToString();//簽發token//string token;//_authenservice.IsAuthenticated(code, out token);return new { Code = 200, Msg = "獲取成功", Tel = purePhoneNumber, Token = token };}catch (Exception e){return new { Code = 0, Msg = "獲取失敗" + e.Message };}}#endregion
4.微信接口要求必須使用Post請求方法
#region 提交Post請求/// <summary>/// 提交Post請求/// </summary>/// <param name="parameterData">參數集合</param>/// <param name="serviceUrl">URL</param>/// <param name="ContentType"></param>/// <param name="Accept"></param>/// <returns></returns>public static string UrlPost(string parameterData, string serviceUrl, string ContentType = "application/json", string Accept = "application/json"){//先根據用戶請求的uri構造請求地址//string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);//創建Web訪問對象HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);//把用戶傳過來的數據轉成“UTF-8”的字節流byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(parameterData);myRequest.Method = "POST";//myRequest.Accept = "application/json";//myRequest.ContentType = "application/json"; // //Content-Type: application/x-www-form-urlencoded myRequest.AutomaticDecompression = DecompressionMethods.GZip;myRequest.Accept = Accept;//myRequest.ContentType = ContentType;myRequest.ContentType = "application/json; charset=UTF-8";myRequest.ContentLength = buf.Length;myRequest.MaximumAutomaticRedirections = 1;myRequest.AllowAutoRedirect = true;//myRequest.Headers.Add("content-type", "application/json");//myRequest.Headers.Add("accept-encoding", "gzip");//myRequest.Headers.Add("accept-charset", "utf-8");//發送請求Stream stream = myRequest.GetRequestStream();stream.Write(buf, 0, buf.Length);stream.Close();//通過Web訪問對象獲取響應內容HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();//通過響應內容流創建StreamReader對象,因為StreamReader更高級更快StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);//string returnXml = HttpUtility.UrlDecode(reader.ReadToEnd());//如果有編碼問題就用這個方法string returnData = reader.ReadToEnd();//利用StreamReader就可以從響應內容從頭讀到尾reader.Close();myResponse.Close();return returnData;}#endregion
//小程序官方文檔
https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html