今天在看了移动支付的文档,对整个流程都有了自己的理解,在这里记录下来自己的总结,把里面的逻辑都整理一遍
一、支付宝支付
先去看官方的支付文档,链接如下
https://openhome.alipay.com/platform/home.htm
1、先说前期准备,关键就是要生成一对公钥和私钥,这个看官方文档,现在官方有个自动生成工具,其实挺方便的。注意的是如果是java开发,生成的私钥要转成pkcs8格式。
(1)pkcs8的私钥自己保存,填到自己支付宝开发项目 里面的public static final String RSA_PRIVATE 这个字段里
(2)下面的蓝色2个选项,其实都是公钥。前个是自己上传的公钥,后一个是对应的支付宝公钥,这个支付宝公钥才是我们开发中需要的,这个切记。
(3)点红色方框,把自己生成的公钥上传给支付宝。
(4)点蓝色方框,得到支付宝的公钥,填到public static final String RSA_PUBLIC 这个字段里
2、准备完成了,接下来就是看请求参数的文档,这里告诉我们究竟要如何上传参数给支付宝后台,文档链接如下。
其实,支付宝接入的核心就是要组成下面图片所示的字符串,把这个字符串当参数传递调用支付宝Api即可。
我们来分析这个字符串。红色边框里面是签名内容sign和加密名称sign_type。(sign是根据我们上传参数生成的,也就是说所有我们上传的参数都需要一起签名;sign_type是签名方法,这里是固定值RSA)。而红色边框之外的是我们自己根据需要拼接的参数数据。接下来就是2个疑问
(1)红色边框之外的内容如何生成?
(2)红色边框里面的签名又是如何生成?
我们一个个来,先说红色边框之外的内容,把所有 值以key= “value”进行组合,之后用“&”字符连接起来,支持无序。 根据demo,我们使用一个String orderInfo = getOrderInfo("测试的商品", "该测试商品的详细描述", "0.01")方法得到这个字符串,而这个orderInfo就是红色边框之外的内容。
这个方法需要传递3个参数&#