网站支付宝登录接入流程

一、文档地址

接入文档地址:网站支付宝登录。

注:该接口支持沙箱环境测试。

二、开发前准备

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支付宝第三方登陆开发过程相关推荐

  1. java 支付宝 第三方即时到账支付

    java 支付宝 第三方即时到账支付 alipay 的几个内核功能文件: =============================================================== ...

  2. java 支付宝 第三方即时到账支付 接口

    alipay 的几个内核功能文件: AlipayFunction.Java package com.test.util.alipay;import java.io.FileWriter; import ...

  3. java支付宝第三方支付详解

    1.引入支付宝sdk文件. <dependency><groupId>com.alipay.sdk</groupId><artifactId>alipa ...

  4. Java对接第三方支付渠道之支付宝支付

    提示:支付宝相对于微信支付更人性化,且细节做得更好. Java对接第三方支付渠道之支付宝支付 一.前期准备工作 二.导入依赖 三.书写配置类 四.书写配置文件 五.调用相关支付接口 1.流程图 2.创 ...

  5. Java集成第三方支付宝(会员卡)——文档篇

    Java集成第三方会员卡--文档篇 简介 官方文档 相关文章 接入准备 获取会员信息 简介 API列表 商户会员卡 简介 API列表 文件上传 会员卡模板管理 开卡组件 会员卡管理 简介 获取会员信息 ...

  6. java支付宝网页授权登录界面_支付宝开发平台之第三方授权登录与获取用户信息...

    对于第三方登录,我们常见了,很多应用可以进行第三方登录,我常用的有:QQ.微信.新浪.支付宝等等,今天我们就一起来简单学习一下支付宝第三方授权登录. 打开支付宝开发平台,注册成为开发者,点击开发者中心 ...

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

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

  8. 【小白学JAVA】QQ第三方登陆Demo

    实现简单的QQ第三方登陆功能,具体的Demo,本人是用maven+SSM做的 1. 自己练习做第三方登陆,网上的说的都是很模糊,初学者不是很容易看懂,所以记录研究QQ登陆的经历,希望帮到大家. 2.  ...

  9. 浅谈支付宝第三方支付

    技术点(九):支付宝第三方支付 1)下载demo地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.aWu6YY& ...

  10. 如何在spring boot+maven项目中调用支付宝第三方接口(沙箱环境)

    一 首先第一步需要去支付宝的开放平台做一些操作,输入下面的网址:网址 (需要登陆,扫码或者用户密码登陆)登陆网站以后 具体操作如下面视图: 开发者中心->研发服务(沙箱) -----这里需要开通 ...

最新文章

  1. zabbix-proxy分布式监控配置
  2. 【C#】第3章学习要点(三)--常用类和结构的用法
  3. golang 检查ip地址格式 是否正确
  4. 斯坦福机器学习视频笔记 Week6 关于机器学习的建议 Advice for Applying Machine Learning...
  5. TextView SpannableString 使用之实现可点击超链接效果
  6. 大道至简第五章阅读笔记
  7. 2021绵阳南山高考成绩查询,绵阳南山中学举行2021年冲刺高考百日誓师大会
  8. 使用 Cockpit 方便地管理容器
  9. python画两条曲线_查找在matplotlib中绘制的两条曲线之间的区域(在区域之间填充)...
  10. idea springboot 发布webservice 发布服务_阿里云发布 Spring Boot 新脚手架,真香
  11. 2018-2019-1 20165234 《信息安全系统设计基础》第八周学习总结
  12. 千万别让海底捞知道你的生日
  13. 自动驾驶感知系统(图)侵删
  14. 20190930每日一句
  15. vue模块单独封装html,在vue中怎么定义自定义组件?
  16. 职高计算机专业c语言_C语言程序设计(全国高职高专计算机系列精品教材)
  17. openoffic需要的jar包
  18. 迅雷CTO李金波:致创业者的一封信
  19. 网络唤醒工具WOL(适用于华为路由器下的设备)
  20. 仿ios圆盘转动——wheelview,可联动

热门文章

  1. 【虚拟机】虚拟机vmware设置全屏(直接设置)
  2. hive 自定义UDF函数解析HTML
  3. FPGA与ASIC区别
  4. 连载]第四讲 测量准确度、重复性、复现性及标准偏差
  5. linux中添加程序,学习进阶 uClinux中添加用户应用程序
  6. 从 MVC 到使用 ASP.NET Core 6.0 的最小 API
  7. php不使用框架,导出Excel,这里有代码,全解
  8. 和橘子菇凉一起开始python之旅吧!
  9. 百寸大屏搭配高清画质,极米NEW Z6X轻松打造沉浸式家庭影院
  10. python is not defined