Exemple #1
0
        /// <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());
                }
            }
        }