使用开源项目Alipay.AopSdk.Core完成支付宝网页登录
核心方法:
public IActionResult UserInfoCallBackAli()
{
var alipayClient = new DefaultAopClient(ConfigAli.ServerUrl,
ConfigAli.AppId,
ConfigAli.PrivateKey,
"json",
null,
"RSA2",
ConfigAli.AlipayPublicKey,
"UTF-8",
false);
var alipayRequest = new AlipaySystemOauthTokenRequest();
alipayRequest.Code = Request.Query["auth_code"];
alipayRequest.GrantType = "authorization_code";
var aliUser = new UsersAli();
try
{
var alipayResponse = alipayClient.Execute(alipayRequest);
if (!alipayResponse.IsError)
{
var requestUser = new AlipayUserInfoShareRequest();
try
{
var userinfoShareResponse = alipayClient.Execute(requestUser, alipayResponse.AccessToken);
if (!userinfoShareResponse.IsError)
{
initUserInfo(aliUser, userinfoShareResponse);
var db = DB.GetInstance();
var flag = db.Queryable<UsersAli>().Where(m => m.user_id == aliUser.user_id).Any();
if (!flag)
{
db.Insertable<UsersAli>(aliUser).ExecuteCommand();
ViewData["json"] = "入库成功";
}
ViewData["json"] = "存在记录不用入库";
db.Dispose();
}
}
catch(AopException ex)
{
System.IO.File.AppendAllText("log", ex.ErrorMsg + "\r\n");
ViewData["ex"] = "出错"+ ex.ErrorMsg;
}
}
}
catch(AopException ex)
{
System.IO.File.AppendAllText("log", ex.ErrorMsg + "\r\n");
ViewData["ex"] = "出错"+ ex.ErrorMsg;
}
return View();
}
其中用到的一个工具方法
private void initUserInfo(UsersAli aliUser,AlipayUserInfoShareResponse response)
{
aliUser.user_id = response.UserId;
aliUser.avatar = response.Avatar;
aliUser.nick_name = response.NickName;
aliUser.city = response.City;
aliUser.province = response.Province;
aliUser.gender = response.Gender;
aliUser.user_type = response.UserType;
aliUser.is_certified = response.IsCertified;
aliUser.is_student_certified = response.IsStudentCertified;
//aliUser.is_balance_frozen = userinfoShareResponse.isBalanceFrozen
//aliUser.address = userinfoShareResponse.address
//aliUser.area = userinfoShareResponse.area
//aliUser.business_scope = userinfoShareResponse.businessScope
//aliUser.cert_no = userinfoShareResponse.certNo
//aliUser.email = userinfoShareResponse.email
//aliUser.license_no = userinfoShareResponse.licenseNo
//aliUser.mobile = userinfoShareResponse.mobile
//aliUser.person_birthday = userinfoShareResponse.personBirthday
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
2015-02-03 年终知识分享——移动应用开发
2012-02-03 Silverlight企业应用框架设计【六】自定义系统菜单(使用自己的DataForm)