本人负责公司的支付系统,因此少不了和第三方支付的对接。踩过的坑也不计其数,为了让更少的人踩坑,故记下。
支付的第一部就是发起支付,文档如下
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.vKbs5T&treeId=204&articleId=105465&docType=1
1. 最重要的就是sign参数,我们称为签名。签名的要使用私钥(有关私钥的获取下面有介绍)计算,签名的计算应该放到服务端,不要放到客户端,不然私钥泄露,不安全。
2. 文档上说body参数是非必传的,但是实际开发中,我发现是必须要传的,可以传空字符串。
3. appid是创建的应用id, 开头8位是创建的日期, 比如20161107. pid或者说partnerId是2088开头是数字。一个pid对应多个appid.
4. 应用上线不代表就有了app支付权限,权限需要单独到这里开通https://b.alipay.com/signing/productDetail.htm?productId=I1011000290000001002, 若你先在应用里添加了app支付功能,记得开通app支付权限后,删除app支付功能,重新添加。
密钥说明
1. 私钥的创建见https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7386797.0.0.aldfUk&treeId=58&articleId=103242&docType=1。建议使用官方提供的工具直接生成。
注意如果是java语言,使用的是PKCS8密钥。
2. 发起支付签名使用的是生成的私钥,同时需要把生成的公钥填到支付宝平台。