1.先新建一個類庫,以方便之後移植到其餘的項目上繼續使用,如何新建類庫就本身去百度了哈,這裏就不描述了,如有不會的朋友請留言哈。標紅了的都要注意下咯。數據庫
2.先看看WxTemplate這個類文件的代碼api
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WxTemplateMsg { public class WxTemplate { /// <summary> /// 目標用戶OpenId /// </summary> public string touser { get; set; } /// <summary> /// 模板ID /// </summary> public string template_id { get; set; } /// <summary> /// 模板消息頂部顏色(16進制),默認爲#FF0000 /// </summary> public string topcolor { get; set; } /// <summary> /// 模板跳轉連接 /// </summary> public string url { get; set; } /// <summary> /// 數據 /// </summary> public object data { get; set; } public WxTemplate() { topcolor = "#FF0000"; } } public class TemplateDataItem { /// <summary> /// 項目值 /// </summary> public string value { get; set; } /// <summary> /// 16進制顏色代碼,如:#FF0000 /// </summary> public string color { get; set; } /// <summary> /// /// </summary> /// <param name="v">value</param> /// <param name="c">color</param> public TemplateDataItem(string v, string c = "#173177") { value = v; color = c; } } }
TemplateModel文件夾是放不一樣模板的類文件,我這裏的是金額變更的微信模板消息微信
MemRechargeTemplate.cs文件代碼以下:app
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WxTemplateMsg.TemplateModel { public class MemRechargeTemplate { /// <summary> /// 標題 /// </summary> public TemplateDataItem first { get; set; } /// <summary> /// 日期 /// </summary> public TemplateDataItem date { get; set; } /// <summary> /// 變更金額 /// </summary> public TemplateDataItem adCharge { get; set; } /// <summary> /// /// </summary> public TemplateDataItem type { get; set; } /// <summary> /// 卡內餘額 /// </summary> public TemplateDataItem cashBalance { get; set; } /// <summary> /// 備註 /// </summary> public TemplateDataItem remark { get; set; } } }
3.怎麼調用呢,看下面代碼:post
#region 發送模板消息 WxTemplateMsg.WxTemplate wxTemp = new WxTemplateMsg.WxTemplate(); wxTemp.touser = openid; wxTemp.template_id = template_id; wxTemp.topcolor = "#FF0000"; wxTemp.url = "http://" + PubFunction.curParameter.strDoMain + "/mobile/member/bill.aspx"; MemRechargeTemplate memRecTemp = new MemRechargeTemplate(); memRecTemp.first = new WxTemplateMsg.TemplateDataItem(title); memRecTemp.date = new WxTemplateMsg.TemplateDataItem(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); memRecTemp.adCharge = new WxTemplateMsg.TemplateDataItem((dclTotalRechargeMoney).ToString("#0.00")); memRecTemp.type = new WxTemplateMsg.TemplateDataItem(""); memRecTemp.cashBalance = new WxTemplateMsg.TemplateDataItem(modelMem.MemMoney.ToString("#0.00")); memRecTemp.remark = new WxTemplateMsg.TemplateDataItem("點擊「詳情「當即查閱您的賬戶財務記錄。"); wxTemp.data = memRecTemp; string res = PubFunction.PushTempleModel(wxTemp, access_token); if (!res.Contains("ok")) { //PubFunction.LogError("會員充值推送錯誤》" + res);//這裏是把錯誤日誌進入到數據庫的表中,這個就自行補腦了哈 } #endregion
上面的代碼中有一個方法:PushTempleModel編碼
/// <summary> /// 發送模板消息 /// </summary> /// <returns></returns> public static string PushTempleModel(WxTemplateMsg.WxTemplate tm, string access_token) { string url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token; HttpRequestHelper httpRequest = new HttpRequestHelper(); string postData = JavaScriptConvert.SerializeObject(tm); string response = httpRequest.Reqeust(url, postData);//調用HTTP通訊接口提交數據 return response; }
HttpRequestHelper.cs文件的代碼:url
public string Reqeust(string url, string postText) { System.Net.HttpWebRequest request; request = (System.Net.HttpWebRequest)WebRequest.Create(url); //Post請求方式 request.Method = "POST"; // 內容類型 request.ContentType = "application/x-www-form-urlencoded"; //// 參數通過URL編碼 //string paraUrlCoded = System.Web.HttpUtility.UrlEncode(postText); byte[] payload; //將URL編碼後的字符串轉化爲字節 payload = System.Text.Encoding.UTF8.GetBytes(postText); //設置請求的 ContentLength request.ContentLength = payload.Length; //得到請 求流 System.IO.Stream writer = request.GetRequestStream(); //將請求參數寫入流 writer.Write(payload, 0, payload.Length); // 關閉請求流 writer.Close(); System.Net.HttpWebResponse response; // 得到響應流 response = (System.Net.HttpWebResponse)request.GetResponse(); System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8); string responseText = reader.ReadToEnd(); reader.Close(); return responseText; }
在此完畢了,有疑問的朋友請留言哈,若沒能及時回覆還請見諒哈。spa