作者: 玉龍 版權所有,允許轉載, 請注明出處(建立金融_玉龍
)
支付寶的公衆賬号文檔位址
要開通支付寶的公衆賬号第一步就是要驗證商戶網關和開發者公鑰的有效性。
文檔中忽略了一些細節, 本文進行如下一些細節補充。
通過openssl生成公密鑰對, 在linux系統下一般預設已有安裝:
1、 讓openssl随機生成了一份私鑰,加密長度是1024位
2、 根據私鑰生成公鑰
3、 私鑰還不能直接被使用,需要進行pkcs#8編碼
<col>
去掉頭和換行, 公密鑰對即可使用了。注意私鑰是使用pkcs#8編碼的版本。
“去掉頭和換行” 舉例, 例如公鑰如下
轉成代碼中的使用的公鑰為:
注意如果公鑰是放在xml中配置, 要加上 <![cdata[]]> 防止xml轉義
在開啟商戶開發者模式時, 需要通過驗證網關。 支付寶公衆賬号向配置的網關位址, 發送一個htttp post請求, 商戶網站必須要能夠正确響應這個http post請求, 才能完成商戶網關的驗證。
驗證的基本細節參見支付寶文檔, 這裡提兩點文檔中沒有提及的問題。
首先被加簽的内容是如下拼接完成的字元串
"<success>true/false</success><biz_content>開發者公鑰</ biz_content>" 進行rsa加簽, 可以調用支付寶提供的sdk完成
config.getappid() 為商戶appid, 可以在公衆賬号平台上查詢, 是一個數字id; customerpublickey為上一節中生成的商戶rsa公鑰, customerprivatekey為上一節中生成pkcs#8編碼的商戶私鑰。
signresult 就是準備好的傳回給支付寶公衆賬号平台的xml結果。 alipaysignature.encryptandsign 函數會自動拼裝回報xml結果。 兩個boolean參數, 表示是否加密, 是否加簽。
準備好回報字元串之後, 還要注意一下細節