1. 程式人生 > 其它 >微信公眾號之傳送微信模板--.net core 5.0

微信公眾號之傳送微信模板--.net core 5.0

static public string Template(string openId, string studentTel, string studentName, string source)
{
//從配置中提取後臺域名
var apolloData = ApolloToConfigure.Get();
var siteUrl = apolloData.AdminMobileUrl;
var model = new TemplateMessage();
model.template_id = "模板id";
//頁面跳轉連結url
model.url = siteUrl;
model.topcolor = "#333";
model.touser = openId;
var name = string.IsNullOrEmpty(studentName) ? studentTel : studentName;

model.data = new
{
first = new
{
value = "你好!歡迎註冊",
color = "#173177"
},
keyword1 = new//提交時間
{
value =$"註冊時間["+ DateTime.Now.ToString("yyyy-MM-dd HH:mm")+"]",
color = "#173177"
},
keyword2 = new//提交內容
{
value = $"名稱[" + name + "]通過[" + source + "]註冊",
color = "#173177"
},
keyword3 = new//處理結果
{
value = $"註冊成功!",
color = "#173177"
},
remark = new
{
value = $"請及時分配處理",
color = "#173177"
}
};
return Newtonsoft.Json.JsonConvert.SerializeObject(model);
}


/// <summary>
/// 傳送微信訊息
/// </summary>
/// <returns></returns>
public Tuple<bool, string> SendWeChatMessage(string message, string title)
{
try
{
var _access_token = Get_Access_token();
var response = Send_Message(message, _access_token);
//_logger.Info(response.errcode == "0" ? title + "微信訊息傳送成功" : title + "微信訊息傳送失敗", response.errmsg);
if (response.errcode == "0") return Tuple.Create(true, "微信訊息傳送成功");
return Tuple.Create(false, response.errmsg);

}
catch (Exception ex)
{
_logger.Error(title + "微信訊息傳送失敗", ex.Message);
return Tuple.Create(false, ex.Message);
}
}

/// <summary>
/// 微信訊息傳送URL
/// </summary>
protected string GetSendUrl
{
get
{
return "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
}
}


/// <summary>
/// 同步傳送微信訊息
/// </summary>
/// <param name="messages">訊息內容(JSON字串)</param>
protected ResultMsg Send_Message(string messages, string _access_token = null)
{
if (string.IsNullOrEmpty(_access_token))
{
_access_token = Get_Access_token();
}
var _sendUrl = GetSendUrl + _access_token;
var results = WebServiceApi.PostServer(_sendUrl, messages);
return Newtonsoft.Json.JsonConvert.DeserializeObject<ResultMsg>(results);
}

//傳送訊息到伺服器
/// <summary>
/// Post請求(同步)
/// </summary>
/// <param name="posturl">URL</param>
/// <param name="postData">請求資料</param>
/// <returns></returns>
public static string PostServer(string posturl, string postData)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
Encoding encoding = Encoding.UTF8;
byte[] data = encoding.GetBytes(postData);
// 準備請求...
try
{
// 設定引數
HttpWebRequest request = WebRequest.Create(posturl) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "text/xml;charset=utf-8";// "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
//傳送請求並獲取相應迴應資料
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程式才開始向目標網頁傳送Post請求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
//返回結果網頁(html)程式碼
string content = sr.ReadToEnd();
//Response.Write(content);
return content;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (outstream != null)
{
outstream.Dispose();
outstream.Close();
}
if (instream != null)
{
instream.Dispose();
instream.Close();
}
if (sr != null)
{
sr.Dispose();
sr.Close();
}
if (response != null)
{
response.Dispose();
response.Close();
}

}
}