基本参数
- 用户的
openid
access_token
- 公众号和小程序的
appid
- 模板ID
openid
获取方法之前的文章有提到过
公众号和小程序的appid
和模板ID都可以在微信公众号平台获取到

下面我们就讲讲access_token
的获取方式
将AppID和AppSecret(小程序密钥)调用接口即可
注意:access_token
是有时间限制的最好存到缓存里
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
public static string JsCode2Session() { string appid = "wx************"; string secret = "************************"; string JsCode2SessionUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}"; var url = string.Format(JsCode2SessionUrl, appid, secret); var str = GetFunction(url); try { JObject jo = (JObject)JsonConvert.DeserializeObject(str); string access_token = jo["access_token"].ToString(); return access_token; } catch (Exception ex) { return ""; } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public static string GetFunction(string url) { string serviceAddress = url; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress); request.Method = "GET"; request.ContentType = "textml;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; }
|
发送消息
首先找到该模板找到详细信息里面分别对应的参数first
keyword1
keyword2
keyword3
备注有的话就显示没有的话就不显示
注意:详细信息前面的标语是不变的所以找模板的时候要找对应的

第一个appid是公众号的
第二个是微信小程序的
因为微信之前取消了小程序发送消息现在只基于公众号所以用户也必须关注该公众号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
[HttpPost] public string approvalcontent(string openid, string createdate, string createUsername, string Reason) { var accesstoken = fly_Fp_ApplyForIBLL.JsCode2Session(); string json = "{\"touser\": \"" + openid + "\", " + "\"mp_template_msg\": { " + "\"appid\": \"wx************\"," + "\"template_id\": \"X82CtoGmegLQpGZAV6lDpT3uBcVA7vZNJhx52fwVBpg\"," + "\"url\": \"http://weixin.qq.com/download\"," + "\"miniprogram\": { " + "\"appid\": \"wx**************\"," + "\"pagepath\": \"pages/login\" }," + "\"data\": {" + "\"first\": { \"value\": \"审批退回!\"}," + "\"keyword1\": { \"value\": \"开票内容\", \"color\": \"#173177\"}," + "\"keyword2\": { \"value\": \"" + createdate + "\",\"color\": \"#173177\"}," + "\"keyword3\": { \"value\": \"" + createUsername + "\", \"color\": \"#173177\"}," + "\"remark\": { \"value\": \"" + Reason + "\",\"color\": \"#173177\"}}}}"; return wxapi.SendTemplateMsg(json, accesstoken); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
public static string SendTemplateMsg(string data,string accesstoken) { string url = string.Format("https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token={0}", accesstoken); HttpWebRequest hwr = System.Net.WebRequest.Create(url) as HttpWebRequest; hwr.Method = "POST"; hwr.ContentType = "application/x-www-form-urlencoded"; byte[] payload; payload = System.Text.Encoding.UTF8.GetBytes(data); hwr.ContentLength = payload.Length; Stream writer = hwr.GetRequestStream(); writer.Write(payload, 0, payload.Length); writer.Close(); var result = hwr.GetResponse() as HttpWebResponse; string strMsg = WebResponseGet(result); if (strMsg.IndexOf("42001") != -1) { string token = wxapi.JsCode2Session(); return SendTemplateMsg(data, token); } return strMsg; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
public static string WebResponseGet(HttpWebResponse webResponse) { StreamReader responseReader = null; string responseData = ""; try { responseReader = new StreamReader(webResponse.GetResponseStream()); responseData = responseReader.ReadToEnd(); } catch { throw; } finally { webResponse.GetResponseStream().Close(); responseReader.Close(); responseReader = null; } return responseData; }
|