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 ...
随机推荐
- SQL Server进阶(八)查询——开窗函数、四大排名函数、透视数据、逆透视数据
概述 ROW_NUMBER() OVER(PARTITION BY CustId ORDER BY ID DESC) https://www.jb51.net/article/75533.htm 开窗 ...
- udp_server函数
#include <netdb.h> #include <stdlib.h> #include <string.h> #include <unistd.h&g ...
- [C++]PAT乙级1008.数组元素循环右移问题 (20/20)
/* 1008. 数组元素循环右移问题 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 一个数组A中存有N(N>0)个整数, ...
- CF920E Connected Components?
CF luogu 先讲两个靠谱的做法 1.首先因为有n个点,m条不存在的边,所以至少存在一个点,和m/n个点之间没边,所以把这个点找出来,连一下其他相连的点,这样还剩m/n个点没确定在哪个联通块,而这 ...
- Spark思维导图之Spark SQL
- 关于SQL的over partition by 开窗语句在分页和统计中的使用总
CREATE TABLE OrderInfo( ID INT IDENTITY(1,1) PRIMARY KEY, CustomerID INT NULL, TotalMoney DECIMAL(18 ...
- CrackME 2011 # 2 逆向练习解题思路
CrackME 2011 # 2 逆向练习解题思路 做题背景: 从朋友那里得到一道逆向题名字叫package,作为小菜的我当然要看一看啦,这名字辨识度太低我就按照运行的名字改成CrackME 2011 ...
- Photoshop CS6打开图片后看不到怎么办
https://jingyan.baidu.com/album/54b6b9c0d45c632d583b4793.html
- UVA1660 电视网络 Cable TV Network
题目地址:UVA1660 电视网络 Cable TV Network 枚举两个不直接连通的点 \(S\) 和 \(T\) ,求在剩余的 \(n-2\) 个节点中最少去掉多少个可以使 \(S\) 和 \ ...
- LordPE修复从进程dump出来的内存文件
场景 应急响应中从进程发现被注入了EXE文件,通过processhacker的Memory模块dump出来注入的文件.PE修复后在IDA里反汇编查看这个恶意代码的功能是什么. 解决 LordPE 虚拟 ...