一、扫码回调事件
/// <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;
}
三、截图分享