C#微信发送模板消息功能

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.IO;
using System.Threading.Tasks;
using Newtonsoft.Json;


namespace Common
{
    public class WeChat
    {
        private const string appid = "wx5549020498b877c2";
        private const string secret = "23e4036a44dd0f0d700cd659daf2c5b7";
        public class AccessToken
        {
            public string access_token { get; set; }
            public int expires_in { get; set; }
            public DateTime CreateDate { get; set; }


        }
        public void SendTemplete(string temid,string touser,object data)
        {
            var token = GetAccessToken();
            var postUrl = string.Format("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}", token);
            var msgData = new 
            {
                touser = touser,
                template_id = temid,
                data = data
            };
            var j = JsonConvert.SerializeObject(msgData);
            var res = GetDataByPost(postUrl, j);


        }
        private  string GetAccessToken()
        {
            var token = new AccessToken();
            var accessToken = CacheHelper.GetCache("accessToken");
            if (accessToken == null)
            {
                //获取TOKEN
                token = GetToken();
                CacheHelper.SetCache("accessToken", token);
                
            }
            else
            {
                token = CacheHelper.GetCache("accessToken") as AccessToken;                
                //判断时间
                if (DateTime.Now >token.CreateDate.AddSeconds(token.expires_in))
                {
                    //获取TOKEN
                    token = GetToken();
                    CacheHelper.SetCache("accessToken", token);
                }
            }


            var t = CacheHelper.GetCache("accessToken") as AccessToken;
            return t.access_token;
        }
        private AccessToken GetToken()
        {
            string apiurl = $"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}";
            string res = GetDataByPost(apiurl);
            var v= JsonConvert.DeserializeObject<AccessToken>(res);
            v.CreateDate = DateTime.Now;
            return v;
        }
        private string GetDataByPost(string url,string postData = "")
        {
            string result = "";
            byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData);
            try
            {


                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.ContentType = "application/x-www-form-urlencoded";
                request.Referer = url;
                request.Accept = "*/*";
                request.Timeout = 30 * 1000;
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
                request.Method = "POST";
                request.ContentLength = byteData.Length;
                Stream stream = request.GetRequestStream();
                stream.Write(byteData, 0, byteData.Length);
                stream.Flush();
                stream.Close();
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream backStream = response.GetResponseStream();
                StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));
                result = sr.ReadToEnd();
                sr.Close();
                backStream.Close();
                response.Close();
                request.Abort();
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }
            return result;
        } 
    }

}


使用代码


  var wx = new WeChat();
            var data = new
            {
                first = new {value="1"},
                keyword1=new {value="2"},
                keyword2 =new {value="3"},
                keyword3 =new {value="4"},
                keyword4 =new {value="5"},
                remark=new {value="remark"}

            };

  wx.SendTemplete("2l8wR0HMUXJkVldvgcSaFFmUCVgePhZ7dKzNDSbp8NA", "__openId__", data);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值