前言
一直以来做app开发,没有详细了解过支付宝接入的整个流程,最近自己有点创业想法做了点尝试需要集成支付宝网页支付,顺道记录一下过程
关键字
springboot服务
,沙箱
,public_key
,private_key
本文的尝试依赖于springboot基础的服务框架,使用支付宝沙箱测试环境去做整个支付流程的测试
沙箱测试是支付宝对于未上线的应用服务接入,单体提供的一套环境,包括android客户端,和单独的参数配置。具体流程参见支付宝环境
这里重点要说一下在后续java代码中要使用到的两个关键RSA2的key值
支付宝提供了生成秘钥对的工具支付宝RAS密钥生成器SHAwithRSA2048_V1.0
,用这个生成RSA可以值会有三个如下图
- private_key
这里特别标注了我们在java代码里的私钥文件要使用pkcs8这个私钥。关于pkcs和pkcs8百度的解释如下(既然支付宝要的是这个,那我们就给他这个要不然的话直接发起支付都掉不起来,数据格式校验不通过)
The Public-Key Cryptography Standards (PKCS)
是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。
PKCS#8
:描述私有密钥信息格式,该信息包括公开密钥算法的私有密钥以及可选的属性集等。
- public_key
上面的工具里执行生成RSA秘钥,有一个rsa_public_key.pem
这个文件里的key的值是不是我们java代码里需要的呢,嗯 !不是的。
正确的姿势如下,需要把我们上一步生成的rsa_public_key.pem的内容上传到沙箱应用的公钥里
上传完成以后 ,会看到可以查看应用公钥和查看支付宝公钥
, 点击这个查看支付宝公钥拿到的字符串才是我们需要的 这里我们点击一下看看如下。
到此我们的准备工作就做完了,剩下的就是我们要去实现集成支付宝支付的内容
集成
maven依赖
这里我们没有连接数据库,因此我们只是用最基本的几个必须的依赖包,这几个依赖包干嘛用的就不解释了,相信进来看的都能看懂
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.13</version>
</dependency>
<dependency>
<groupId>com.qpwa.set</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>1.1.1</version