public void TemplateMessageDataTest()
        {
            var data = new TemplateMessageData();

            data.Add("Key1", new TemplateMessageDataValue("this is value1"));
            data.Add("Key2", new TemplateMessageDataValue("this is value2"));
            data.Add("Key3", new TemplateMessageDataValue("this is value3"));
            data.Add("Key4", new TemplateMessageDataValue("this is value4"));

            var json = data.ToJson(true);

            Console.WriteLine(json);
            var exceptStr = @"{
  ""Key1"": {
    ""value"": ""this is value1""
  },
  ""Key2"": {
    ""value"": ""this is value2""
  },
  ""Key3"": {
    ""value"": ""this is value3""
  },
  ""Key4"": {
    ""value"": ""this is value4""
  }
}";

            Assert.AreEqual(exceptStr, json);
        }
예제 #2
0
        /// <summary>
        /// 动态点赞通知,模板编号:579
        /// </summary>
        /// <param name="toUser">接收者(用户)的 openid</param>
        /// <param name="templateId">消息模板Id</param>
        /// <param name="name">点赞用户,20个以内字符</param>
        /// <param name="date">点赞时间,4小时制时间格式(支持+年月日)	例如:15:01,或:2019年10月1日 15:01</param>
        /// <param name="page">点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。</param>
        public static WxJsonResult SendGoodNotice(string toUser, string templateId, string name, string date, string page)
        {
            var data = new TemplateMessageData();

            data.Add("name1", new TemplateMessageDataValue(name));
            data.Add("date2", new TemplateMessageDataValue(date));
            return(MessageApi.SendSubscribe(weixinAppId, toUser, templateId, data, page));
        }
예제 #3
0
        /// <summary>
        /// 新的评论提醒 ,模板编号:484
        /// </summary>
        /// <param name="toUser">接收者(用户)的 openid</param>
        /// <param name="templateId">消息模板Id</param>
        /// <param name="title">文章标题,20个以内字符</param>
        /// <param name="desc">评论内容,20个以内字符</param>
        /// <param name="date">评论时间,4小时制时间格式(支持+年月日)	例如:15:01,或:2019年10月1日 15:01</param>
        /// <param name="userNick">评论用户,20个以内字符</param>
        /// <param name="page"></param>
        public static WxJsonResult SendRemarkNotice(string toUser, string templateId, string title, string desc, string date, string userNick, string page)
        {
            var data = new TemplateMessageData();

            data.Add("thing1", new TemplateMessageDataValue(title));
            data.Add("thing2", new TemplateMessageDataValue(desc));
            data.Add("time3", new TemplateMessageDataValue(date));
            data.Add("thing5", new TemplateMessageDataValue(userNick));
            return(MessageApi.SendSubscribe(weixinAppId, toUser, templateId, data, page));
        }
        public string SendTemplateMessage([FromBody] TemplateMessageData data)
        {
            try
            {
                string postData = "touser="******"&template_id=" + data.template_id;
                postData += "&page=" + data.page;
                postData += "&form_id=" + data.form_id;
                postData += "&data=" + data.data;
                postData += "&color=" + data.color;
                postData += "&emphasis_keyword=" + data.emphasis_keyword;

                PostData pd = new PostData();
                pd.touser      = data.touser;
                pd.template_id = data.template_id;
                pd.page        = data.page;
                pd.form_id     = data.form_id;
                pd.data        = new JavaScriptSerializer().Deserialize(data.data, typeof(Data));

                /*
                 * pd.data = new Data();
                 * pd.data.keyword1 = new DataItem("339208499", "#173177");
                 * pd.data.keyword2 = new DataItem("2015年01月05日 12:30", "#173177");
                 * pd.data.keyword3 = new DataItem("粤海喜来登酒店", "#173177");
                 * pd.data.keyword4 = new DataItem("广州市天河区天河路208号", "#173177");
                 * */
                pd.color            = data.color;
                pd.emphasis_keyword = data.emphasis_keyword;


                ASCIIEncoding encoding  = new ASCIIEncoding();
                byte[]        byteArray = encoding.GetBytes(new JavaScriptSerializer().Serialize(pd));

                string url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=" + data.AccessToken;
                System.Net.WebRequest wReq = HttpWebRequest.Create(url);
                wReq.Method      = "POST";
                wReq.ContentType = "application/x-www-form-urlencoded";
                //wReq.ContentLength = byteArray.Length;
                //请求流
                Stream dataStream = wReq.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();
                //获取响应数据
                System.Net.WebResponse wResp      = wReq.GetResponse();
                System.IO.Stream       respStream = wResp.GetResponseStream();
                using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.UTF8))
                {
                    return(reader.ReadToEnd());
                }
            }
            catch (System.Exception ex)
            {
            }
            return("");
        }
예제 #5
0
        /// <summary>
        /// 资讯早报通知,模板编号:269
        /// </summary>
        /// <param name="toUser">接收者(用户)的 openid</param>
        /// <param name="templateId">消息模板Id</param>
        /// <param name="title">更新内容,20个以内字符</param>
        /// <param name="remark">备注,20个以内字符</param>
        /// <param name="page">点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。</param>
        public static WxJsonResult SendNewsMorningNotice(string toUser, string templateId, string title, string remark, string page)
        {
            var data = new TemplateMessageData();

            data["thing1"] = new TemplateMessageDataValue(title);
            data["thing2"] = new TemplateMessageDataValue(remark);
            var submitData = new
            {
                touser      = toUser,
                template_id = templateId,
                page        = page,
                data        = data
            };

            return(MessageApi.SendSubscribe(weixinAppId, toUser, templateId, data, page));
        }
예제 #6
0
        /// <summary>
        /// 留言提醒,模板编号:1069
        /// </summary>
        /// <param name="toUser">接收者(用户)的 openid</param>
        /// <param name="templateId">消息模板Id</param>
        /// <param name="text">留言内容,20个以内字符</param>
        /// <param name="date">留言时间,4小时制时间格式(支持+年月日)	例如:15:01,或:2019年10月1日 15:01</param>
        /// <param name="page">点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。</param>
        public static WxJsonResult SendCommentNotice(string toUser, string templateId, string text, string date, string page)
        {
            var data = new TemplateMessageData();

            data["thing1"] = new TemplateMessageDataValue(text);
            data["time2"]  = new TemplateMessageDataValue(date);
            var submitData = new
            {
                touser      = toUser,
                template_id = templateId,
                page        = page,
                data        = data
            };

            return(MessageApi.SendSubscribe(weixinAppId, toUser, templateId, data, page));
        }
예제 #7
0
 public static async Task <WxJsonResult> BizSendAsync(string accessTokenOrAppId, string toUser, string templateId,
                                                      TemplateMessageData data, string page = null, TemplateModel_MiniProgram miniProgram = null,
                                                      int timeOut = Config.TIME_OUT)
 {
     return(await ApiHandlerWapper.TryCommonApiAsync(accessToken =>
     {
         string urlFormat = Config.ApiMpHost + "/cgi-bin/message/subscribe/bizsend?access_token={0}";
         var submitData = new
         {
             touser = toUser,
             template_id = templateId,
             page = page,
             data = data,
             miniprogram = miniProgram,
         };
         return CommonJsonSend.SendAsync(accessToken, urlFormat, submitData, timeOut: timeOut);
     }, accessTokenOrAppId));
 }
예제 #8
0
        /// <summary>
        /// 订阅消息
        /// </summary>
        /// <param name="sessionId"></param>
        /// <param name="templateId"></param>
        /// <returns></returns>
        public async Task <IActionResult> SubscribeMessage(string sessionId, string templateId = "xWclWkOqDrxEgWF4DExmb9yUe10pfmSSt2KM6pY7ZlU")
        {
            var sessionBag = SessionContainer.GetSession(sessionId);

            if (sessionBag == null)
            {
                return(Json(new { success = false, msg = "请先登录!" }));
            }

            await Task.Delay(1000);//停1秒钟,实际开发过程中可以将权限存入数据库,任意时间发送。

            var templateMessageData = new TemplateMessageData();

            templateMessageData["thing1"] = new TemplateMessageDataValue("微信公众号+小程序快速开发");
            templateMessageData["time5"]  = new TemplateMessageDataValue(SystemTime.Now.ToString("yyyy年MM月dd日 HH:mm"));
            templateMessageData["thing6"] = new TemplateMessageDataValue("盛派网络研究院");
            templateMessageData["thing7"] = new TemplateMessageDataValue("第二部分课程正在准备中,尽情期待");

            var page = "pages/index/index";

            //templateId也可以由后端指定

            try
            {
                var result = await Weixin.WxOpen.AdvancedAPIs.MessageApi.SendSubscribeAsync(WxOpenAppId, sessionBag.OpenId, templateId, templateMessageData, page);

                if (result.errcode == ReturnCode.请求成功)
                {
                    return(Json(new { success = true, msg = "消息已发送,请注意查收" }));
                }
                else
                {
                    return(Json(new { success = false, msg = result.errmsg }));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, msg = ex.Message }));
            }
        }
예제 #9
0
 /// <summary>
 /// 发送订阅消息
 /// </summary>
 /// <param name="accessTokenOrAppId">AccessToken或AppId(推荐使用AppId,需要先注册)</param>
 /// <param name="toUser">接收者(用户)的 openid</param>
 /// <param name="templateId">所需下发的订阅模板id</param>
 /// <param name="data">模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } }</param>
 /// <param name="page">点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。</param>
 /// <param name="miniprogramState">跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版</param>
 /// <param name="lang">进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN</param>
 /// <param name="timeOut"></param>
 /// <returns></returns>
 public static WxJsonResult SendSubscribe(string accessTokenOrAppId, string toUser, string templateId, TemplateMessageData data, string page = null,
                                          string miniprogramState = null, string lang = null, int timeOut = Config.TIME_OUT)
 {
     return(WxOpenApiHandlerWapper.TryCommonApi(accessToken =>
     {
         string urlFormat = Config.ApiMpHost + "/cgi-bin/message/subscribe/send?access_token={0}";
         var submitData = new
         {
             touser = toUser,
             template_id = templateId,
             page = page,
             data = data,
             miniprogram_state = miniprogramState,
             lang = lang
         };
         return CommonJsonSend.Send(accessToken, urlFormat, submitData, timeOut: timeOut, jsonSetting: new CO2NET.Helpers.Serializers.JsonSetting()
         {
             IgnoreNulls = true
         });
     }, accessTokenOrAppId));
 }
예제 #10
0
 public static WxJsonResult SendSubscribe(string accessTokenOrAppId, string toUser, string templateId, TemplateMessageData data, string page = null, int timeOut = Config.TIME_OUT)
 {
     return(WxOpenApiHandlerWapper.TryCommonApi(accessToken =>
     {
         string urlFormat = Config.ApiMpHost + "/cgi-bin/message/subscribe/send?access_token={0}";
         var submitData = new
         {
             touser = toUser,
             template_id = templateId,
             page = page,
             data = data
         };
         return CommonJsonSend.Send(accessToken, urlFormat, submitData, timeOut: timeOut);
     }, accessTokenOrAppId));
 }