diff --git a/CoreCms.Net.Model/FromBody/FMWxPost.cs b/CoreCms.Net.Model/FromBody/FMWxPost.cs
index 078de9e..4cd74fe 100644
--- a/CoreCms.Net.Model/FromBody/FMWxPost.cs
+++ b/CoreCms.Net.Model/FromBody/FMWxPost.cs
@@ -10,6 +10,7 @@
using System.Collections.Generic;
+
using CoreCms.Net.Model.Entities;
namespace CoreCms.Net.Model.FromBody
@@ -53,6 +54,18 @@ namespace CoreCms.Net.Model.FromBody
public int invitecode { get; set; } = 0;
}
+ ///
+ /// 微信小程序登录解码手机号码
+ ///
+ public class FMWxLoginPhoneNumber
+ {
+ public string code { get; set; }
+
+ public string sessionAuthId { get; set; }
+
+ public int invitecode { get; set; } = 0;
+ }
+
///
/// 微信账户创建
///
diff --git a/CoreCms.Net.Web.WebApi/Controllers/UserController.cs b/CoreCms.Net.Web.WebApi/Controllers/UserController.cs
index 7259f3a..8ba4ab7 100644
--- a/CoreCms.Net.Web.WebApi/Controllers/UserController.cs
+++ b/CoreCms.Net.Web.WebApi/Controllers/UserController.cs
@@ -183,7 +183,7 @@ namespace CoreCms.Net.Web.WebApi.Controllers
p => new CoreCmsUserWeChatInfo() { sessionKey = response.SessionKey, updateTime = DateTime.Now },
p => p.openid == userInfo.openid);
}
- return new WebApiDto { Code = 0, Msg = "OK", Data = new { user = userInfo.userId, isMobile = userInfo.mobile?.Length > 0 } };
+ return new WebApiDto { Code = 0, Msg = "OK", Data = new { user = userInfo.userId, isMobile = userInfo.mobile?.Length > 0, sessionAuthId = response.OpenId } };
}
userInfo = new CoreCmsUserWeChatInfo();
userInfo.openid = response.OpenId;
@@ -192,14 +192,65 @@ namespace CoreCms.Net.Web.WebApi.Controllers
userInfo.gender = 1;
userInfo.createTime = DateTime.Now;
await _userWeChatInfoServices.InsertAsync(userInfo);
- if (userInfo is { userId: > 0 })
+ return new WebApiDto { Code = 0, Msg = "OK", Data = new { user = userInfo.userId, isMobile = false, sessionAuthId = response.OpenId } };
+ }
+ return new WebApiDto { Code = -2, Msg = "", Data = new { user = 0, isMobile = false, sessionAuthId = "" } };
+ }
+
+ ///
+ /// 微信小程序授权拉取手机号码并登录
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task UseWxPhoneNumberLogin([FromBody] FMWxLoginPhoneNumber entity)
+ {
+ var jm = new WebApiCallBack();
+
+ var userInfo = await _userWeChatInfoServices.QueryByClauseAsync(p => p.openid == entity.sessionAuthId);
+ if (userInfo == null)
+ {
+ jm.code = -1;
+ jm.msg = "用户信息获取失败";
+ return jm;
+ }
+ //DecodedPhoneNumber phoneNumber;
+ string phoneNumber = "";
+ try
+ {
+ var client = _weChatApiHttpClientFactory.CreateWxOpenClient();
+ var accessToken = WeChatCacheAccessTokenHelper.GetWxOpenAccessToken();
+ //phoneNumber = EncryptHelper.DecryptPhoneNumber(userInfo.sessionKey, entity.encryptedData, entity.iv);
+ var response = await client.ExecuteWxaBusinessGetUserPhoneNumberAsync(new SKIT.FlurlHttpClient.Wechat.Api.Models.WxaBusinessGetUserPhoneNumberRequest()
{
- return new WebApiDto { Code = 0, Msg = "OK", Data = new { user = userInfo.userId, isMobile = false } };
+ AccessToken = accessToken,
+ Code = entity.code
+ }, HttpContext.RequestAborted);
+ if (response.ErrorCode == (int)WeChatReturnCode.ReturnCode.请求成功)
+ {
+ phoneNumber = response.PhoneInfo.PhoneNumber;
}
}
- return new WebApiDto { Code = -2, Msg = "", Data = new { user = 0, isMobile = false } };
+ catch (Exception ex)
+ {
+ jm.code = 500;
+ NLogUtil.WriteAll(LogLevel.Error, LogType.Web, "小程序接口", "微信小程序授权拉取手机号码", ex);
+ return jm;
+ }
+
+ var data = new FMWxAccountCreate
+ {
+ mobile = phoneNumber,
+ invitecode = entity.invitecode,
+ sessionAuthId = entity.sessionAuthId
+ };
+
+ jm = await _userServices.SmsLogin(data);
+ return jm;
+
}
+
#region wx.login登陆成功之后发送的请求=========================================================
///