最近在項目中使用到了微信消息模板推送的功能,也就是將對應的消息推送到對應的用戶微信上去,前提是你必需要有一個微信公衆號而且是付費了的纔會有這個功能,還有就是要推送的用戶必須是的關注了你的微信公衆號的。小程序
這個流程是這樣的首先用戶關注你的微信公衆號,讓後獲取到對應用戶的oppenid,而後就能夠經過對應的用戶oppenid選折對應的消息模板把消息推送給用戶。api
參數 | 是否必填 | 說明 |
---|---|---|
touser | 是 | 接收者openid |
template_id | 是 | 模板ID |
url | 否 | 模板跳轉連接(海外賬號沒有跳轉能力) |
miniprogram | 否 | 跳小程序所需數據,不需跳小程序可不用傳該數據 |
appid | 是 | 所需跳轉到的小程序appid(該小程序appid必須與發模板消息的公衆號是綁定關聯關係,暫不支持小遊戲) |
pagepath | 否 | 所需跳轉到小程序的具體頁面路徑,支持帶參數,(示例index?foo=bar),要求該小程序已發佈,暫不支持小遊戲 |
data | 是 | 模板數據 |
color | 否 | 模板內容字體顏色,不填默認爲黑色 |
using System; using System.IO; using System.Net; using System.Text; using Newtonsoft.Json; namespace JJHL.Service { /// <summary> /// 微信消息推送 /// </summary> public class WxChatPrompt { public WxChatPrompt() { } private static WxChatPrompt _objPrompt; public static WxChatPrompt _ { get => _objPrompt ?? new WxChatPrompt(); set => _objPrompt = value; } /// <summary> /// 消息推送 /// </summary> /// <param name="Access_token">網頁受權憑證,經過微信接口獲取</param> /// <param name="Openid">要推送的用戶oppenid</param> /// <returns></returns> public string MsgPush(string Access_token, string Openid) { string templateId = "";//模板編號 string firstContent= "";//內容 string keyword1 = "";//自定義內容 string keyword2 = "";//自定義內容 string keyword3 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //時間 string remark = "";//備註 string contentmsg = "{\"touser\":\"" + Openid + "\",\"template_id\":\"" + templateId + "\",\"topcolor\":\"#FF0000\",\"data\":{\"first\":{\"value\":\"" + firstContent + "\",\"color\":\"#173177\"},\"keyword1\":{\"value\":\"" + keyword1 + "\",\"color\":\"#173177\"},\"keyword2\":{\"value\":\"" + keyword2 + "\",\"color\":\"#173177\"},\"keyword3\":{\"value\":\"" + keyword3 + "\",\"color\":\"#173177\"},\"remark\":{\"value\":\"" +remark + "\",\"color\":\"#173177\"}}}"; string result = WeChatPushNotice(Access_token, contentmsg); return result; } /// <summary> ///微信消息推送 /// </summary> /// <param name="accessToken">微信access_token</param> /// <param name="contentMsg">推送內容</param> /// <returns></returns> public string WeChatPushNotice(string accessToken, string contentMsg) { string promat = ""; //須要提交的數據 byte[] bs = Encoding.UTF8.GetBytes(contentMsg); HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken + ""); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.ContentLength = bs.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(bs, 0, bs.Length); } HttpWebResponse respon = (HttpWebResponse)req.GetResponse(); Stream stream = respon.GetResponseStream(); using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { promat = reader.ReadToEnd(); } ReturnMsg y = JsonConvert.DeserializeObject<ReturnMsg>(promat); promat = y.errmsg; return promat; } /// <summary> /// 自定義模型 /// </summary> private class ReturnMsg { public string errcode { get; set; } public string errmsg { get; set; } public string msgid { get; set; } } } }
{ "errcode":0, "errmsg":"ok", "msgid":200228332 }