Exemple #1
0
        /// <summary>
        /// 使用异步Action测试异步模板消息接口
        /// </summary>
        /// <param name="checkcode"></param>
        /// <returns></returns>
        public async Task <ActionResult> TemplateMessageTest(string checkcode)
        {
            var currentCache = CacheStrategyFactory.GetObjectCacheStrategyInstance();
            var cacheKey     = $"TestCheckCode:{checkcode}";
            var openId       = await currentCache.GetAsync(cacheKey) as string;//使用缓存,如果多台服务器可以使用分布式缓存共享

            if (openId.IsNullOrEmpty())
            {
                return(Content("验证码已过期或不存在!请在“盛派网络小助手”公众号输入“tm”获取验证码。"));
            }
            else
            {
                await currentCache.RemoveFromCacheAsync(cacheKey);

                var templateId = "cCh2CTTJIbVZkcycDF08n96FP-oBwyMVrro8C2nfVo4";
                var testData   = new //TestTemplateData()
                {
                    first    = new TemplateDataItem("【异步模板消息测试】"),
                    keyword1 = new TemplateDataItem(openId),
                    keyword2 = new TemplateDataItem("网页测试"),
                    keyword3 = new TemplateDataItem(SystemTime.Now.ToString("O")),
                    remark   = new TemplateDataItem("更详细信息,请到Senparc.Weixin SDK官方网站(http://sdk.weixin.senparc.com)查看!")
                };

                var miniProgram = new TemplateModel_MiniProgram()
                {
                    appid    = "wxfcb0a0031394a51c",//【盛派互动(BookHelper)】小程序
                    pagepath = "pages/index/index"
                };

                var result = await TemplateApi.SendTemplateMessageAsync(appId, openId, templateId, null, testData, miniProgram);

                return(Content("异步模板消息已经发送到【盛派网络小助手】公众号,请查看。此前的验证码已失效,如需继续测试,请重新获取验证码。"));
            }
        }
        /// <summary>
        /// 活动开始,关注公众号全部用户发消息
        /// </summary>
        /// <returns></returns>
        public async Task AllSendTemplateMessage()
        {
            try
            {
                var accessToken = await AccessTokenContainer.TryGetAccessTokenAsync(mpAppId, mpAppSecret);

                var result = await Senparc.Weixin.MP.AdvancedAPIs.UserApi.GetAsync(accessToken, null);

                if (result.total > 0)
                {
                    var msgData = new MPTemplateData("您好,您预约的实现吧!愿望君!活动已经开启,快来实现你的愿望吧~",
                                                     "实现吧!2021愿望君!",
                                                     $"{DateTime.Now.ToString("yyyy年MM月dd日")}",
                                                     "快来前往月野兔星球小程序~",
                                                     "点击即可立即进入哦~");

                    var miniProgram = new TemplateModel_MiniProgram()
                    {
                        appid    = appId,
                        pagepath = "pages/index/index"
                    };

                    // 因为是同一个公众号,根据环境变量处理测试数据
                    if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development")
                    {
                        var betaList = new List <string>()
                        {
                            "oHxnJwqEKSsUnMq8vpbwJQ3k5jYQ", //fly
                            "oHxnJwuuMR3eZ04mhVcNLfY3Mouo", //LIsa
                            "oHxnJwvwhG-hTcdfzWySqRkaqYkY", //鑫鑫
                            "oHxnJwl_xD09u_2hZB-Y5FiMrYWQ", //C.
                            "oHxnJwpAl4RU7OLy6q1ZhQKbMbNo", //烟花
                            "oHxnJwqXoOrJw2hI3Z3FHZB1H0VM", //太阳女神
                        };

                        foreach (var openid in result.data.openid)
                        {
                            if (betaList.Where(e => e.Contains(openid)).Any()) // 测试白名单
                            {
                                await Senparc.Weixin.MP.AdvancedAPIs.TemplateApi.SendTemplateMessageAsync(accessToken, openid, MPTemplateID.mpStart, null, msgData, miniProgram);
                            }
                        }
                    }
                    else
                    {
                        foreach (var openid in result.data.openid)
                        {
                            await Senparc.Weixin.MP.AdvancedAPIs.TemplateApi.SendTemplateMessageAsync(accessToken, openid, MPTemplateID.mpStart, null, msgData, miniProgram);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(string.Concat("AllSendTemplateMessage:", ex.Message));
            }
        }
Exemple #3
0
        /// <summary>
        /// 发送模板消息-跳转至小程序
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="userOpenId"></param>
        /// <param name="templateId"></param>
        /// <param name="url"></param>
        /// <param name="templateData"></param>
        /// <param name="miniAppId"></param>
        /// <param name="pagePath"></param>
        /// <returns></returns>
        public string SendTemplateMessageToMiniApp <T>(string userOpenId, string templateId, string url, T templateData, string miniAppId, string pagePath)
        {
            string access_token = GetAccessToken();

            TemplateModel_MiniProgram miniModel = new TemplateModel_MiniProgram
            {
                appid    = miniAppId,
                pagepath = pagePath
            };
            SendTemplateMessageResult sendResult = TemplateApi.SendTemplateMessage(access_token, userOpenId, templateId, url, templateData, miniModel);

            //发送成功
            if (sendResult.errcode.ToString() == "请求成功")
            {
                return("发送成功");
            }
            else
            {
                return(sendResult.errmsg);
            }
        }
Exemple #4
0
        /// <summary>
        /// 使用异步Action测试异步模板消息接口
        /// </summary>
        /// <param name="checkcode"></param>
        /// <returns></returns>
        public async Task <ActionResult> TemplateMessageTest(string checkcode)
        {
            var openId = CustomMessageHandler.TemplateMessageCollection.ContainsKey(checkcode)
                ? CustomMessageHandler.TemplateMessageCollection[checkcode]
                : null;

            if (openId == null)
            {
                return(Content("验证码已过期或不存在!请在“盛派网络小助手”公众号输入“tm”获取验证码。"));
            }
            else
            {
                CustomMessageHandler.TemplateMessageCollection.Remove(checkcode);


                var templateId = "cCh2CTTJIbVZkcycDF08n96FP-oBwyMVrro8C2nfVo4";
                var testData   = new //TestTemplateData()
                {
                    first    = new TemplateDataItem("【异步模板消息测试】"),
                    keyword1 = new TemplateDataItem(openId),
                    keyword2 = new TemplateDataItem("网页测试"),
                    keyword3 = new TemplateDataItem(SystemTime.Now.ToString("O")),
                    remark   = new TemplateDataItem("更详细信息,请到Senparc.Weixin SDK官方网站(http://sdk.weixin.senparc.com)查看!")
                };

                var miniProgram = new TemplateModel_MiniProgram()
                {
                    appid    = "wxfcb0a0031394a51c",//【盛派互动(BookHelper)】小程序
                    pagepath = "pages/index/index"
                };

                var result = await TemplateApi.SendTemplateMessageAsync(appId, openId, templateId, null, testData, miniProgram);

                return(Content("异步模板消息已经发送到【盛派网络小助手】公众号,请查看。此前的验证码已失效,如需继续测试,请重新获取验证码。"));
            }
        }
Exemple #5
0
 public static async Task <SendTemplateMessageResult> SendTemplateMessageAsync(string accessTokenOrAppId, string openId, ITemplateMessageBase templateMessageData, TemplateModel_MiniProgram miniProgram = null, int timeOut = Config.TIME_OUT)
 {
     return(await SendTemplateMessageAsync(accessTokenOrAppId, openId, templateMessageData.TemplateId,
                                           templateMessageData.Url, templateMessageData, miniProgram, timeOut).ConfigureAwait(false));
 }
Exemple #6
0
 public static async Task <SendTemplateMessageResult> SendTemplateMessageAsync(string accessTokenOrAppId, string openId, string templateId, string url, object data, TemplateModel_MiniProgram miniProgram = null, int timeOut = Config.TIME_OUT)
 {
     return(await ApiHandlerWapper.TryCommonApiAsync(async accessToken =>
     {
         string urlFormat = Config.ApiMpHost + "/cgi-bin/message/template/send?access_token={0}";
         var msgData = new TemplateModel()
         {
             touser = openId,
             template_id = templateId,
             // topcolor = topcolor,
             url = url,
             miniprogram = miniProgram,
             data = data,
         };
         return await Senparc.Weixin.CommonAPIs.CommonJsonSend.SendAsync <SendTemplateMessageResult>(accessToken, urlFormat, msgData, timeOut: timeOut).ConfigureAwait(false);
     }, accessTokenOrAppId).ConfigureAwait(false));
 }
Exemple #7
0
 public static SendTemplateMessageResult SendTemplateMessage(string accessTokenOrAppId, string openId, ITemplateMessageBase templateMessageData, TemplateModel_MiniProgram miniProgram = null, int timeOut = Config.TIME_OUT)
 {
     return(SendTemplateMessage(accessTokenOrAppId, openId, templateMessageData.TemplateId,
                                templateMessageData.Url, templateMessageData, miniProgram, timeOut));
 }
Exemple #8
0
        public static SendTemplateMessageResult SendTemplateMessage(string accessTokenOrAppId, string openId, string templateId, string url, object data, TemplateModel_MiniProgram miniProgram = null, int timeOut = Config.TIME_OUT)
        {
            //文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1500374289_66bvB

            return(ApiHandlerWapper.TryCommonApi(accessToken =>
            {
                string urlFormat = Config.ApiMpHost + "/cgi-bin/message/template/send?access_token={0}";
                var msgData = new TemplateModel()
                {
                    touser = openId,
                    template_id = templateId,
                    // topcolor = topcolor,
                    url = url,
                    miniprogram = miniProgram,
                    data = data,
                };
                return CommonJsonSend.Send <SendTemplateMessageResult>(accessToken, urlFormat, msgData, timeOut: timeOut);
            }, accessTokenOrAppId));
        }
Exemple #9
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));
 }