/// <summary> /// 生成小程序码方法 /// </summary> /// <param name="param"></param> public void CreateQrCode(WxPayData param, string httpUrl, ref string imageUrl) { try { System.Net.HttpWebRequest request; request = (System.Net.HttpWebRequest)WebRequest.Create(httpUrl); request.Method = "POST"; request.ContentType = "application/json;charset=UTF-8"; string paraUrlCoded = param.ToJson(); byte[] payload; 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 = ShopCommon.StreamToBytes(s); //将数据流转为byte[] //在文件名前面加上时间,以防重名 string imgName = "xcx_" + Guid.NewGuid().ToString() + ".png"; //文件存储相对于当前应用目录的虚拟目录 string path = "/upload/qrcode/"; //获取相对于应用的基目录,创建目录 string imgPath = System.AppDomain.CurrentDomain.BaseDirectory + path; //通过此对象获取文件名 if (!Directory.Exists(imgPath)) { Directory.CreateDirectory(imgPath); } //System.IO.File.WriteAllBytes(Server.MapPath(path + imgName), tt);//讲byte[]存储为图片 #region Png MemoryStream stream = new MemoryStream(tt); System.Drawing.Image img = System.Drawing.Image.FromStream(stream); img.Save(Server.MapPath(path + imgName), System.Drawing.Imaging.ImageFormat.Png); #endregion imageUrl = path + imgName; } catch (Exception e) { Log.Error("CreateQrCode", e.ToString()); } }
/// <summary> /// 生成小程序二维码 /// 带参数(商品Id),扫码进入小程序商品详情页 /// </summary> /// <param name="pid">商品Id</param> /// <param name="imageName">生成的二维码相对路径+名称</param> /// <param name="oldImage">原二维码相对路径+名称</param> private void CreateMiniProgramCode(int pid, ref string imageName, string oldImage = "") { if (pid > 0) { string access_token = XcxApi.Pay.WxGetInfo.IsExistAccess_Token(); string url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + access_token; XcxApi.Pay.WxPayData jsondata = new XcxApi.Pay.WxPayData(); jsondata.SetValue("scene", pid); jsondata.SetValue("page", "pages/product/detail"); jsondata.SetValue("width", 430); try { #region 除原图 if (!string.IsNullOrWhiteSpace(oldImage)) { if (File.Exists(Server.MapPath(oldImage))) { File.Delete(Server.MapPath(oldImage)); } } #endregion System.Net.HttpWebRequest request; request = (System.Net.HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json;charset=UTF-8"; string paraUrlCoded = jsondata.ToJson(); byte[] payload; 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 = ShopCommon.StreamToBytes(s); //将数据流转为byte[] //在文件名前面加上时间,以防重名 string imgName = "xcx_" + Guid.NewGuid().ToString() + ".png"; //文件存储相对于当前应用目录的虚拟目录 string path = "/upload/qrcode/"; //获取相对于应用的基目录,创建目录 string imgPath = System.AppDomain.CurrentDomain.BaseDirectory + path; //通过此对象获取文件名 if (!Directory.Exists(imgPath)) { Directory.CreateDirectory(imgPath); } //System.IO.File.WriteAllBytes(Server.MapPath(path + imgName), tt);//讲byte[]存储为图片 #region Png MemoryStream stream = new MemoryStream(tt); System.Drawing.Image img = System.Drawing.Image.FromStream(stream); img.Save(Server.MapPath(path + imgName), System.Drawing.Imaging.ImageFormat.Png); #endregion imageName = path + imgName; } catch (Exception e) { XcxApi.Pay.Log.Error("CreateProductMiniProgramQrCode", e.ToString()); } } }