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

2.先看看WxTemplate这个类文件的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace WxTemplateMsg
{
public class WxTemplate
{
/// <summary>
/// 目标用户OpenId
/// </summary>
public string touser { get; set; }
/// <summary>
/// 模板ID
/// </summary>
public string template_id { get; set; }
/// <summary>
/// 模板消息顶部颜色(16进制),默认为#FF0000
/// </summary>
public string topcolor { get; set; }
/// <summary>
/// 模板跳转链接
/// </summary>
public string url { get; set; }
/// <summary>
/// 数据
/// </summary>
public object data { get; set; }
public WxTemplate()
{
topcolor = "#FF0000";
}
} public class TemplateDataItem
{
/// <summary>
/// 项目值
/// </summary>
public string value { get; set; }
/// <summary>
/// 16进制颜色代码,如:#FF0000
/// </summary>
public string color { get; set; }
/// <summary>
///
/// </summary>
/// <param name="v">value</param>
/// <param name="c">color</param>
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
{
/// <summary>
/// 标题
/// </summary>
public TemplateDataItem first { get; set; }
/// <summary>
/// 日期
/// </summary>
public TemplateDataItem date { get; set; }
/// <summary>
/// 变动金额
/// </summary>
public TemplateDataItem adCharge { get; set; }
/// <summary>
///
/// </summary>
public TemplateDataItem type { get; set; }
/// <summary>
/// 卡内余额
/// </summary>
public TemplateDataItem cashBalance { get; set; }
/// <summary>
/// 备注
/// </summary>
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
/// <summary>
/// 发送模板消息
/// </summary>
/// <returns></returns>
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, , 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;
}
在此完毕了,有疑问的朋友请留言哈,若没能及时回复还请见谅哈。
C# 封装微信的模板消息的更多相关文章
- tp 推送微信的模板消息
设置推送类: <?php /** * tpshop 微信支付插件 * ============================================================== ...
- 微信小程序开发 给微信发送模板消息提示openId无效
参数我都给好了,也是post的raw方式发送请求, openId是绝对没有问题的. 但就是一直报如下错误 {"errcode":40003,"errmsg":& ...
- C#开发微信门户及应用(27)-公众号模板消息管理
通过模板消息接口,公众号能向关注其账号的用户发送预设模板的消息.模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消 ...
- .net微信公众号开发——模板消息
作者:王先荣 本文介绍微信公众号中的模板消息,包括以下内容:(1)TemplateMessage类简介:(2)设置所属行业:(3)获得模板id:(4)发送模板消息:(5)接收推送模板消息发送结果 ...
- java 微信公众服务平台 下发 模板消息
java 微信公众服务平台 下发 模板消息 (一).部分截图 (二).部分代码 (一).部分截图: (二).部分代码: //此处 给用户微信发消息... Map<String,String> ...
- 前后端分离djangorestframework—— 接入微信模板消息推送
微信 什么是微信也不多说,跟前面的支付宝一样的 微信支付 微信支付也有个沙箱环境,沙箱环境官方文档 由文档中那句很显眼的话所得,即使是测试环境也需要真实的商户号,所以这个就没法想支付宝那样用沙箱账号来 ...
- java开发微信模板消息推送
发布时间:2018-12-12 技术:springboot+maven 概述 该demo主要涉及微信模板消息推送功能, 详细 代码下载:http://www.demodashi.com/dem ...
- 应用jfinal发送微信模板消息的一个bug
严格来讲,这不是一个bug,只是我们应用的方式不对.微信发送模板消息的方法是: HttpUtils.post(sendApiUrl + AccessTokenApi.getAccessTokenStr ...
- 微信模板消息php
微信的模板消息需要认证的公众号后台申请 申请通过后就可以用平台定义的消息模板了 define('IN_ECS', true); require(dirname(__FILE__) . '/includ ...
随机推荐
- ****** 四十九 ******、软设笔记【UML分析和意义】-建模的意义,UML的特点、结构,用例图
UML UML又称同一建模语言或标准建模语言,是一个支持模型化和软件系统开发的图形化语言,它的作用域不仅支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程. 建模的意义: 模型是对现实的 ...
- 课堂测试——jsp登录界面设计
实现结果:在login.jsp页面提交用户名和密码(可以验证是否为空),点击登录跳转到loginResult.jsp页面进行验证并显示结果 JSP + JDBC + MySQL login.jsp 设 ...
- Docker 操作记录
Docker docker info 查看信息 docker 更改镜像目录 方式:1.配置文件修改 # cat /etc/sysconfig/docker |grep -v ^# |grep -v ^ ...
- Rootkit介绍
Rootkit 是一种特殊类型的 malware(恶意软件). Rootkit 之所以特殊是因为您不知道它们在做什么事情.Rootkit 基本上是无法检测到的,而且几乎不能删除它们. 虽然检测工具在不 ...
- 自己对Java的一点看法
作为一个理论性比较强的学生,谈一下这段时间对java以及对程序设计的理解 java相对于其它语言有几个特点,一个是面向对象,一个是强类型 首先谈谈面向对象,关于类和对象,这个一定要 ...
- 关于reduce的参数问题
ECMAScript 5还新增了两个缩小数组的方法: reduce() 和 reduceRight() .这两个方法都会迭代数组的所有项,然后构建一个最终返回的值.其中, reduce() 方法从数组 ...
- java中出现内存溢出的几种情况
情况一:java.lang.OutOfMemoryError: Java heap space 原因:java堆内存不足,可能是真的不足,也可能是程序中有死循环 方案:1.调整JVM参数-Xms204 ...
- Windows IIS 使用批处理脚本自动安装与卸载
IIS6:适用于win server 2003 :: ******************* :: * 安装 :: ******************* :Install Cls @echo. &a ...
- 百度地图API的应用
做网页的时候,有时候需要有地图的功能.接下来我来记录一下我的做法. 1.引入API秘钥,在网上都可以搜到. <script src="http://api.map.baidu.com/ ...
- python(三)@staticmethod和@classmethod使用和区别
转载自[1] 一般要用某个类的方法,先要实例这个类. 但是可以通过@staticmethod和@classmethod,直接用“类.方法()”来调用这个方法. 而 @staticmethod和@cla ...