c# 生成微信小程序二維碼

 二維碼生成

      CreateWxCode("id=117", "pages/bookcheck/bookchecktime/bookchecktime", "430", "/Upload/2xcxcode/")

                        
#region 生成小程序二維碼
    /// <summary>
    /// 通過該接口生成的小程序碼,永久有效,數量暫無限制。
    /// </summary>
    /// <param name="access_token"></param>
    /// <returns></returns>
    public static string CreateWxCode(string roomId, string page, string width,string picPath)
    {
        string ret = string.Empty, accesstoken = "", DataJson = "";
        try
        {

            ///獲取token
            string dappid = "?????";  //公衆微信平臺下可以找到
            string dappsecret = "????????????";  //公衆微信平臺下可以找到

            WeixinHelper weihelper = new WeixinHelper();
            accesstoken = weihelper.IsExistAccess_Token(dappid, dappsecret);
            string url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accesstoken;
            DataJson = "{";
            DataJson += string.Format("\"scene\":\"{0}\",", roomId);//所要傳的參數用分看
            DataJson += string.Format("\"width\":\"{0}\",", width);
            DataJson += string.Format("\"page\":\"{0}\"", page);//掃碼所要跳轉的地址,根路徑前不要填加'/'不能攜帶參數(參數請放在scene字段裏),如果不填寫這個字段,默認跳主頁面
            DataJson += "}";
            ret = CreateWeChatQrCode(url, DataJson, picPath);
        }
        catch (Exception e)
        {
            ret = e.Message;
        }
        return ret;//返回圖片地址
    }


    /// <summary>
    /// 返回二維碼圖片
    /// </summary>
    /// <param name="url"></param>
    /// <param name="param"></param>
    /// <returns></returns>
    public static string CreateWeChatQrCode(string url, string param, string path)
    {
       
        string strURL =  url;
        HttpWebRequest request;
        string imgName = string.Empty;
     
        try
        {
            request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);


            request.Method = "POST";
            request.ContentType = "application/json;charset=UTF-8";
            string paraUrlCoded = param;
            //byte[] payload;
            byte[] payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
            request.ContentLength = payload.Length;
            Stream writer = request.GetRequestStream();
            writer.Write(payload, 0, payload.Length);
            writer.Close();
            System.Net.HttpWebResponse response;
            response = (System.Net.HttpWebResponse)request.GetResponse();
            System.IO.Stream s;
            s = response.GetResponseStream();//返回圖片數據流
            byte[] tt = StreamToBytes(s);//將數據流轉爲byte[]
            //在文件名前面加上時間,以防重名
            imgName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
            //獲取相對於應用的基目錄創建目錄
            string imgPath = System.Web.Hosting.HostingEnvironment.MapPath(path);//System.AppDomain.CurrentDomain.baxxxxseDirectory + path;     //通過此對象獲取文件名
            if (!Directory.Exists(imgPath))
            {
                Directory.CreateDirectory(imgPath);
            }
            System.IO.File.WriteAllBytes(HttpContext.Current.Server.MapPath(path + imgName), tt);//講byte[]存儲爲圖片
        }
        catch (Exception ex)
        {

        }
        return path + imgName;
    }


    /// <summary>
    /// 將數據流轉爲byte[]
    /// </summary>
    /// <param name="stream"></param>
    /// <returns></returns>
    public static byte[] StreamToBytes(Stream stream)
    {
        List<byte> bytes = new List<byte>();
        int temp = stream.ReadByte();
        while (temp != -1)
        {
            bytes.Add((byte)temp);
            temp = stream.ReadByte();
        }
        return bytes.ToArray();
    }
    #endregion

發佈了212 篇原創文章 · 獲贊 306 · 訪問量 244萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章