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

posted @ 2019-09-29 22:31  Tony-JH  阅读(3449)  评论(1编辑  收藏  举报
乐趣和分享!如有不当之处,烦请不吝赐教