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