java接入支付宝api实现支付宝手机扫码登录
java接入支付宝api实现支付宝手机扫码登录
文章目录
- java接入支付宝api实现支付宝手机扫码登录
- 前言
- 一、创建应用
- 1.登录[支付宝开放平台](https://open.alipay.com/)进入管理中心
- 2.在控制台页面选择网页与应用并创建应用
- 3.输入相应的数据并创建
- 4.审核完成后就可以看到应用了
- 5.进入应用后在能力列表中选择以下两种能力
- 6.在应用信息中配置开发信息
- 7.将应用与商家账号绑定
- a.选择服务管理
- b.选择体验商家服务
- c.进入商家中心选择账号中心
- d.选择绑定appid
- 二、java代码实现
- 1.引maven依赖
- 2.创建AliLogin.java
- 三.测试
- 1.拼接授权页面url
- 沙箱注意事项
前言
本章将讲解java如何接入支付宝api以及实现扫码登录操作。
一、创建应用
1.登录支付宝开放平台进入管理中心
2.在控制台页面选择网页与应用并创建应用
3.输入相应的数据并创建
注意:要是没有域名的话就无法审核通过,但还可以使用支付宝沙箱来进行实现登录效果,不过只能使用沙箱提供的账号进行登录。使用沙箱的操作步骤--》
4.审核完成后就可以看到应用了
5.进入应用后在能力列表中选择以下两种能力
6.在应用信息中配置开发信息
配置应用的密钥(重要),应用私钥自己要保存好不然到时候找不到要重新配置。具体操作查看官方文档
使用沙箱的话就不用填写回调地址
7.将应用与商家账号绑定
a.选择服务管理
b.选择体验商家服务
c.进入商家中心选择账号中心
d.选择绑定appid
绑定成功后就可以无忧使用了。
二、java代码实现
1.引maven依赖
<!-- alipay --><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>3.1.0</version></dependency><!-- fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.48</version></dependency>
2.创建AliLogin.java
package com.aililogin.linux.controller;import com.aililogin.linux.cache.Cache;
import com.alibaba.fastjson.JSON;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.request.AlipayUserInfoShareRequest;
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.alipay.api.response.AlipayUserInfoShareResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@RestController
public class AilLogin {@Autowiredprivate Cache cache;//商户appidpublic static String APPID = "";//开发者私钥 pkcs8格式的public static final String APP_PRIVATE_KEY = "";//支付宝公钥public static final String ALIPAY_PUBLIC_KEY = "";//请求网关地址public static String URL = "https://openapi.alipay.com/gateway.do";//沙箱支付网关public static String sandbox_url = "https://openapi.alipaydev.com/gateway.do";/*** 支付宝登录** @Param: [appAuthCode 支付宝权限code]* @return*/@GetMapping("/alilogin")public void alilogin(@RequestParam("auth_code") String appAuthCode, @RequestParam("app_id") String appId ,@RequestParam("source") String source,HttpServletResponse httpServletResponse) throws AlipayApiException {//使用 auth_code 换取 access_token 及用户 userIdAlipayClient alipayClient = new DefaultAlipayClient(URL, appId, APP_PRIVATE_KEY, "json", "utf-8", ALIPAY_PUBLIC_KEY, "RSA2");AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();request.setCode(appAuthCode);request.setGrantType("authorization_code");try {AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request);//调用接口获取用户信息AlipayClient alipayClient2 = new DefaultAlipayClient(URL, appId, APP_PRIVATE_KEY, "json", "utf-8",ALIPAY_PUBLIC_KEY,"RSA2");AlipayUserInfoShareRequest request2 = new AlipayUserInfoShareRequest();String token =oauthTokenResponse.getAccessToken();System.out.println(token); AlipayUserInfoShareResponse response = alipayClient2.execute(request2, token);if (response.isSuccess()) {System.out.println("调用成功"); System.out.println(ReflectionToStringBuilder.toString(response));} else {System.out.println("调用失败");System.out.println(response.getSubCode() + ":" + response.getSubMsg());}} catch (AlipayApiException | IOException e) {//处理异常e.printStackTrace();}}}}
三.测试
1.拼接授权页面url
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=商户的APPID&scope=auth_user&redirect_uri=ENCODED_URL&state=init
注意:
• url 中的 app_id 参数是商户实际使用的 appId。
• scope 参数传递 auth_user。
• redirect_uri 为页面跳回地址(重定向地址)。
• state 为商户自定义参数。
参考官方文档
沙箱注意事项
使用沙箱的url为https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=商户的APPID&scope=auth_user&redirect_uri=ENCODED_URL&state=init
appid为沙箱的appid;
公钥和私钥也是沙箱的;
回调地址可以自定义本地地址例如:http://localhost:8080/alilogin
使用沙箱时将网关切换为沙箱网关
//沙箱支付网关public static String sandbox_url = "https://openapi.alipaydev.com/gateway.do";//原网关public static String URL = "https://openapi.alipay.com/gateway.do";
java接入支付宝api实现支付宝手机扫码登录相关推荐
- IM要做手机扫码登录?先看看微信的扫码登录功能技术原理
本文原文由作者Amazing10原创发布于公众号业余码农,收录时有改动,感谢原作者的技术分享. 1.引言 某天中午,吃完午饭,摊在自己的躺椅上,想趁吃饱喝足的午后时间静静享受独自的静谧. 干点什么好呢 ...
- 手机扫码登录实现原理
最近接到一个需求,要求用手机扫码实现用户登录,这是近几年比较流行的登录方式.这样确实是实现用户体验至上,操作简单,方便实用.拿到需求之后,我与后端大哥商量后,敲定了具体的实施方案.其实重要的还是要弄懂 ...
- 手机扫码登录电脑QQ出现无法登录问题
用QQ手机版扫描二维码安全登录电脑QQ,然后出现"当前版本过低,请升级到最新版本,报错代码[00020],为此腾讯QQ每隔一段时间会进行一次升级,但是腾讯的升级用户体验不太友好,很多人一头雾 ...
- java实现手机扫码登录客户端
为什么手机登录记住密码后不用再次登录 在了解扫码登录之前我们先了解一下其他内容, 首先为了安全,手机端它是不会存储你的登录密码的.但是在日常使用过程中,我们应该会注意到,只有在你的应用下 ...
- 手机扫码登录实现思路
1. PC端请求PC服务器获取二维码(假设此步暂不确定二维码中应包含的信息) 2. 手机扫码这个二维码,将包含登录态的token传给手机服务器,手机服务器解析token拿到用户的UID,存储在?遇到如 ...
- Unity发布PC平台,接入微信开放平台网页应用,扫码登录不拉起浏览器直接显示二维码在UI上
文章目录 一.前言 二.登录微信开放平台,申请网页应用 三.抓取授权二维码原理 四.测试 五.核心代码 六.补充:如何知道用户扫码成功 一.前言 Unity发布PC平台,如果在PC平台想要使用微信登录 ...
- IM扫码登录技术专题(三):通俗易懂,IM扫码登录功能详细原理一篇就够
本文引用了作者"大古同学"的"二维码扫码登录是什么原理"一文的主要内容,为了更好的理解和阅读,即时通讯网收录时有修订和改动,感谢原作者的分享. 1.引言 自从微 ...
- C#实现像微信PC版一样的扫码登录功能
现在好些网站都支持扫码登录,感觉上安全了很多,但是本地程序扫码登录的不多,就用C#实现了一下,需要作如下准备 在官网上申请一个企业微信,有条件的话做个企业认证吧,我们的是认证过的,所以账号和本地其他系 ...
- 支付宝二维码可以抓包更改金额_好消息!潍坊人也可以手机扫码坐公交啦!
随着互联网技术的发展,"扫码支付"的应用范围越来越广.在全国各大城市中,不仅餐饮.娱乐可以扫码付款,就连坐公交也能扫码支付了.截至去年12月,山东很多城市实现了公交扫码便捷支付,而 ...
- 支付宝支付-当面付之扫码支付「扫码支付」
前言 支付宝支付-沙箱环境使用 支付宝支付-支付宝PC端扫码支付 支付宝支付-手机浏览器H5支付 支付宝支付-当面付之扫码支付「本文」 当面付包含两种支付方式:商品条形码支付 + 扫码支付 经过前面两 ...
最新文章
- 十三条道德准则-富兰克林
- 【手写系列】透彻理解MyBatis设计思想之手写实现
- eclipse快捷键 包括查找类、方法、变量
- 最短路计数(spfa)
- wxWidgets:wxCalendarCtrl类用法
- php mysql 反斜杠_MySQL中如何插入反斜杠,反斜杠被吃掉,反斜杠转义(转)
- jmeter连接mysql数据库驱动_十八、JMeter实战-JDBC连接MySQL数据库
- Python 小白从零开始 PyQt5 项目实战(5)布局管理
- 【opencv学习】【模板匹配】
- 太香了!4999元就能入手iPhone 11 最高降价达900元
- C++智能指针shared_ptr使用实例
- 安装Genymotion步骤,启动模拟器时显示CPU不支持虚拟化—解决方法:惠普主机开启VT虚拟化CPU
- 帆软连接数据库的步骤
- windows加linux双系统安装方法
- 最高响应比优先算法(HRRF)及例题详解
- 详介 MQTT 服务器的搭建与客户端连接
- 三维文件格式 abc, glTF, fbx, obj, dae, stl, 3ds, ply,...
- ORACLE中的INTERVAL
- 糖糖班趣事之棒棒糖篇
- 图像处理与机器视觉行业分析
热门文章
- 上海第二工业大学计算机应用技术专业,2019上海第二工业大学专业排名
- Hibernate之底层原理的7点整理和总结
- 微信公众账号开发教程(四)自定义菜单(含实例源码)——转自http://www.cnblogs.com/yank/p/3418194.html...
- 屏蔽全部统计代码(51.la cnzz 百度统计 谷歌分析师adsense、屏蔽淘宝客广告代码)的方法...
- cesium 漫游飞行_cesium之三维漫游飞行效果实现篇
- android模拟器中关闭应用进程
- Linux——逻辑分区
- VirtualBox-5.2.44的安装
- excel2019批量删除空白行的方法
- 计算机不断自动重启,电脑一直自动重启,手把手教你电脑一直自动重启怎么解决...