コード例 #1
0
        private async Task <int> UniformSendMPTemplateAsync(int makeWishId, string mPTemplateID, int memberId = 0)
        {
            int    resCode  = 0;
            string pagepath = mPTemplateID == MPTemplateID.mpReserve ? string.Empty : $"pages/detail/index?wishId={makeWishId}";
            string tOpenId  = string.Empty;

            try
            {
                MPTemplateData tData = null;

                (tData, tOpenId) = await _activityApplication.GetWishOpenId(makeWishId, mPTemplateID, memberId);

                if (tData != null)
                {
                    var accessToken = await AccessTokenContainer.TryGetAccessTokenAsync(appId, appSecret);

                    var msgData = new UniformSendData
                    {
                        touser          = tOpenId,
                        mp_template_msg = new Mp_Template_Msg
                        {
                            appid       = mpAppId,
                            template_id = mPTemplateID,
                            miniprogram = new Miniprogram
                            {
                                appid    = appId,
                                pagepath = pagepath,
                            },
                            data = tData
                        }
                    };

                    var result = await TemplateApi.UniformSendAsync(accessToken, msgData);

                    resCode = 1;

                    if (mPTemplateID == MPTemplateID.mpReserve) //预约提醒只发送一次,发送成功更新
                    {
                        await _activityApplication.SaveMemberIsSend(memberId);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(string.Concat("mPTemplateID:", mPTemplateID, "----memberID:", memberId, "----openId:", tOpenId));
            }

            return(resCode);
        }
コード例 #2
0
        /// <summary>
        /// 下发小程序和公众号统一的服务消息
        /// </summary>
        /// <param name="sessionId"></param>
        /// <returns></returns>
        public async Task <ActionResult> UniformSend(string sessionId)
        {
            var sessionBag = SessionContainer.GetSession(sessionId);

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

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

            try
            {
                var mpAppId      = Config.SenparcWeixinSetting.MpSetting.WeixinAppId; //公众号ID
                var mpTemplateId = "ur6TqESOo-32FEUk4qJxeWZZVt4KEOPjqbAFDGWw6gg";     //公众号模板消息ID
                var pagePath     = "pages/websocket_signalr/websocket_signalr";

                object templateData = null;

                //{"touser":"******","weapp_template_msg":null,"mp_template_msg":{"appid":"wx669ef95216eef885","template_id":null,"url":"https://dev.senparc.com","miniprogram":{"appid":"wx12b4f63276b14d4c","pagepath":"websocket/websocket"},"data":{"first":{"value":"小程序和公众号统一的服务消息","color":"#173177"},"keyword1":{"value":"2022/1/20 23:22:12","color":"#173177"},"keyword2":{"value":"dev.senparc.com","color":"#173177"},"keyword3":{"value":"小程序接口测试","color":"#173177"},"keyword4":{"value":"正常","color":"#173177"},"keyword5":{"value":"测试“小程序和公众号统一的服务消息”接口,服务正常","color":"#173177"},"remark":{"value":"您的 OpenId:oeaTy0DgoGq-lyqvTauWVjbIVuP0","color":"#173177"},"TemplateId":"ur6TqESOo-32FEUk4qJxeWZZVt4KEOPjqbAFDGWw6gg","Url":"https://dev.senparc.com","TemplateName":"系统异常告警通知"}}}


                #region 公众号模板消息信息       -- DPBMARK MP

                //可选参数(需要和公众号模板消息匹配):
                templateData = templateData = new
                {
                    first    = new MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("小程序和公众号统一的服务消息"),
                    keyword1 = new MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("dev.senparc.com"),
                    keyword2 = new MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("小程序接口测试"),
                    keyword3 = new MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("正常"),
                    keyword4 = new MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("测试“小程序和公众号统一的服务消息”接口,服务正常"),
                    remark   = new MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("您的 OpenId:" + sessionBag.OpenId),
                };
                #endregion                      DPBMARK_END

                var miniprogram = new Miniprogram_PagePath(WxOpenAppId, pagePath);//使用 pagepath 参数
                //var miniprogram = new Miniprogram_Page(WxOpenAppId, pagePath);// 使用 page 参数
                //https://weixin.senparc.com/QA-17333

                UniformSendData msgData = new(
                    sessionBag.OpenId,
                    new Mp_Template_Msg(mpAppId,
                                        mpTemplateId,
                                        "https://dev.senparc.com",
                                        miniprogram,
                                        templateData)
                    );

                var result = await TemplateApi.UniformSendAsync(WxOpenAppId, msgData);

                if (result.errcode == ReturnCode.请求成功)
                {
                    return(Json(new { success = true, title = "服务消息已发送,请注意查收", content = result.errmsg }));
                }
                else
                {
                    string msg;

                    if (result.errmsg.Contains("require subscribe"))
                    {
                        msg = "您需要关注公众号【盛派网络小助手】才能收到公众号内的模板消息!";
                    }
                    else
                    {
                        msg = result.errmsg;
                    }

                    return(Json(new { success = false, title = "出错啦!", msg = msg }));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, msg = ex.Message }));
            }
        }