Java支付宝第三方登陆开发过程
网站支付宝登录接入流程
一、文档地址
接入文档地址:网站支付宝登录。
注:该接口支持沙箱环境测试。
二、开发前准备
1、签约
网站支付宝登录无需单独签约,在Appid对应的应用上添加获取会员信息功能包即可。
2、创建应用
(1)创建应用。
(2)生成密钥:参考如何生成RSA2密钥或者如何生成公钥证书。
(3)如何获取支付宝公钥。
(4)添加功能包:进入开发者中心,根据自己的业务需求,选择“应用类型”,再点击要添加功能的应用,进入应用详情页,然后进行如下操作。
3、服务端sdk地址
服务端SDK下载地址。
三、接口集成代码示例
1、应用授权URL拼接(在页面上加入此链接。这个链接是跳转到支付宝的授权地址)
授权链接拼接示例如下:
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=UrlEncode(授权回调地址)
授权链接上的各参数说明
app_id:开发者应用的app_id,如何获取可参考获取appid说明。
scope:网站支付宝登录的scope可填写成auth_user或者auth_base,2则区别可参考auth_base和auth_user的参数值说明进行了解。
redirect_uri:授权回调地址,必须以http或者https开头。
state:商户自定义参数,用户授权后,重定向到 redirect_uri 时会原样回传给商户,可不传递。
2、获取 auth_code(授权成功后,跳转到回调地址。进行用户信息获取)
授权商户访问拼接好的应用授权URL拼接链接,点击授权成功跳转至授权回调页面,在授权回调页面会带有auth_code 相关的数据内容,示例如下:
http://example.com/doc/toAuthPage.html?app_id=2014101500013658&source=alipay_wallet&scope=auth_user&auth_code=ca34ea491e7146cc87d25fca24c4cD11
3、实现代码如下(回调地址业务,获取用户信息)
通过auth_code 获取用户信息
返回值如下:
user_id就是我们唯一的用户标识。其实代码并不难。也就是刚入手的话。对于私钥和应用公钥以及支付宝公钥会弄混淆。
顺便把代码贴在这里吧。
/*** 支付宝第三方登陆* @param code* @param appId* @param request* @param response*/
@RequestMapping("/qyStaffAlipay/login")
public void qyStaffAlipay(@RequestParam(value = "auth_code") String code,@RequestParam(value = "app_id") String appId,HttpServletRequest request, HttpServletResponse response) throws IOException {try {JSONObject json = AlipayClientUtils.getAuthToken(code);if(json != null){String unionId = json.getString("user_id");if(StringUtils.isNotBlank(unionId)){//登陆业务}else {logger.error("登录失败:unionId为空");}}}catch (AuthException e) {e.printStackTrace();logger.error("登录失败:" + e.getMessage());} catch (Exception e) {e.printStackTrace();logger.error("登录失败:" + e.getMessage());}response.sendRedirect("/r/login");return;
}
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayOpenPublicTemplateMessageIndustryModifyRequest;
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.response.AlipayOpenPublicTemplateMessageIndustryModifyResponse;
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.ditop.modules.gcjsy.basic.constant.AliPayLoginContant;import static com.alipay.api.AlipayConstants.CHARSET_GBK;/*** @author wwz*/
public class AlipayClientUtils {/*** 创建单例* @return*/private static class AlipayClientHolder{private static final AlipayClient alipayClient = new DefaultAlipayClient(AliPayLoginContant.SERVICE_URL, AliPayLoginContant.APPID, AliPayLoginContant.APP_PRIVATE_KEY, "json", CHARSET_GBK, AliPayLoginContant.ALIPAY_PUBLIC_KEY, "RSA2");}/*** 获取token信息* @param code* @return* @throws AlipayApiException*/public static JSONObject getAuthToken(String code) throws AlipayApiException {AlipayClient alipayClient = AlipayClientHolder.alipayClient;AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();request.setCode(code);request.setGrantType("authorization_code");AlipaySystemOauthTokenResponse response = alipayClient.execute(request);if(response.isSuccess()){String body = response.getBody();if(!StringUtils.isEmpty(body)){JSONObject jsonObject = JSONObject.parseObject(body);JSONObject object = jsonObject.getJSONObject(AliPayLoginContant.ALIPAY_SYSTEM_OAUTH_TOKEN_RESPONSE);return object;}System.out.println("调用成功");} else {System.out.println("调用失败");}return null;}}
/*** @author wwz*/
public class AliPayLoginContant {public final static String BASE_URL = "http://wwz1994.e2.luyouxia.net:22851";/*** 网关地址*/public final static String SERVICE_URL = "https://openapi.alipay.com/gateway.do";/*** appid*/public final static String APPID = "XXXXX";/*** 回调地址*/public final static String REDIRECT_URL = "XXXXX";/*** 支付宝公钥(在签名)*/public final static String ALIPAY_PUBLIC_KEY = "XXXXX";/*** 你自己生成的私钥*/public final static String APP_PRIVATE_KEY = "XXXXX";public static final String ALIPAY_SYSTEM_OAUTH_TOKEN_RESPONSE = "alipay_system_oauth_token_response";}
Java支付宝第三方登陆开发过程相关推荐
- java 支付宝 第三方即时到账支付
java 支付宝 第三方即时到账支付 alipay 的几个内核功能文件: =============================================================== ...
- java 支付宝 第三方即时到账支付 接口
alipay 的几个内核功能文件: AlipayFunction.Java package com.test.util.alipay;import java.io.FileWriter; import ...
- java支付宝第三方支付详解
1.引入支付宝sdk文件. <dependency><groupId>com.alipay.sdk</groupId><artifactId>alipa ...
- Java对接第三方支付渠道之支付宝支付
提示:支付宝相对于微信支付更人性化,且细节做得更好. Java对接第三方支付渠道之支付宝支付 一.前期准备工作 二.导入依赖 三.书写配置类 四.书写配置文件 五.调用相关支付接口 1.流程图 2.创 ...
- Java集成第三方支付宝(会员卡)——文档篇
Java集成第三方会员卡--文档篇 简介 官方文档 相关文章 接入准备 获取会员信息 简介 API列表 商户会员卡 简介 API列表 文件上传 会员卡模板管理 开卡组件 会员卡管理 简介 获取会员信息 ...
- java支付宝网页授权登录界面_支付宝开发平台之第三方授权登录与获取用户信息...
对于第三方登录,我们常见了,很多应用可以进行第三方登录,我常用的有:QQ.微信.新浪.支付宝等等,今天我们就一起来简单学习一下支付宝第三方授权登录. 打开支付宝开发平台,注册成为开发者,点击开发者中心 ...
- 最详细Java实现支付宝第三方登录
文章目录 概要 流程 代码 小结 概要 分享最新Java实现支付宝登录.(注:支付宝登入用个人账号登录(不非得用企业账号)即可测试,如果用沙箱环境进行测试可能会有Bug,建议用个人用户进行测试❤)如果 ...
- 【小白学JAVA】QQ第三方登陆Demo
实现简单的QQ第三方登陆功能,具体的Demo,本人是用maven+SSM做的 1. 自己练习做第三方登陆,网上的说的都是很模糊,初学者不是很容易看懂,所以记录研究QQ登陆的经历,希望帮到大家. 2. ...
- 浅谈支付宝第三方支付
技术点(九):支付宝第三方支付 1)下载demo地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.aWu6YY& ...
- 如何在spring boot+maven项目中调用支付宝第三方接口(沙箱环境)
一 首先第一步需要去支付宝的开放平台做一些操作,输入下面的网址:网址 (需要登陆,扫码或者用户密码登陆)登陆网站以后 具体操作如下面视图: 开发者中心->研发服务(沙箱) -----这里需要开通 ...
最新文章
- zabbix-proxy分布式监控配置
- 【C#】第3章学习要点(三)--常用类和结构的用法
- golang 检查ip地址格式 是否正确
- 斯坦福机器学习视频笔记 Week6 关于机器学习的建议 Advice for Applying Machine Learning...
- TextView SpannableString 使用之实现可点击超链接效果
- 大道至简第五章阅读笔记
- 2021绵阳南山高考成绩查询,绵阳南山中学举行2021年冲刺高考百日誓师大会
- 使用 Cockpit 方便地管理容器
- python画两条曲线_查找在matplotlib中绘制的两条曲线之间的区域(在区域之间填充)...
- idea springboot 发布webservice 发布服务_阿里云发布 Spring Boot 新脚手架,真香
- 2018-2019-1 20165234 《信息安全系统设计基础》第八周学习总结
- 千万别让海底捞知道你的生日
- 自动驾驶感知系统(图)侵删
- 20190930每日一句
- vue模块单独封装html,在vue中怎么定义自定义组件?
- 职高计算机专业c语言_C语言程序设计(全国高职高专计算机系列精品教材)
- openoffic需要的jar包
- 迅雷CTO李金波:致创业者的一封信
- 网络唤醒工具WOL(适用于华为路由器下的设备)
- 仿ios圆盘转动——wheelview,可联动