.NET之微信消息模板推送

简介: .NET之微信消息模板推送

前言:  

 最近在项目中使用到了微信消息模板推送的功能,也就是将对应的消息推送到对应的用户微信上去,前提是你必须要有一个微信公众号并且是付费了的才会有这个功能,还有就是要推送的用户必须是的关注了你的微信公众号的。

 这个流程是这样的首先用户关注你的微信公众号,让后获取到对应用户的oppenid,然后就可以通过对应的用户oppenid选折对应的消息模板把消息推送给用户。

实现:

添加功能插件:

image.png

找到模板消息:

image.png

选折对应的消息模板:

image.png

参数说明

参数 是否必填 说明
touser 接收者openid
template_id 模板ID
url 模板跳转链接(海外帐号没有跳转能力)
miniprogram 跳小程序所需数据,不需跳小程序可不用传该数据
appid 所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏)
pagepath 所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),要求该小程序已发布,暂不支持小游戏
data 模板数据
color 模板内容字体颜色,不填默认为黑色

代码实现:

using System;
using System.IO;
using System.Net;
using System.Text;
using Newtonsoft.Json;
namespace JJHL.Service
{
    /// <summary>
    /// 微信消息推送
    /// </summary>
    public class WxChatPrompt
    {
        public WxChatPrompt()
        {
        }
        private static WxChatPrompt _objPrompt;
        public static WxChatPrompt _
        {
            get => _objPrompt ?? new WxChatPrompt();
            set => _objPrompt = value;
        }
        /// <summary>
        /// 消息推送
        /// </summary>
        /// <param name="Access_token">网页授权凭证,通过微信接口获取</param>
        /// <param name="Openid">要推送的用户oppenid</param>
        /// <returns></returns>
        public string MsgPush(string Access_token, string Openid)
        {
            string templateId = "";//模板编号
            string firstContent= "";//内容
            string keyword1 = "";//自定义内容
            string keyword2 = "";//自定义内容
            string keyword3 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //时间
            string remark = "";//备注
            string contentmsg = "{\"touser\":\"" + Openid + "\",\"template_id\":\"" + templateId + "\",\"topcolor\":\"#FF0000\",\"data\":{\"first\":{\"value\":\"" + firstContent + "\",\"color\":\"#173177\"},\"keyword1\":{\"value\":\"" + keyword1 + "\",\"color\":\"#173177\"},\"keyword2\":{\"value\":\"" + keyword2 + "\",\"color\":\"#173177\"},\"keyword3\":{\"value\":\"" + keyword3 + "\",\"color\":\"#173177\"},\"remark\":{\"value\":\"" +remark + "\",\"color\":\"#173177\"}}}";
            string result = WeChatPushNotice(Access_token, contentmsg);
            return result;
        }
        /// <summary>
        ///微信消息推送
        /// </summary>
        /// <param name="accessToken">微信access_token</param>
        /// <param name="contentMsg">推送内容</param>
        /// <returns></returns>
        public string WeChatPushNotice(string accessToken, string contentMsg)
        {
            string promat = "";
            //需要提交的数据
            byte[] bs = Encoding.UTF8.GetBytes(contentMsg);
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken + "");
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            req.ContentLength = bs.Length;
            using (Stream reqStream = req.GetRequestStream())
            {
                reqStream.Write(bs, 0, bs.Length);
            }
            HttpWebResponse respon = (HttpWebResponse)req.GetResponse();
            Stream stream = respon.GetResponseStream();
            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            {
                promat = reader.ReadToEnd();
            }
            ReturnMsg y = JsonConvert.DeserializeObject<ReturnMsg>(promat);
            promat = y.errmsg;
            return promat;
        }
        /// <summary>
        /// 自定义模型
        /// </summary>
        private class ReturnMsg
        {
            public string errcode { get; set; }
            public string errmsg { get; set; }
            public string msgid { get; set; }
        }
    }
}

在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:

{
    "errcode":0,
     "errmsg":"ok",
     "msgid":200228332
  }
相关文章
|
1月前
【微信公众平台对接】有关【创建发票卡券模板】调用示例
【微信公众平台对接】有关【创建发票卡券模板】调用示例
28 0
|
1月前
|
小程序 前端开发 开发者
【微信小程序】-- WXSS 模板样式- rpx & import (十三)
【微信小程序】-- WXSS 模板样式- rpx & import (十三)
|
1月前
|
小程序 JavaScript
【微信小程序】-- WXML 模板语法 - 事件绑定 -- tap & input (十)
【微信小程序】-- WXML 模板语法 - 事件绑定 -- tap & input (十)
|
1月前
【微信公众平台对接】有关【创建发票卡券模板】调用示例
【微信公众平台对接】有关【创建发票卡券模板】调用示例
49 0
|
1月前
|
小程序 容器
【微信小程序】-- WXML 模板语法 - 条件渲染 -- wx:if & hidden (十一)
【微信小程序】-- WXML 模板语法 - 条件渲染 -- wx:if & hidden (十一)
|
1月前
|
小程序 JavaScript
【微信小程序】-- WXML 模板语法 - 数据绑定(九)
【微信小程序】-- WXML 模板语法 - 数据绑定(九)
|
1月前
|
Java
java发送微信公众号模板消息
java发送微信公众号模板消息
|
1月前
|
数据采集 小程序 数据挖掘
Matplotlib库模板学习,2024年最新微信小程序页面跳转方法总结
Matplotlib库模板学习,2024年最新微信小程序页面跳转方法总结
|
1月前
|
JSON 小程序 搜索推荐
【微信小程序】-- 模板语法与配置的总结(二十一)
【微信小程序】-- 模板语法与配置的总结(二十一)
|
1月前
|
小程序
【微信小程序】-- WXSS 模板样式- 全局样式和局部样式(十四)
【微信小程序】-- WXSS 模板样式- 全局样式和局部样式(十四)

热门文章

最新文章