项目上次到Gitee,可以去看源代码SpringBoot实现支付宝支付: 学习SpringBoot 怎么接入支付宝实现支付
1.支付
现代生活,什么付款方式最常见?不是现金,也不是银行卡,而是手机支付。支付宝和微信支付是当今社会必备的付款方式,所以在中国,出门带手机,就什么都可以做到,而这个生活上的变化离不开互联网的发展以及辛勤的开发人员的努力。而对于众多的app或web网站,一个二维码扫码支付功能是必备的,那么如何实现支付功能呢?
2.了解支付宝的支付流程
为了保证交易双方(商户和支付宝)的身份和数据安全,开发者在调用接口前,需要配置双方密钥,对交易数据进行双方校验。密钥包含应用私钥(APP_PRIVATE_KEY)和应用公钥(APP_PUBLIC_KEY)。生成密钥后,开发者需要在开放平台开发者中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。密钥的配置旨在对交易数据进行双方校验。具体流程如下图所示:
说明:
支付宝开放平台 SDK 封装了签名和验签过程,只需配置账号及密钥参数。
-
应用公钥(商户自身的 RSA/RSA2 公钥): 支付宝使用该公钥验证该交易是商户发起。
-
支付宝公钥(支付宝的 RSA/RSA2 公钥):商户使用该公钥验证该结果是支付宝返回的。
注意:
-
由于同步返回的不可靠性,支付结果必须以异步通知或查询接口返回为准,不能依赖同步跳转。
-
商户系统接收到异步通知以后,必须通过验签(验证通知中的 sign 参数)来确保支付通知是由支付宝发送的。
-
接收到异步通知并验签通过后,一定要检查通知内容,包括通知中的 app_id、out_trade_no、total_amount 是否与请求中的一致,并根据 trade_status 进行后续业务处理。
-
在支付宝端,partnerId 与 out_trade_no 唯一对应一笔单据,商户端保证不同次支付 out_trade_no 不可重复;若重复,支付宝会关联到原单据,基本信息一致的情况下会以原单据为准进行支付。
补充:SDK和API的区别
SDK全称software development kit,软件开发工具包。
API就是可以轻松实现和其他软件的交互。
API是数据接口,SDK相当于开发集成工具环境。要在SDK的环境下调用API.
API是接口对接接口的过程,SDK不仅提供开发环境,还提供很多的API
扫码支付接入流程
3.沙箱(沙盒)
使用支付宝支付需要完成一系列繁杂的认证,比如商家认证、营业执照等需求,作为开发者或者在学习Spring的学生而言这简直就是天方夜谭,所以为了解决这一问题支付宝推出了沙盒,来帮助我们更便捷的学习支付接口。
Sandboxie(又叫沙箱、沙盘)即是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。 在网络安全中,沙箱指在隔离环境中,用以测试不受信任的文件或应用程序等行为的工具。
沙箱是一种按照安全策略限制程序行为的执行环境。早期主要用于测试可疑软件等,比如黑客们为了试用某种病毒或者不安全产品,往往可以将它们在沙箱环境中运行。
经典的沙箱系统的实现途径一般是通过拦截系统调用,监视程序行为,然后依据用户定义的策略来控制和限制程序对计算机资源的使用,比如改写注册表,读写磁盘等。
5.支付宝支付准备工作
正式的支付功能上线,需要使用企业的信息,所以我们这里使用支付宝提供的沙箱功能实现测试,如何访问沙箱呢?下面看一下实现步骤:
访问支付宝首页,选择角色:"我是开发者"
使用手机上的支付宝,扫码登录到系统。登录后选择左上角“控制台”,然后在页面下方有“开发服务”
沙箱的使用步骤:
步骤1:查看信息
步骤2:查看密钥(支付宝为我们提供了默认的密钥)
如果想要自己定义密钥的话,官方提供了两种生成方式,对于新手推荐使用支付宝密钥生成器”,点击“支付宝密钥生成器”,下载exe文件,并安装。
步骤3:下载沙箱钱包进行测试,注意这里必须使用沙箱版钱包进行测试,账户信息已给定。此软件只支持安卓系统
步骤4:测试账户的账号信息
6.代码开发
6.1 支付工具类:AlipayConfig.java
public class AlipayConfig { //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号 public static String app_id = ""; // 商户私钥,您的PKCS8格式RSA2私钥 public static String merchant_private_key = "";