二維碼生成
CreateWxCode("id=117", "pages/bookcheck/bookchecktime/bookchecktime", "430", "/Upload/2xcxcode/")
#region 生成小程序二維碼
/// <summary>
/// 通過該接口生成的小程序碼,永久有效,數量暫無限制。
/// </summary>
/// <param name="access_token"></param>
/// <returns></returns>
public static string CreateWxCode(string roomId, string page, string width,string picPath)
{
string ret = string.Empty, accesstoken = "", DataJson = "";
try
{
///獲取token
string dappid = "?????"; //公衆微信平臺下可以找到
string dappsecret = "????????????"; //公衆微信平臺下可以找到
WeixinHelper weihelper = new WeixinHelper();
accesstoken = weihelper.IsExistAccess_Token(dappid, dappsecret);
string url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accesstoken;
DataJson = "{";
DataJson += string.Format("\"scene\":\"{0}\",", roomId);//所要傳的參數用分看
DataJson += string.Format("\"width\":\"{0}\",", width);
DataJson += string.Format("\"page\":\"{0}\"", page);//掃碼所要跳轉的地址,根路徑前不要填加'/'不能攜帶參數(參數請放在scene字段裏),如果不填寫這個字段,默認跳主頁面
DataJson += "}";
ret = CreateWeChatQrCode(url, DataJson, picPath);
}
catch (Exception e)
{
ret = e.Message;
}
return ret;//返回圖片地址
}
/// <summary>
/// 返回二維碼圖片
/// </summary>
/// <param name="url"></param>
/// <param name="param"></param>
/// <returns></returns>
public static string CreateWeChatQrCode(string url, string param, string path)
{
string strURL = url;
HttpWebRequest request;
string imgName = string.Empty;
try
{
request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
string paraUrlCoded = param;
//byte[] payload;
byte[] 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 = StreamToBytes(s);//將數據流轉爲byte[]
//在文件名前面加上時間,以防重名
imgName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
//獲取相對於應用的基目錄創建目錄
string imgPath = System.Web.Hosting.HostingEnvironment.MapPath(path);//System.AppDomain.CurrentDomain.baxxxxseDirectory + path; //通過此對象獲取文件名
if (!Directory.Exists(imgPath))
{
Directory.CreateDirectory(imgPath);
}
System.IO.File.WriteAllBytes(HttpContext.Current.Server.MapPath(path + imgName), tt);//講byte[]存儲爲圖片
}
catch (Exception ex)
{
}
return path + imgName;
}
/// <summary>
/// 將數據流轉爲byte[]
/// </summary>
/// <param name="stream"></param>
/// <returns></returns>
public static byte[] StreamToBytes(Stream stream)
{
List<byte> bytes = new List<byte>();
int temp = stream.ReadByte();
while (temp != -1)
{
bytes.Add((byte)temp);
temp = stream.ReadByte();
}
return bytes.ToArray();
}
#endregion