C# 生成小程序碼


  1  /// <summary>
  2  /// B接口-微信小程序帶參數二維碼的生成
  3  /// </summary>
  4  /// <param name="access_token"></param>
  5  /// <returns></returns>
  6  public static string CreateWxCode(string access_token string roomId)
  7  {
  8      string ret = string.Empty;
  9      try
 10      {
 11          string page = ConfigurationManager.AppSettings["page"].ToString();
 12 
 13          string DataJson = string.Empty;
 14          //適用於需要的碼數量極多,或僅臨時使用的業務場景
 15          //通過該接口生成的小程序碼,永久有效,數量暫無限制。
 16          string url = "wxa/getwxacodeunlimit?access_token=" + access_token;
 17          DataJson = "{";
 18          DataJson += string.Format("'scene':'{0}'" "1234567");//所要傳的參數用分看
 19          DataJson += string.Format("'width':'{0}'" 200);
 20          DataJson += string.Format("'page':'{0}'" page);//掃碼所要跳轉的地址,根路徑前不要填加'/'不能攜帶參數(參數請放在scene字段里),如果不填寫這個字段,默認跳主頁面
 21          DataJson += "'line_color':{";
 22          DataJson += string.Format("'r':'{0}'" "0");
 23          DataJson += string.Format("'g':'{0}'" "0");
 24          DataJson += string.Format("'b':'{0}'" "0");
 25          DataJson += "}";
 26          DataJson += "}";
 27 
 28 
 29          string jsondata = JsonConvert.Serializeobxxxxject(DataJson);
 30          //DataJson的配置見小程序開發文檔,B接口:https://mp.weixin.qq.com/debug/wxadoc/dev/api/qrcode.html
 31          ret = CreateWeChatQrCode(url jsondata);
 32      }
 33      catch (Exception e)
 34      {
 35          ret = e.Message;
 36      }
 37      return ret;//返回圖片地址
 38  }
 39 
 40 
 41  /// <summary>
 42  /// 返回二維碼圖片
 43  /// </summary>
 44  /// <param name="url"></param>
 45  /// <param name="param"></param>
 46  /// <returns></returns>
 47  public static string CreateWeChatQrCode(string url string param)
 48  {
 49      string wechatapi = ConfigurationManager.AppSettings["wechatapi"].ToString();
 50      string qrcodepath = ConfigurationManager.AppSettings["qrcodepath"].ToString();
 51      string strURL = wechatapi+ url;
 52      HttpWebRequest request;
 53      string imgName = string.Empty;
 54      string path = string.Empty;
 55      try
 56      {
 57      request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
 58 
 59 
 60      request.Method = "POST";
 61      request.ContentType = "application/json;charset=UTF-8";
 62      string paraUrlCoded = param;
 63      //byte[] payload;
 64      byte[] payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
 65      request.ContentLength = payload.Length;
 66      Stream writer = request.GetRequestStream();
 67      writer.Write(payload 0 payload.Length);
 68      writer.Close();
 69      System.Net.HttpWebResponse response;
 70      response = (System.Net.HttpWebResponse)request.GetResponse();
 71      System.IO.Stream s;
 72      s = response.GetResponseStream();//返回圖片數據流
 73 
 74      byte[] tt = StreamToBytes(s);//將數據流轉為byte[]
 75 
 76 
 77      //在文件名前面加上時間,以防重名
 78      imgName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
 79      //文件存儲相對於當前應用目錄的虛擬目錄
 80      path = qrcodepath + "EWM/";
 81 
 82 
 83      //獲取相對於應用的基目錄創建目錄
 84      string imgPath = System.Web.Hosting.HostingEnvironment.MapPath(path);//System.AppDomain.CurrentDomain.baxxxxseDirectory + path;     //通過此對象獲取文件名
 85      if (!Directory.Exists(imgPath))
 86      {
 87          Directory.CreateDirectory(imgPath);
 88      }
 89      System.IO.File.WriteAllBytes(HttpContext.Current.Server.MapPath(path + imgName) tt);//講byte[]存儲為圖片
 90      }
 91      catch (Exception ex)
 92      {
 93          ExceptionPolicy.HandleException(ex LZExceptionType.System
 94               "生成小程序二維碼失敗!源:Lz.Product.LJXQJGF.BLL.Files.CreateWeChatQrCode方法出錯 ");
 95      }
 96      return path + imgName;
 97  }
 98 
 99 
100 
101 
102  /// <summary>
103  /// 將數據流轉為byte[]
104  /// </summary>
105  /// <param name="stream"></param>
106  /// <returns></returns>
107  public static byte[] StreamToBytes(Stream stream)
108  {
109      List<byte> bytes = new List<byte>();
110      int temp = stream.ReadByte();
111      while (temp != -1)
112      {
113          bytes.Add((byte)temp);
114          temp = stream.ReadByte();
115      }
116      return bytes.ToArray();
117  }

獲取access_token請參考我的另外一篇博客:https://www.cnblogs.com/qinaqina/p/11610346.html


免責聲明!

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



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