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实现支付宝手机扫码登录相关推荐

  1. IM要做手机扫码登录?先看看微信的扫码登录功能技术原理

    本文原文由作者Amazing10原创发布于公众号业余码农,收录时有改动,感谢原作者的技术分享. 1.引言 某天中午,吃完午饭,摊在自己的躺椅上,想趁吃饱喝足的午后时间静静享受独自的静谧. 干点什么好呢 ...

  2. 手机扫码登录实现原理

    最近接到一个需求,要求用手机扫码实现用户登录,这是近几年比较流行的登录方式.这样确实是实现用户体验至上,操作简单,方便实用.拿到需求之后,我与后端大哥商量后,敲定了具体的实施方案.其实重要的还是要弄懂 ...

  3. 手机扫码登录电脑QQ出现无法登录问题

    用QQ手机版扫描二维码安全登录电脑QQ,然后出现"当前版本过低,请升级到最新版本,报错代码[00020],为此腾讯QQ每隔一段时间会进行一次升级,但是腾讯的升级用户体验不太友好,很多人一头雾 ...

  4. java实现手机扫码登录客户端

    为什么手机登录记住密码后不用再次登录        在了解扫码登录之前我们先了解一下其他内容, 首先为了安全,手机端它是不会存储你的登录密码的.但是在日常使用过程中,我们应该会注意到,只有在你的应用下 ...

  5. 手机扫码登录实现思路

    1. PC端请求PC服务器获取二维码(假设此步暂不确定二维码中应包含的信息) 2. 手机扫码这个二维码,将包含登录态的token传给手机服务器,手机服务器解析token拿到用户的UID,存储在?遇到如 ...

  6. Unity发布PC平台,接入微信开放平台网页应用,扫码登录不拉起浏览器直接显示二维码在UI上

    文章目录 一.前言 二.登录微信开放平台,申请网页应用 三.抓取授权二维码原理 四.测试 五.核心代码 六.补充:如何知道用户扫码成功 一.前言 Unity发布PC平台,如果在PC平台想要使用微信登录 ...

  7. IM扫码登录技术专题(三):通俗易懂,IM扫码登录功能详细原理一篇就够

    本文引用了作者"大古同学"的"二维码扫码登录是什么原理"一文的主要内容,为了更好的理解和阅读,即时通讯网收录时有修订和改动,感谢原作者的分享. 1.引言 自从微 ...

  8. C#实现像微信PC版一样的扫码登录功能

    现在好些网站都支持扫码登录,感觉上安全了很多,但是本地程序扫码登录的不多,就用C#实现了一下,需要作如下准备 在官网上申请一个企业微信,有条件的话做个企业认证吧,我们的是认证过的,所以账号和本地其他系 ...

  9. 支付宝二维码可以抓包更改金额_好消息!潍坊人也可以手机扫码坐公交啦!

    随着互联网技术的发展,"扫码支付"的应用范围越来越广.在全国各大城市中,不仅餐饮.娱乐可以扫码付款,就连坐公交也能扫码支付了.截至去年12月,山东很多城市实现了公交扫码便捷支付,而 ...

  10. 支付宝支付-当面付之扫码支付「扫码支付」

    前言 支付宝支付-沙箱环境使用 支付宝支付-支付宝PC端扫码支付 支付宝支付-手机浏览器H5支付 支付宝支付-当面付之扫码支付「本文」 当面付包含两种支付方式:商品条形码支付 + 扫码支付 经过前面两 ...

最新文章

  1. 十三条道德准则-富兰克林
  2. 【手写系列】透彻理解MyBatis设计思想之手写实现
  3. eclipse快捷键 包括查找类、方法、变量
  4. 最短路计数(spfa)
  5. wxWidgets:wxCalendarCtrl类用法
  6. php mysql 反斜杠_MySQL中如何插入反斜杠,反斜杠被吃掉,反斜杠转义(转)
  7. jmeter连接mysql数据库驱动_十八、JMeter实战-JDBC连接MySQL数据库
  8. Python 小白从零开始 PyQt5 项目实战(5)布局管理
  9. 【opencv学习】【模板匹配】
  10. 太香了!4999元就能入手iPhone 11 最高降价达900元
  11. C++智能指针shared_ptr使用实例
  12. 安装Genymotion步骤,启动模拟器时显示CPU不支持虚拟化—解决方法:惠普主机开启VT虚拟化CPU
  13. 帆软连接数据库的步骤
  14. windows加linux双系统安装方法
  15. 最高响应比优先算法(HRRF)及例题详解
  16. 详介 MQTT 服务器的搭建与客户端连接
  17. 三维文件格式 abc, glTF, fbx, obj, dae, stl, 3ds, ply,...
  18. ORACLE中的INTERVAL
  19. 糖糖班趣事之棒棒糖篇
  20. 图像处理与机器视觉行业分析

热门文章

  1. 上海第二工业大学计算机应用技术专业,2019上海第二工业大学专业排名
  2. Hibernate之底层原理的7点整理和总结
  3. 微信公众账号开发教程(四)自定义菜单(含实例源码)——转自http://www.cnblogs.com/yank/p/3418194.html...
  4. 屏蔽全部统计代码(51.la cnzz 百度统计 谷歌分析师adsense、屏蔽淘宝客广告代码)的方法...
  5. cesium 漫游飞行_cesium之三维漫游飞行效果实现篇
  6. android模拟器中关闭应用进程
  7. Linux——逻辑分区
  8. VirtualBox-5.2.44的安装
  9. excel2019批量删除空白行的方法
  10. 计算机不断自动重启,电脑一直自动重启,手把手教你电脑一直自动重启怎么解决...