支付宝第三方登录接口调用
支付宝第三方登录接口调用
这个参考的是支付宝开放平台, 跟着文档一步步做, 可以做出来, 但是有个问题, 就是对新手来说文档不太容易读懂。我是调用过一次支付宝的支付接口,所以上手比较快。这里再做个记录,也给暂时不会的人铺个路。
首先调用支付宝第三方接口, 你得在支付宝开发平台上注册一个账号, 这个地方略过。然后,你还得创建一个应用,来获得一个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;
}
``
不知道为啥排版变成这样了。。 丑点能用就行…
支付宝第三方登录接口调用相关推荐
- SpringBoot项目接入支付宝第三方登录
今年大四毕业,由于新冠肺炎疫情的原因,开学和毕业答辩的时间都进行了推迟,因此有较多的时间对毕设项目做修改和调整,便在项目中接入微信和支付宝的第三方登录.在此需要说明,微信和支付宝的开发者平台大体一致, ...
- 最详细Java实现支付宝第三方登录
文章目录 概要 流程 代码 小结 概要 分享最新Java实现支付宝登录.(注:支付宝登入用个人账号登录(不非得用企业账号)即可测试,如果用沙箱环境进行测试可能会有Bug,建议用个人用户进行测试❤)如果 ...
- 微信第三方登录接口开发
微信登录接口开发须知 APP登录接口 PC网站登录接口 微信移动网页登录接口(又称微信公众号授权登录) 移动端非微信自带浏览不支持微信登录 微信移动网页登录接口(又称微信公众号授权登录) 先要与开放平 ...
- php第三方登录接口集合,YurunOAuthLogin是一个PHP 第三方登录授权 SDK,集成了QQ、微信、微博、Github等常用接口...
YurunOAuthLogin 介绍 YurunOAuthLogin是一个PHP 第三方登录授权 SDK,集成了QQ.微信.微博.Github等常用接口. 无框架依赖,支持所有框架,支持 Swoole ...
- 第三方登录 人人php,人人网第三方登录接口方案
之前闲暇有空,就去了解了下人人网的第三方登录的接口,呵呵..发布想了解的都了解下. 一. REST接口模式 使用HTTP post 协议or HTTP get 协议发出请求. HTTP 协议同RE ...
- 微信公众平台开发(31)微信第三方登录接口
原文: http://www.cnblogs.com/imaker/p/5491433.html 第一步:获取AppID AppSecret(不做解释,自己去微信公众平台申请) 第二步:生成扫描二维码 ...
- java第三方登录接口_第三方登录接入-qq,weibo-java
开发之前 需求:网站接入qq,sina微博登录,本文最后付效果图: 说明:大部分网站本身是需要用户概念的,很多操作依附于用户,而qq或微博作为一种登录方式指向用户而已,我参考了一下其他网站的做法, 一 ...
- Thinkphp6 对接google谷歌第三方登录接口
在开发项目当中经常会遇到需要第三方登录的开发,国内的QQ.微信.微博.支付宝相应的开发接口都很成熟,配置也很简单,今天我要介绍一下谷歌登录接口的开发方式. 1.首先下载谷歌SDK Releases · ...
- qq第三方登录的调用
第三方登录(QQ登录)开发流程详解 近排由于工作的繁忙,已经一个星期没写博文做分享了,接下来我对网站接入第三方登录----QQ登录的实现逻辑做一个详细的讲解. 对于整个流程的详细文档可以到QQ互联官网 ...
- php用户第三方登录失败,php 实现网站端qq第三方登录接口及一些注意事项【原创】...
最近工作中使用到了网站端QQ 微信 以及新浪微博的第三方登录,以及获取用户的基本信息,在各自开放平台的官方文档上都有详细的介绍 然而QQ登录的部分接口返回值却与其他的不同 所以这里我就完整的介绍一下网 ...
最新文章
- Saltstack自动化环境部署
- unix的sed 用法介绍
- OVH数据中心失火事件关于运维管理的思考
- AWS - EC2 Micro Instance 添加 SWAP 分区
- android Activity runOnUiThread() 方法使用
- Javascript鼠标键盘事件
- 为什么感觉腹部肥胖不好减?
- Linux 之父拒绝 996,Swift、Python 之父痴迷深夜编程,程序员之神的 24 小时!
- HTML5 — 知识篇总结《II》【HTML5大力支持的语义化思想与规范】
- 估计理论(6):如何确定BLUE?
- 人大金仓数据库登录、查看数据库
- Android等宽字体
- 一生要知道的100幅世界名画
- 云班课python答案_云班课测试题答案
- tmooccn达内登录_达内在线tmooc登陆
- Vue 组件通信方式居然有这么多?你了解几种
- iOS开发~WKWebView白屏适配
- Qt通过QAxWidget来使用flash控件的问题
- cad是计算机辅助设计什么,“什么是cad软件“cad是什么
- 阿里云推出全球应用加速解决方案,快速提升跨域应用访问体验
热门文章
- 王阳明:心力是克服万难的本源(附提升心力的12种方法)
- Windows XP 按权限设置共享
- JavaScript函数创建表格
- sem与seo的区别
- 什么是项目沟通管理?
- html文档放到phpstudy,phpstudy使用详解
- si24r1程序_SI24R1技术支持--程序 射频识别(radio frequency indentificationx) - 下载 - 搜珍网...
- Matplotlib 应用
- 【Ceph】ceph luminous版本新增组件:ceph-mgr
- sublime text2-text3 定义的不同浏览器的预览快捷键