微信公众号扫码关注、已关注回复用户消息

一、扫码回调事件

/// <summary>
        /// 扫码回调
        /// </summary>
        /// <returns></returns>
        [Route("ScanCodeCallback")]
        [HttpPost]
        [SwaggerResponse(200, typeof(ApiResultModel<object>), "返回值")]
        [AllowAnonymous]
        [IgnoreSign]
        public IActionResult ScanCodeCallback()
        {
            string tipMsg = "success";
            StreamReader sr = new StreamReader(Request.Body, Encoding.UTF8, true, 1024, true);
            XmlDocument doc = new XmlDocument();
            doc.Load(sr);
            Request.Body.Seek(0, SeekOrigin.Begin);
            sr.Close();
            sr.Dispose();

            string MsgType = doc.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText;
            if (MsgType != "event")
            {
                return Content("success");
            }
            string Event = doc.SelectSingleNode("xml").SelectSingleNode("Event").InnerText;
            if (Event == "subscribe" || Event == "SCAN")
            {
                string FromUserName = doc.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText;
                string ToUserName = doc.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText;

                string EventKey = doc.SelectSingleNode("xml").SelectSingleNode("EventKey").InnerText;
                //获取用户信息
                var obj = Utils.WechatGetToken(QRCodeAppId, QRCodeAppSecret);
                string strToken = obj.ToJson();
                string access_token = string.Empty;
                if (strToken.Contains("access_token"))
                {
                    access_token = obj["access_token"].ToString();
                }
                string json = Utils.HttpGet("https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + access_token + "&openid=" + FromUserName + "&lang=zh_CN");
                var data = LitJson.JsonMapper.ToObject(json);
                WXUserInfo info = new WXUserInfo()
                {
                    Subscribe = Utils.ObjToInt(data["subscribe"], 0),
                    OpenId = data["openid"].ToString(),
                    NickName = data["nickname"].ToString(),
                    Sex = Utils.ObjToInt(data["sex"], 0),
                    City = data["city"].ToString(),
                    Country = data["country"].ToString(),
                    Province = data["province"].ToString(),
                    Language = data["language"].ToString(),
                    Headimgurl = data["headimgurl"].ToString(),
                    Unionid = data["unionid"].ToString()
                };
                //用户关注公众号和用户已经关注了公众号
                if (Event == "subscribe")
                {
                    var context = EventKey.Split("_");

                    string key = "IES:AppChildEnglish:RedisUnionId:" + context[1];//唯一ID
                    if (!_ICacheManager.IsSet(key))
                    {
                        _ICacheManager.Set(key, info, 60);//设置缓存60分钟
                    }
                    //关注事件推送文本消息给用户
                    tipMsg = Utils.GetWechatMPTip(FromUserName, ToUserName, @"你好呀,欢迎关注小狮子英语
                                        小狮子英语目前已支持多屏互动,包括TV大屏端、移动端(Android|IOS)、PC端、小程序端、音响、平板(Android系统、苹果IOS不支持)。任何产品反馈欢迎提给我们。提意见,送F码哦!!!
                                        二、小狮子英语下载地址:
                                        1、TV版本/Pad版本(除苹果IPad外的平板电脑都可):各大智能电视应用市场搜索”阿卡索少儿英语TV”,或者前往:https://www.acadsoc.com.cn/lps/pages/childrenTV.htm ,手动U盘下载安装;
                                        2、Android版本:各大Android应用市场搜索”小狮子英语”;
                                        3、苹果IOS版本:苹果应用市场搜索”小狮子英语”;
                                        4、产品官网PC版:http://www.lionsabc.com/
                                        5、小程序版本:微信小程序搜索”小狮子英语官网”
                                        6、智能音响:小米小爱音响(已上线)、天猫精灵(近期推出)、百度小度音响(近期推出)
                                        7、移动端H5下载地址:https://www.acadsoc.com.cn/xcx/downloadH5/index.html
                                        关于会员:阿卡索VIP学员可以免费赠送1个月,新用户赠送7天;另外,可以通过APP个人中心的”邀请获VIP”功能,每邀请一位新用户注册可获得1个月VIP,上不封顶;");                   
                    Utils.PrintLog("\r\n微信扫码[关注公众号]:" + "\r\nEvent:" + Event + "\r\nRedisUnionId:" + key + "\r\n时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "ScanCodeCallback");
                }
                else if (Event == "SCAN")
                {
                    string key = "IES:AppChildEnglish:RedisUnionId:" + EventKey;//唯一ID
                    if (!_ICacheManager.IsSet(key))
                    {
                        _ICacheManager.Set(key, info, 60);//设置缓存60分钟
                    }
                    //已关注事件推送文本消息给用户
                    tipMsg = Utils.GetWechatMPTip(FromUserName, ToUserName, "登录成功,请在PC/TV上继续操作,体验大屏英语互动,海量学习视频");
                    Utils.PrintLog("\r\n微信扫码[关注公众号]:" + "\r\nEvent:" + Event + "\r\nRedisUnionId:" + key + "\r\n时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "ScanCodeCallback");
                }
            }
            return Content(tipMsg);
        }

二、向微信发送消息

/// <summary>
        /// 微信公众号扫码回调发消息给用户方法
        /// </summary>
        /// <param name="tousername"></param>
        /// <param name="fromusername"></param>
        /// <param name="content"></param>
        /// <returns></returns>
        public static string GetWechatMPTip(string tousername, string fromusername, string content)
        {
            string msg = @$"<xml>
                            <ToUserName><![CDATA[{tousername}]]></ToUserName>
                            <FromUserName><![CDATA[{fromusername}]]></FromUserName>
                            <CreateTime>{DateTimeToUnix(DateTime.Now)}</CreateTime>
                            <MsgType><![CDATA[text]]></MsgType>
                            <Content><![CDATA[{content}]]></Content>
                            </xml>";
            return msg;
        }

三、截图分享

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值