Example #1
0
        /// <summary>
        /// 带参数二维码扫描事件消息回调处理
        /// </summary>
        /// <param name="msg"></param>
        private void ScanEventMessageHandling(WeChatScanEventMessage msg)
        {
            var accessToken = GetAccessToken(msg);

            if (string.IsNullOrEmpty(accessToken))
            {
                return;
            }

            Logger.Debug($"订阅事件消息回调处理({msg.FromUserName})-enventKey:{msg.EventKey}");

            if (string.IsNullOrEmpty(msg.EventKey))
            {
                return;
            }

            var scene = GetScene(msg.EventKey);

            if (scene is null || string.IsNullOrEmpty(scene.Extension))
            {
                return;
            }

            dynamic extension = JObject.Parse(scene.Extension);

            if (msg.Event == WeChartEvent.SCAN)
            {
                if (scene.Action == WeChatSceneActionEnum.pay.ToString())
                {
                    var name = (string)extension.name;

                    var url = $"{PlatformSettings.HospitalPayUrl}/PaymentAmount/{extension.value}/{name}";

                    //TODO 发送待缴费模板消息,暂用图文消息替代
                    NewCustomMsg msgParam = new NewCustomMsg
                    {
                        Touser  = msg.FromUserName,
                        MsgType = "news",
                        News    = new NewCustomMsg.NewContent()
                        {
                            Articles = new List <NewCustomMsg.Article>()
                            {
                                new NewCustomMsg.Article()
                                {
                                    Url         = url,
                                    Description = ">>点击此链接,进行在线缴费,祝您早日康复",
                                    Title       = $"待缴费提醒({HttpUtility.UrlDecode(name)})",
                                    PicUrl      = $"{PlatformSettings.Upload}/payment/pay.png"
                                }
                            }
                        }
                    };

                    var re = WeChartApi.SendCustomMsg(msgParam, accessToken).Result;
                }
            }
            ;
        }
Example #2
0
        /// <summary>
        /// 订阅/取消订阅事件消息回调处理
        /// </summary>
        /// <param name="tmpMsg"></param>
        private void SubEventMessageHandling(WeChatSubEventXmlMsg tmpMsg)
        {
            var accessToken = GetAccessToken(tmpMsg);

            if (string.IsNullOrEmpty(accessToken))
            {
                return;
            }

            Logger.Debug($"订阅事件消息回调处理({tmpMsg.FromUserName})-enventKey:{tmpMsg.EventKey}");

            if (string.IsNullOrEmpty(tmpMsg.EventKey))
            {
                return;
            }

            var scene = GetScene(tmpMsg.EventKey);

            if (scene is null || string.IsNullOrEmpty(scene.Extension))
            {
                return;
            }

            dynamic extension = JObject.Parse(scene.Extension);

            if (tmpMsg.Event == WeChartEvent.SUBSCRIBE)
            {
                #region 关注公众号发送欢迎关注相关消息
                var welcomeTextModel = new DictionaryModel();
                using (var conn = MySqlHelper.GetConnection())
                {
                    welcomeTextModel = conn.GetAsync <DictionaryModel>(DictionaryType.SubscribeWelcome).Result;
                }

                TextCustomMsg msgParam = new TextCustomMsg
                {
                    Touser  = tmpMsg.FromUserName,
                    MsgType = "text",
                    Text    = new TextCustomMsg.TextContent
                    {
                        Content = string.IsNullOrWhiteSpace(welcomeTextModel?.ExtensionField) ? $@"您已成功关注公众号,欢迎您。" : welcomeTextModel.ExtensionField
                    }
                };

                var response = WeChartApi.SendCustomMsg(msgParam, accessToken).Result;
                #endregion

                #region 若是用户分享关注公众号时,记录是谁推荐关注的,并记录是从哪个端口推荐的

                if (scene.Action == WeChatSceneActionEnum.share.ToString())
                {
                    var entrance          = (string)extension.entrance;
                    var recommendUserGuid = (string)extension.value;

                    Logger.Debug($"订阅事件消息回调处理-recommendUserGuid:{recommendUserGuid}  entrance:{entrance}");

                    if (string.IsNullOrEmpty(entrance) || string.IsNullOrEmpty(recommendUserGuid))
                    {
                        return;
                    }

                    var model = new WechatSubscriptionModel
                    {
                        SubscriptionGuid  = Guid.NewGuid().ToString("N"),
                        RecommendUserGuid = recommendUserGuid,
                        Entrance          = entrance,
                        OpenId            = tmpMsg.FromUserName,
                        CreatedBy         = "WeChatXmlMsgCallBack",
                        LastUpdatedBy     = "WeChatXmlMsgCallBack",
                        OrgGuid           = string.Empty
                    };

                    using (var conn = MySqlHelper.GetConnection())
                    {
                        var result = conn.Insert <string, WechatSubscriptionModel>(model);
                        Logger.Debug($"订阅事件消息回调处理-result:{result}");
                    }
                    #endregion

                    #region 扫码医生二维码推送医生个人中心链接
                    if (!entrance.Equals(EntranceEnum.Doctor.ToString(), StringComparison.OrdinalIgnoreCase))
                    {
                        return;
                    }

                    var personalCenterTextModel = (DictionaryModel)null;

                    using (var conn = MySqlHelper.GetConnection())
                    {
                        personalCenterTextModel = conn.Get <DictionaryModel>(DictionaryType.DoctorPersonalCenterLink);
                    }

                    Logger.Info($"personalCenterTextModel:{JsonConvert.SerializeObject(personalCenterTextModel)}");

                    if (personalCenterTextModel != null && !string.IsNullOrEmpty(personalCenterTextModel.ExtensionField))
                    {
                        msgParam.Text = new TextCustomMsg.TextContent
                        {
                            Content = string.Format(
                                personalCenterTextModel.ExtensionField, recommendUserGuid)
                        };

                        var re = WeChartApi.SendCustomMsg(msgParam, accessToken).Result;
                    }
                    #endregion
                }
                else if (scene.Action == WeChatSceneActionEnum.pay.ToString())
                {
                    var name = (string)extension.name;
                    var url  = $"{PlatformSettings.HospitalPayUrl}/PaymentAmount/{extension.value}/{name}";

                    //TODO 发送待缴费模板消息,暂用图文消息替代
                    NewCustomMsg newParam = new NewCustomMsg
                    {
                        Touser  = tmpMsg.FromUserName,
                        MsgType = "news",
                        News    = new NewCustomMsg.NewContent()
                        {
                            Articles = new List <NewCustomMsg.Article>()
                            {
                                new NewCustomMsg.Article()
                                {
                                    Url         = url,
                                    Description = ">>点击此链接,进行在线缴费,祝您早日康复",
                                    Title       = $"待缴费提醒({HttpUtility.UrlDecode(name)})",
                                    PicUrl      = $"{PlatformSettings.Upload}/payment/pay.png"
                                }
                            }
                        }
                    };

                    var re = WeChartApi.SendCustomMsg(newParam, accessToken).Result;
                }
            }
        }