支付宝第三方登录接口调用

这个参考的是支付宝开放平台, 跟着文档一步步做, 可以做出来, 但是有个问题, 就是对新手来说文档不太容易读懂。我是调用过一次支付宝的支付接口,所以上手比较快。这里再做个记录,也给暂时不会的人铺个路。

首先调用支付宝第三方接口, 你得在支付宝开发平台上注册一个账号, 这个地方略过。然后,你还得创建一个应用,来获得一个APP_ID, 这个APP_ID啊, 以后写代码时候需要的一个参数而已。




弄到这里差不多等几个小时就通过了, app_id要审核通过才能用, 也就是只有当审核通过时,第三方接口才能正常调用, 如果你等不及, 可以使用沙箱环境进行开发测试。登录的接口我没有用过沙箱, 不保证说的正确,我这里就不作介绍了。
审核通过后,根据文档开发,我们从第二步开始。


要选择一个功能, 登录嘛, 当然是获取会员信息咯
然后

这些地方要填, 接口加密的话, 点进去会叫你下载一个支付宝开发平台助手的软件

点击生成密钥, 然后把两个公钥粘贴到网页上对应的空格里, 这里接口非对称加密哦, 以后代码里也会用到这些密钥。支付宝网关一定是那个以及回调地址一定要填, 回调地址需要是一个公网ip”的地址, 我推荐用小花生, 或者你自己用什么办法, 能达到目的就行。
对了,查看接口加密方式时候, 一定要把支付宝公钥记下来, 代码里用到。


准备完这些, 可以开始快乐编码了, 首先你需要一个javaweb项目, 然后把第三方登录功能引入,
自己创建或者已经有的, 都可以, 现在先导入sdk
<dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.9.28.ALL</version> </dependency>
贴代码图片(最后会有代码贴出)



这张太多了。。 代码直接贴出
··
@Controller
@Slf4j
public class ThreeLoginController {

private static final String MODEL = "/cms/aliLogin";
@Value("${ali.URL}")
private String URL;
@Value("${ali.APP_ID}")
private String APP_ID;
@Value("${ali.APP_PRIVATE_KEY}")
private String APP_PRIVATE_KEY;
@Value("${ali.FORMAT}")
private String FORMAT;
@Value("${ali.CHARSET}")
private String CHARSET;
@Value("${ali.ALIPAY_PUBLIC_KEY}")
private String ALIPAY_PUBLIC_KEY;
@Value("${ali.SIGN_TYPE}")
private String SIGN_TYPE;@Autowired
private CoreUserService userService;@Autowired
private CorePlatformService platformService;@Autowired
private AlipayClient alipayClient;@GetMapping(MODEL + "/login.do")
public ModelAndView  aliLogin() {ModelAndView view = new ModelAndView("/threeLogin.html") ;// https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=商户的APPID&scope=auth_user&redirect_uri=ENCODED_URLString aliStr="https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id="+APP_ID+"&scope=auth_user&redirect_uri="+"http%3a%2f%2fb2944625b9.zicp.vip%2fcms%2faliLogin%2freturnAddress.do";view.addObject("aliStr",aliStr);return view;
}@GetMapping(MODEL + "/returnAddress.do")
public String  returnAddress(@RequestParam(name = "auth_code")String authCode, @RequestParam(name = "app_id")String appId, @RequestParam(name = "scope")String scope) {log.info("回调成功!");// 模拟admin登录UserLoginInfo info = userService.login("admin", "123456");if (info == null) {throw new PlatformException("用户名密码错");}CoreUser user = info.getUser();CoreOrg currentOrg = info.getOrgs().get(0);for (CoreOrg org : info.getOrgs()) {if (org.getId() == user.getOrgId()) {currentOrg = org;break;}}info.setCurrentOrg(currentOrg);// 记录登录信息到sessionthis.platformService.setLoginUser(info.getUser(), info.getCurrentOrg(), info.getOrgs());// 测试  auth_code获取用户的user_id和access_tokenString accessToken = getAccessToken(authCode);if(accessToken != null) {AlipayUser aUser = getUserInfoByToken(accessToken);log.info("AlipayUser message: {}", aUser);}return "redirect:/index.do";
}/*** 根据auth_code获取用户的user_id和access_token* @param authCode* @return*/
public String getAccessToken(String authCode) {AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();request.setCode(authCode);request.setGrantType("authorization_code");try {AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request);return oauthTokenResponse.getAccessToken();} catch (Exception e) {log.error("使用authCode获取信息失败!", e);return null;}
}/*** 根据access_token获取用户信息* @param token* @return*/
public AlipayUser getUserInfoByToken(String token) {AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest ();try {AlipayUserInfoShareResponse response =  alipayClient.execute(request, token);if (response.isSuccess()) {//打印响应信息

// System.out.println(ReflectionToStringBuilder.toString(response));
//封装支付宝对象信息
AlipayUser alipayUser = new AlipayUser();
alipayUser.setAddress(response.getAddress());
alipayUser.setCertNo(response.getCertNo());
alipayUser.setCity(response.getCity());
alipayUser.setCollegeName(response.getCollegeName());
alipayUser.setDegree(response.getDegree());
alipayUser.setMobile(response.getMobile());
alipayUser.setPhone(response.getPhone());
alipayUser.setProvince(response.getProvince());
alipayUser.setUserName(response.getUserName());
alipayUser.setNickName(response.getNickName());
return alipayUser;
}
log.error(“根据 access_token获取用户信息失败!”);
return null;

    } catch (Exception e) {log.error("根据 access_token获取用户信息抛出异常!", e);return null;}
}

}
··
这里我要说明一下,扫码登录的页面, 是自己点击或者其他事件进行跳转到的
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL
把参数填上去就行了,就能到达这个页面

扫码后, 支付宝那边的服务器会返回回调地址, 就是redirect_uri这个,要是外网的环境,
@GetMapping(MODEL + “/returnAddress.do”)就能找到这个, 里面这三个参数是返回的
auth_code, app_id,scope ,之后要用到,抓个包看一下


还有些看文档, 比如参数的解释, 上面说的比较详细
用auth_code可以换access_token, 这个access_token相当于令牌, 想怎么玩就怎么玩,
怎么换取代码已经贴出来了。
之后该干啥干啥
如果遇到支付宝页面的报错, 可以按快捷键ctrl + a, 页面会显示问题所在, 现在把剩下的代码贴出来
``
@Configuration
@Slf4j
@ConfigurationProperties(prefix = “ali”)
@Data
public class AliLoginConf {

private String URL;
private String APP_ID;
private String APP_PRIVATE_KEY;
private String FORMAT;
private String CHARSET;
private String ALIPAY_PUBLIC_KEY;
private String SIGN_TYPE;@Bean
public AlipayClient getAlipayClient() throws Exception {AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);log.info("注入支付宝客户端成功");return alipayClient;
}

}

ali.URL=https://openapi.alipay.com/gateway.do
ali.APP_ID=你自己的
ali.APP_PRIVATE_KEY=你自己的
ali.FORMAT=json
ali.CHARSET=UTF-8
ali.ALIPAY_PUBLIC_KEY=你自己的
ali.SIGN_TYPE=RSA2

@Data
public class AlipayUser {

private String userId;
private String code;
private String msg;
/*** 用户头像*/
private String avatar;
private String province;
private String city;
private String nickName;
private String gender;private String address;
private String certNo;
private String collegeName;
private String degree;
private String mobile;
private String phone;
private String userName;

}
``

不知道为啥排版变成这样了。。 丑点能用就行…

支付宝第三方登录接口调用相关推荐

  1. SpringBoot项目接入支付宝第三方登录

    今年大四毕业,由于新冠肺炎疫情的原因,开学和毕业答辩的时间都进行了推迟,因此有较多的时间对毕设项目做修改和调整,便在项目中接入微信和支付宝的第三方登录.在此需要说明,微信和支付宝的开发者平台大体一致, ...

  2. 最详细Java实现支付宝第三方登录

    文章目录 概要 流程 代码 小结 概要 分享最新Java实现支付宝登录.(注:支付宝登入用个人账号登录(不非得用企业账号)即可测试,如果用沙箱环境进行测试可能会有Bug,建议用个人用户进行测试❤)如果 ...

  3. 微信第三方登录接口开发

    微信登录接口开发须知 APP登录接口 PC网站登录接口 微信移动网页登录接口(又称微信公众号授权登录) 移动端非微信自带浏览不支持微信登录 微信移动网页登录接口(又称微信公众号授权登录) 先要与开放平 ...

  4. php第三方登录接口集合,YurunOAuthLogin是一个PHP 第三方登录授权 SDK,集成了QQ、微信、微博、Github等常用接口...

    YurunOAuthLogin 介绍 YurunOAuthLogin是一个PHP 第三方登录授权 SDK,集成了QQ.微信.微博.Github等常用接口. 无框架依赖,支持所有框架,支持 Swoole ...

  5. 第三方登录 人人php,人人网第三方登录接口方案

    之前闲暇有空,就去了解了下人人网的第三方登录的接口,呵呵..发布想了解的都了解下. 一.   REST接口模式 使用HTTP post 协议or HTTP get 协议发出请求. HTTP 协议同RE ...

  6. 微信公众平台开发(31)微信第三方登录接口

    原文: http://www.cnblogs.com/imaker/p/5491433.html 第一步:获取AppID AppSecret(不做解释,自己去微信公众平台申请) 第二步:生成扫描二维码 ...

  7. java第三方登录接口_第三方登录接入-qq,weibo-java

    开发之前 需求:网站接入qq,sina微博登录,本文最后付效果图: 说明:大部分网站本身是需要用户概念的,很多操作依附于用户,而qq或微博作为一种登录方式指向用户而已,我参考了一下其他网站的做法, 一 ...

  8. Thinkphp6 对接google谷歌第三方登录接口

    在开发项目当中经常会遇到需要第三方登录的开发,国内的QQ.微信.微博.支付宝相应的开发接口都很成熟,配置也很简单,今天我要介绍一下谷歌登录接口的开发方式. 1.首先下载谷歌SDK Releases · ...

  9. qq第三方登录的调用

    第三方登录(QQ登录)开发流程详解 近排由于工作的繁忙,已经一个星期没写博文做分享了,接下来我对网站接入第三方登录----QQ登录的实现逻辑做一个详细的讲解. 对于整个流程的详细文档可以到QQ互联官网 ...

  10. php用户第三方登录失败,php 实现网站端qq第三方登录接口及一些注意事项【原创】...

    最近工作中使用到了网站端QQ 微信 以及新浪微博的第三方登录,以及获取用户的基本信息,在各自开放平台的官方文档上都有详细的介绍 然而QQ登录的部分接口返回值却与其他的不同 所以这里我就完整的介绍一下网 ...

最新文章

  1. Saltstack自动化环境部署
  2. unix的sed 用法介绍
  3. OVH数据中心失火事件关于运维管理的思考
  4. AWS - EC2 Micro Instance 添加 SWAP 分区
  5. android Activity runOnUiThread() 方法使用
  6. Javascript鼠标键盘事件
  7. 为什么感觉腹部肥胖不好减?
  8. Linux 之父拒绝 996,Swift、Python 之父痴迷深夜编程,程序员之神的 24 小时!
  9. HTML5 — 知识篇总结《II》【HTML5大力支持的语义化思想与规范】
  10. 估计理论(6):如何确定BLUE?
  11. 人大金仓数据库登录、查看数据库
  12. Android等宽字体
  13. 一生要知道的100幅世界名画
  14. 云班课python答案_云班课测试题答案
  15. tmooccn达内登录_达内在线tmooc登陆
  16. Vue 组件通信方式居然有这么多?你了解几种
  17. iOS开发~WKWebView白屏适配
  18. Qt通过QAxWidget来使用flash控件的问题
  19. cad是计算机辅助设计什么,“什么是cad软件“cad是什么
  20. 阿里云推出全球应用加速解决方案,快速提升跨域应用访问体验

热门文章

  1. 王阳明:心力是克服万难的本源(附提升心力的12种方法)
  2. Windows XP 按权限设置共享
  3. JavaScript函数创建表格
  4. sem与seo的区别
  5. 什么是项目沟通管理?
  6. html文档放到phpstudy,phpstudy使用详解
  7. si24r1程序_SI24R1技术支持--程序 射频识别(radio frequency indentificationx) - 下载 - 搜珍网...
  8. Matplotlib 应用
  9. 【Ceph】ceph luminous版本新增组件:ceph-mgr
  10. sublime text2-text3 定义的不同浏览器的预览快捷键