public ActionResult ShopReceiverOAuth(string code, int state) { var result = Senparc.Weixin.MP.AdvancedAPIs.OAuthApi.GetAccessToken(wechatTemplateSendOptions.AppId, wechatTemplateSendOptions.AppSecret, code); string message = "faile"; ShopOrderReceiver model = null; Senparc.Weixin.MP.AdvancedAPIs.OAuth.OAuthUserInfo userInfo = null; try { if (result != null && !string.IsNullOrEmpty(result.openid)) { string openId = result.openid; string access_token = result.access_token; userInfo = Senparc.Weixin.MP.AdvancedAPIs.OAuthApi.GetUserInfo(access_token, openId); if (userInfo != null && !string.IsNullOrEmpty(userInfo.openid)) { model = db.Query <ShopOrderReceiver>() .Where(m => !m.IsDel) .Where(m => m.ShopId == state) .Where(m => m.ReceiverOpenId == openId) .FirstOrDefault(); if (model == null) { bool canUsed = db.Query <ShopOrderReceiver>() .Where(m => !m.IsDel) .Where(m => m.ShopId == state) .Where(m => m.IsUsed) .Count() < 5; model = new ShopOrderReceiver() { ShopId = state, ReceiverOpenId = openId, NickName = userInfo.nickname, Headimgurl = userInfo.headimgurl, IsDel = false, IsUsed = canUsed }; db.AddTo(model); message = "success"; } else { //已成功授权过 model.Headimgurl = userInfo.headimgurl; model.NickName = userInfo.nickname; message = "authored"; } db.SaveChanges(); } } } catch (Exception e) { message = NickNameTryAgain(model, state, userInfo); logger.LogError("授权绑定失败:{0}", e.Message); } ViewData["message"] = message; return(View()); }
//字符集问题,临时解决方案 string NickNameTryAgain(ShopOrderReceiver model, int state, Senparc.Weixin.MP.AdvancedAPIs.OAuth.OAuthUserInfo userInfo) { string message = "faile"; try { if (model == null) { bool canUsed = db.Query <ShopOrderReceiver>() .Where(m => !m.IsDel) .Where(m => m.ShopId == state) .Where(m => m.IsUsed) .Count() < 5; model = new ShopOrderReceiver() { ShopId = state, ReceiverOpenId = userInfo.openid, NickName = userInfo.nickname, Headimgurl = userInfo.headimgurl, IsDel = false, IsUsed = canUsed }; db.AddTo(model); message = "success"; } else { //已成功授权过 model.Headimgurl = userInfo.headimgurl; model.NickName = UniCodeToUTF8(userInfo.nickname); message = "authored"; } db.SaveChanges(); } catch (Exception) { } return(message); }
public ActionResult AddServerUserInfo(string code, int state) { string message = "faile"; try { _logger.LogInformation($"==================AddServerUserInfo方法开始=================="); var result = Senparc.Weixin.MP.AdvancedAPIs.OAuthApi.GetAccessToken(wechatTemplateSendOptions.AppId, wechatTemplateSendOptions.AppSecret, code); ShopOrderReceiver model = null; Senparc.Weixin.MP.AdvancedAPIs.OAuth.OAuthUserInfo userInfo = null; if (result != null && !string.IsNullOrEmpty(result.openid)) { string openId = result.openid; string access_token = result.access_token; userInfo = Senparc.Weixin.MP.AdvancedAPIs.OAuthApi.GetUserInfo(access_token, openId); if (userInfo != null && !string.IsNullOrEmpty(userInfo.openid)) { var shopServiceUserInfo = db.ShopServiceUserInfo.FirstOrDefault( m => m.Openid.Equals(userInfo.openid) && m.Unionid.Equals(userInfo.unionid) && m.ShopId.Equals(state) && !m.IsDel ); if (shopServiceUserInfo != null) { //已添加授权 shopServiceUserInfo.Headimgurl = userInfo.headimgurl; shopServiceUserInfo.Nickname = userInfo.nickname; db.SaveChanges(); message = "authored"; } else { shopServiceUserInfo = new ShopServiceUserInfo(); shopServiceUserInfo.Headimgurl = userInfo.headimgurl; shopServiceUserInfo.Nickname = userInfo.nickname; shopServiceUserInfo.Openid = userInfo.openid; shopServiceUserInfo.Sex = userInfo.sex == 1 ? "男" : "女"; shopServiceUserInfo.Province = userInfo.province; shopServiceUserInfo.City = userInfo.city; shopServiceUserInfo.Country = userInfo.country; shopServiceUserInfo.Headimgurl = userInfo.headimgurl; shopServiceUserInfo.Unionid = userInfo.unionid; shopServiceUserInfo.AddTime = DateTime.Now; shopServiceUserInfo.ShopId = state; db.ShopServiceUserInfo.Add(shopServiceUserInfo); db.SaveChanges(); message = "success"; } } } _logger.LogInformation($"==================AddServerUserInfo方法结束=================="); } catch (Exception e) { message = e.Message; _logger.LogError($"添加授权客服失败:{ e.Message} | { e.InnerException.Message}"); } //ViewData["message"] = message; return(Json(new { Message = message })); }