使用开源项目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
        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

Silverlight:利用异步加载Xap实现自定义loading效果

关键点: 1.利用WebClient的DownloadProgressChanged事件更新下载进度 2.下载完成后,分析Xap包的程序集Assembly信息 ...

21310
来自专栏逸鹏说道

逆天通用水印扩展篇~新增剪贴板系列的功能和手动配置,卸除原基础不常用的功能

常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.n...

28510
来自专栏ios 技术积累

MJRefresh 封装

MJRefresh是很好用的一个刷新控件,但是如果在每个ViewController中都加入如下代码

2532
来自专栏技术之路

wcf webHttpBinding Post 大数据量提交 ios c#客户端

一直在为安卓和苹果写服务,刚开始的时候全用的Get请求用url传所有的参数,由于url长度的限制大的数据量 无法传到服务器,提交图片什么的就更不用说了,后来用的...

23310
来自专栏岑志军的专栏

ReactNative-ListView

1983
来自专栏生信技能树

基因名变化太快,比如PAM50

当然准备把这些基因跟ensembl数据库的ID对应的时候我发现少了3个,然后我搜索发现它们的symbol其实被修改了,可以说变化比较快啦,才几年时间,3 of ...

1392
来自专栏游戏杂谈

国际化语种名称的标识

国内因为版号的问题,导致很多游戏厂商选择出海。在国际化的市场要想取得好的成绩,就必须要做好深度的本地化,其中最基础的一块就是语言。

2362
来自专栏Petrichor的专栏

tree指令

1862
来自专栏JadePeng的技术博客

使用websocket-sharp来创建c#版本的websocket服务

当前有一个需求,需要网页端调用扫描仪,javascript不具备调用能力,因此需要在机器上提供一个ws服务给前端网页调用扫描仪。而扫描仪有一个c#版本的API,...

7585
来自专栏WOLFRAM

Mathematica带您一起迎接五一

1884

扫码关注云+社区

领取腾讯云代金券