利用小程序接口生成二維碼【下】


實戰

一:調用小程序接口獲取二維碼

     /// <summary>
        /// 獲取小程序二維碼
        /// </summary>
        /// <param name="param">二維碼scene參數</param>
        /// <param name="width">二維碼寬度</param>     
        /// <returns></returns>
        public HttpResponseMessage QueryAppletQrCode(string param, int width)
        {
            HttpResponseMessage result = new HttpResponseMessage(System.Net.HttpStatusCode.OK);

            if (param.IsEmpty())
            {              
                return result;
            }           

            //獲取小程序accesstoken
            var token= "";//方法省略           
  
            string jsonparam = "";          

            if (width > 0) {
                var data = new
                {
                    scene = param,
                    page = "pages/login/wxlogin",
                    width = width
                };
                jsonparam = data.ToJson();
            }
            else
            {
                var data = new
                {
                    scene = param,
                    page = "pages/login/wxlogin"
                };
                jsonparam = data.ToJson();
            }
           
           var postdata = new StringContent(jsonparam);
            postdata.Headers.Clear();
            postdata.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
            HttpClient httpClient = new HttpClient() {
                 BaseAddress= new Uri("https://api.weixin.qq.com/")
            };           

            var response=httpClient.PostAsync($"wxa/getwxacodeunlimit?access_token={token}",postdata).Result;           
            return response;
        }
        

二:方法調用

MVC。這種方法 小程序image的src等於返回值即可

微信返回的是二進制內容,直接以二進制的方式讀取即可。      

 /// <summary>
        /// 獲取小程序圖片
        /// </summary>
        /// <param name="param"></param>
        /// <param name="width">寬度</param>
        /// <returns></returns>
        [HttpGet]
        public FileResult QueryAppletQrCode(string param, int width = 0)
        {
            var response = _orgBusiness.QueryAppletQrCode(param, width);
            var contentType = response.Content.Headers.ContentType?.ToString();
            //二維碼錯誤
            if (!string.IsNullOrWhiteSpace(contentType) && contentType.Contains("json"))
            {
                var data = response.Content.ReadAsByteArrayAsync().Result;
                string path = Server.MapPath("/AppletImages/images/nore.png");
                return File(path, @"image/PNG");
            }
            else
            {
                var data = response.Content.ReadAsByteArrayAsync().Result;
                return File(data, @"image/JPEG");
            } 
        }

 WebApi方式返回

注意把圖片轉成base64返回,不然小程序端獲取有問題

  /// <summary>
        /// 獲取小程序圖片
        /// </summary>
        /// <param name="param">企業id</param>
        /// <param name="width">寬度</param>
        /// <returns></returns>
        [HttpGet]
        public HttpResponseMessage QueryAppletQrCode(string param, int width = 0)
        {
            var response = QueryAppletQrCode(param, width);
            var data = response.Content.ReadAsByteArrayAsync().Result;

            HttpResponseMessage returndata = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
            returndata.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue
                (@"image/JPEG");
            string strbaser64 = System.Convert.ToBase64String(data);
            returndata.Content =new StringContent(strbaser64);

            return returndata;
        }

小程序端base64顯示

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM