本人負責公司的支付系統,因此少不了和第三方支付的對接。踩過的坑也不計其數,為了讓更少的人踩坑,故記下。
支付的第一部就是發起支付,文檔如下
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. 發起支付簽名使用的是生成的私鑰,同時需要把生成的公鑰填到支付寶平臺。