支付宝开发平台

上图是官方提供的支付宝授权登录流程,具体看一下:

  1. 在小程序端获取 auth_code,目的是获取用户授权码

  2. 把第一步获取的授权码 auth_code 传到咱们自己的后台,也就是说后台需要编写一个接口,方便小程序端的传入

        var me = this;my.getAuthCode({scopes: 'auth_user', // 主动授权(弹框):auth_user,静默授权(不弹框):auth_basesuccess: (res) => {if (res.authCode) {// console.log(app.serverUrl + '/login/' + res.authCode);// 调用自己的服务端接口,让服务端进行后端的授权认证my.httpRequest({url: app.serverUrl + '/login/' + res.authCode,method: 'POST',header:{'content-type': 'application/json'},dataType: 'json',success: (res) => {// 授权成功并且服务器端登录成功console.log(res);me.setData({userInfo: res.data.data});}});}},});
    
  3. 后台拿到这个 auth_code 之后,需要调用支付宝的授权平台,从而获取用户的唯一 token 以及 支付宝的userid,都是唯一的,调用的接口为 [alipay.system.oauth.token]

  4. 获取到userid后,判断一下这个userid是否在我们自己的数据库中存在,如果存在,直接获取信息,并且直接返回用户对象到前台;如果不存在,则需要从支付宝授权平台再一次去获取支付宝用户的信息。

  5. ​调用 [alipay.user.info.share],获取用户信息,这个用户对象里包含了大量的用户真实信息,

  6. <dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.15.12.ALL</version>
    </dependency>
  7. @Autowiredprivate UserService userService;@ApiOperation(value = "统一登录接口", notes = "支付宝小程序唤起登录后调用", httpMethod = "POST")@PostMapping("/login/{authCode}")public IMoocJSONResult items(@ApiParam(name = "authCode", value = "授权码", required = true, example = "授权码") @PathVariable String authCode) throws Exception {// 1. 服务端获取access_token、user_idAlipaySystemOauthTokenResponse response = getAccessToken(authCode);if (response.isSuccess()) {System.out.println("获取access_token - 调用成功");/***  获取到用户信息后保存到数据*  1. 如果数据库不存在对用的 alipayUserId, 则注册*  2. 如果存在,则获取数据库中的信息再返回*/String accessToken = response.getAccessToken();String alipayUserId = response.getUserId();System.out.println("accessToken:" + accessToken);System.out.println("alipayUserId:" + alipayUserId);// 2. 查询该用户是否存在Users userInfo = userService.queryUserIsExist(alipayUserId);if (userInfo != null) {// 如果用户存在,直接返回给前端,表示登录成功return IMoocJSONResult.ok(userInfo);} else {// 如果用户不存在,则通过支付宝api获取用户的信息后,再注册用户到自己平台数据库// 获取会员信息AlipayUserInfoShareResponse aliUserInfo = getAliUserInfo(accessToken);if (aliUserInfo != null) {Users newUser = new Users();newUser.setAlipayUserId(alipayUserId);newUser.setNickname(aliUserInfo.getNickName());newUser.setRegistTime(new Date());newUser.setIsCertified(aliUserInfo.getIsCertified().equals("T") ? 1 : 0);newUser.setFaceImage(aliUserInfo.getAvatar());userService.createUser(newUser);return IMoocJSONResult.ok(newUser);}}} else {System.out.println("获取access_token - 调用失败");}return IMoocJSONResult.ok();}// 服务端获取access_token、user_idprivate AlipaySystemOauthTokenResponse getAccessToken(String authCode) throws Exception {AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APPID,                    // 1. 填入appidPRIVATE_KEY,            // 2. 填入私钥 "json", "GBK", ALIPAY_PUBLIC_KEY,         // 3. 填入公钥"RSA2");AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();request.setGrantType("authorization_code");request.setCode(authCode);        // 4. 填入前端传入的授权码authCoderequest.setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b");    // 0. 不用管AlipaySystemOauthTokenResponse response = alipayClient.execute(request);return response;}// 获取支付宝用户信息private AlipayUserInfoShareResponse getAliUserInfo (String accessToken) throws Exception {AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",APPID,                    // 1. 填入appidPRIVATE_KEY,            // 2. 填入私钥 "json", "GBK", ALIPAY_PUBLIC_KEY,         // 3. 填入公钥"RSA2");AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();AlipayUserInfoShareResponse response = alipayClient.execute(request, accessToken);if(response.isSuccess()){System.out.println("获取会员信息 - 调用成功");return response;}return null;}

app支付宝验证登录相关推荐

  1. 解读APP新一代验证登录方式——一键登录/免密认证

    近年来,验证领域迎来一个黑科技--用户在APP上进行账号注册或者号码绑定时,不需要接收短信验证码,直接可以以本机号码实现秒级验证.这种新颖且便捷的验证方式称为"一键认证". 一键认 ...

  2. Java支付宝APP支付-验证异步通知消息

    上一章已经讲述了支付宝如何生成支付订单,这一章讲述一下支付宝生成订单之后,异步通知接口的开发. 这里先讲一下啥叫支付宝异步通知:对于App支付产生的交易,支付宝会根据原始支付API中传入的异步通知地址 ...

  3. uniapp获取支付宝user_id - 支付宝提现 - 登录授权 - APP支付宝登陆 - H5支付宝授权

    效果图 uniapp须知(无奈之处) uniapp绑定支付宝user_id提现 - 方法对比: ==== 不同接口 ==== [APP支付宝登录] https://opendocs.alipay.co ...

  4. Android Studio 开发app 实现支付宝授权登录,获取支付宝账号头像昵称等信息

    效果展示: 点击支付宝授权Demo                 接下来我们开始动手写项目 首先需要在支付宝开放平台,注册账号,创建应用,配置应用,需要审核时间大约为1-2天. 网页/移动应用文档指 ...

  5. 支付宝快捷登录相关事宜

    接近年关,公司产品提出新需求,和支付宝合作,需要开发快捷登录-->"无线账户授权",手机端装有支付宝钱包,直接唤起支付宝钱包,若没有支付宝钱包就直接走HTML5页面操作,该操 ...

  6. App常见的登录注册分析

    京东app注册页 1.手机号注册 国内App普通都会采用手机号注册的方式,一方面便于用户在手机端进行注册验证码相关的验证,另一方面企业也想收集用户的手机号码,便于后期的广告.活动相关的通知和发放 2. ...

  7. APP支付宝支付接入

    1.app支付简介 买家可以在手机,掌上电脑等无线设备的应用程序内,通过支付宝(支付宝app或网页版支付宝)付款购买商品,且资金实行实时到账. 2.申请条件 1.申请前必须拥有经过实名认证的支付宝账户 ...

  8. 注册登录的设计:基于33款APP的注册登录分析

    对33款APP进行7个维度的对比分析后,为自己解决了有关注册登录设计的疑惑:并不是所有的应用都有设计注册登录的必要性:注册设计包括了路径设计.流程.内容设计--你在设计时是否也出现过类似的疑惑呢?不妨 ...

  9. 七丶青龙nvjdc部署教程+短信验证登录对接傻妞

    青龙nvjdc部署教程+短信验证登录对接傻妞Nolanjdc 没有服务器的先自行购买,这里推荐腾讯云2H4G8M首年70–点击购买 青龙面板安装教程 傻妞机器人安装教程 XDD安装教程 QQ交流:10 ...

  10. app开发人脸登录和指纹登录_易讯云通讯推出“一键登录”,为App登录提供新方案...

    移动互联网时代,用户的耐心越来越少,注意力也越来越弱,追求便捷与高效.登录的方式从自定义的账号密码登录,到邮箱登录,到第三方登录与手机验证码登录两种登录方式进行竞争,到现在的个人指纹,人脸识别等的识别 ...

最新文章

  1. 简单的Socket实现web功能
  2. 在线编辑器 上传控件
  3. 获取SQL Server数据库表的列名
  4. PHP常量PHP_SAPI与函数php_sapi_name()简介,PHP运行环境检测
  5. Apollo产品对比
  6. rsync算法原理及使用
  7. oracle导出中文utf8乱码,ORACLE导入导出后发生中文乱码的原因及解决办法
  8. 蓝桥杯 BASIC-27 基础练习 2n皇后问题
  9. 第二节:Web前端-ASP.NET之C#基础
  10. 数字阵列麦克风处理技术概述
  11. 面经_黑盒测试与白盒测试
  12. PS-怎么使用参考线?
  13. 如何用ps设计出一张吸引人眼球的创意节日海报?
  14. 太极定二仪,清浊始以形:红黑树的实现和性质
  15. 比较两组数据的差异用什么图更直观_用Excel制作旋风图
  16. 马云坦然不懂计算机,来自马云的绝望:三角函数让我彻底失去学数学的信心
  17. Android简易计算器的制作
  18. android计算bmi的程序,简单的基于android的BMI计算应用
  19. C语言 最佳情侣身高差
  20. Google首页电吉他源代码下载

热门文章

  1. 抗战史上知名的戚家刀PK日本真三武士刀刀型
  2. elementUI el-upload使用方法、上传限制数量且超出不显示上传按钮、删除闪一下、多个upload并排显示
  3. firewalld的练习
  4. 用java制作扑克牌_Java程序设计之扑克牌
  5. 支付宝小程序对接流程和工具类
  6. growup怎么读_growup_grow 和grow up 的区别
  7. 莫队算法 --算法竞赛专题解析(26)
  8. 现在的男生为什么不主动追求女生了
  9. Linux开发板实现 NTP时间获取
  10. ceph存储 FC HBA、iSCSI HBA、以太网卡3者区别