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# 封装微信的模板消息的更多相关文章

  1. tp 推送微信的模板消息

    设置推送类: <?php /** * tpshop 微信支付插件 * ============================================================== ...

  2. 微信小程序开发 给微信发送模板消息提示openId无效

    参数我都给好了,也是post的raw方式发送请求, openId是绝对没有问题的. 但就是一直报如下错误 {"errcode":40003,"errmsg":& ...

  3. C#开发微信门户及应用(27)-公众号模板消息管理

    通过模板消息接口,公众号能向关注其账号的用户发送预设模板的消息.模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消 ...

  4. .net微信公众号开发——模板消息

    作者:王先荣    本文介绍微信公众号中的模板消息,包括以下内容:(1)TemplateMessage类简介:(2)设置所属行业:(3)获得模板id:(4)发送模板消息:(5)接收推送模板消息发送结果 ...

  5. java 微信公众服务平台 下发 模板消息

    java 微信公众服务平台 下发 模板消息 (一).部分截图 (二).部分代码 (一).部分截图: (二).部分代码: //此处 给用户微信发消息... Map<String,String> ...

  6. 前后端分离djangorestframework—— 接入微信模板消息推送

    微信 什么是微信也不多说,跟前面的支付宝一样的 微信支付 微信支付也有个沙箱环境,沙箱环境官方文档 由文档中那句很显眼的话所得,即使是测试环境也需要真实的商户号,所以这个就没法想支付宝那样用沙箱账号来 ...

  7. java开发微信模板消息推送

    发布时间:2018-12-12   技术:springboot+maven   概述 该demo主要涉及微信模板消息推送功能, 详细 代码下载:http://www.demodashi.com/dem ...

  8. 应用jfinal发送微信模板消息的一个bug

    严格来讲,这不是一个bug,只是我们应用的方式不对.微信发送模板消息的方法是: HttpUtils.post(sendApiUrl + AccessTokenApi.getAccessTokenStr ...

  9. 微信模板消息php

    微信的模板消息需要认证的公众号后台申请 申请通过后就可以用平台定义的消息模板了 define('IN_ECS', true); require(dirname(__FILE__) . '/includ ...

随机推荐

  1. impala系列: 基本命令和jdbc连接

    --======================= 使用impala-shell 登录 --======================= impala-shell --auth_creds_ok_i ...

  2. C#调用C++导出类的一个实例

    一直认为带导出类dll的只有VC自己可以调用,其它编程语言无法调用,今天看到一篇文章才知道自己错了.https://blog.csdn.net/huiyouyongdeyu2011/article/d ...

  3. UIBezierPath基本使用

    UIBezierPath * aPath = [UIBezierPath bezierPathWithArcCenter:point radius:5 startAngle:0 endAngle:2 ...

  4. luogu 2480 古代猪文 数论合集(CRT+Lucas+qpow+逆元)

    一句话题意:G 的 sigma d|n  C(n d) 次幂  mod 999911659 (我好辣鸡呀还是不会mathjax) 分析: 1.利用欧拉定理简化模运算 ,将上方幂设为x,则x=原式mod ...

  5. Filter Authentication 登录认证

    [编程式配置]可用webxml配置替换@WebListenerpublic class FilterListenerConfigurator implements ServletContextList ...

  6. tensorflow---文字识别

    读取数据的三种方法: 1. feeding : providing data when running each step : classifier.eval(feed_dict={input:my_ ...

  7. 【blog】SpringBoot普通类中如何获取其他bean例如Service、Dao

    自己写工具类 工具类 import org.springframework.beans.BeansException; import org.springframework.context.Appli ...

  8. Spring Data

    官网地址 http://projects.spring.io/spring-data 包含子项目 简介 Spring Data 是 Spring 的一个子项目.用于简化数据库访问,支持NoSQL,关系 ...

  9. G - Galactic Collegiate Programming Contest Kattis - gcpc (set使用)

    题目链接: G - Galactic Collegiate Programming Contest Kattis - gcpc 题目大意:当前有n个人,一共有m次提交记录,每一次的提交包括两个数,st ...

  10. Javascript - ExtJs - Ext.form.Panel组件

    FormPanel组件(Ext.form.FormPanel) logogram:Ext.form.Panel | xtype:form Ext.form.Panel.配置 frame }//旗下所有 ...