博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 封装微信的模板消息
阅读量:5114 次
发布时间:2019-06-13

本文共 5493 字,大约阅读时间需要 18 分钟。

 

1.先新建一个类库,以方便以后移植到其他的项目上继续使用,如何新建类库就自己去百度了哈,这里就不描述了,若有不会的朋友请留言哈。标红了的都要注意下咯。

 

2.先看看WxTemplate这个类文件的代码

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace WxTemplateMsg{    public class WxTemplate    {        ///         /// 目标用户OpenId        ///         public string touser { get; set; }        ///         /// 模板ID        ///         public string template_id { get; set; }        ///         /// 模板消息顶部颜色(16进制),默认为#FF0000        ///         public string topcolor { get; set; }        ///         /// 模板跳转链接        ///         public string url { get; set; }        ///         /// 数据        ///         public object data { get; set; }        public WxTemplate()        {            topcolor = "#FF0000";        }    }    public class TemplateDataItem    {        ///         /// 项目值        ///         public string value { get; set; }        ///         /// 16进制颜色代码,如:#FF0000        ///         public string color { get; set; }        ///         ///         ///         /// value        /// color        public TemplateDataItem(string v, string c = "#173177")        {            value = v;            color = c;        }    }}

TemplateModel文件夹是放不同模板的类文件,我这里的是金额变动的微信模板消息

MemRechargeTemplate.cs文件代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace WxTemplateMsg.TemplateModel{    public class MemRechargeTemplate    {        ///         /// 标题        ///         public TemplateDataItem first { get; set; }        ///         /// 日期        ///         public TemplateDataItem date { get; set; }        ///         /// 变动金额        ///         public TemplateDataItem adCharge { get; set; }        ///         ///         ///         public TemplateDataItem type { get; set; }        ///         /// 卡内余额        ///         public TemplateDataItem cashBalance { get; set; }        ///         /// 备注        ///         public TemplateDataItem remark { get; set; }    }}

3.怎么调用呢,看下面代码:

#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

///     /// 发送模板消息    ///     /// 
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文件的代码:

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;        }

在此完毕了,有疑问的朋友请留言哈,若没能及时回复还请见谅哈。

转载于:https://www.cnblogs.com/LoveQin/p/8809404.html

你可能感兴趣的文章
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Yii2 Lesson - 03 Forms in Yii
查看>>
Python IO模型
查看>>
Ugly Windows
查看>>
DataGridView的行的字体颜色变化
查看>>
Java再学习——关于ConcurrentHashMap
查看>>
如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
查看>>
局域网内手机访问电脑网站注意几点
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Day19内容回顾
查看>>
第七次作业
查看>>
SpringBoot项目打包
查看>>
Linux操作系统 和 Windows操作系统 的区别
查看>>
《QQ欢乐斗地主》山寨版
查看>>
文件流的使用以及序列化和反序列化的方法使用
查看>>
Android-多线程AsyncTask
查看>>
第一个Spring冲刺周期团队进展报告
查看>>
红黑树 c++ 实现
查看>>
Android 获取网络链接类型
查看>>