1. 程式人生 > >付寶支付功能思路總結

付寶支付功能思路總結

前段時間專案中使用到了支付寶的支付功能,這幾天偶然一測試,發現居然無法支付了!費了半天勁,總算把問題解決了,但是在解決問題的過程中,

花費了大量時間在回顧以前的程式碼和重新理解支付寶邏輯中,因此決定在此記錄一下,以防下次再次忘記!

首先,如何申請支付寶使用者以及開啟支付功能就不細說了,基本上按照他的步驟就可以了。

支付寶為了保證交易的安全性,引入了RSA加密機制(什麼是RSA加密機制就不在這說啦),反正就是利用openssl或者其他工具生成一對金鑰(公鑰

和私鑰,用來驗證簽名用的),為了區分方便(因為支付寶的各種金鑰實在太多啦!),這裡稱之為應用的公鑰和私鑰,生成的步驟在支付寶的demo

裡面都有,這裡也不贅述了,但有一點一定要注

意,生成的私鑰一定要是pcks8格式的!(官方demo將所有的支付操作都放在了客戶端,

包括公鑰和私鑰,這種做法是極不安全的,這些都應該放在服務器端

接著我們需要把生成的pcks8格式的私鑰複製到應用的伺服器端(具體的位置見支付寶demo),然後把生成的公鑰填入支付寶開放平臺金鑰和合作夥

伴金鑰的對應的應用公鑰,如圖:


然後,將還需要將支付寶公鑰複製到伺服器端,這裡還有一點需要注意,這個支付寶公鑰一定是合作伙伴公鑰裡的支付寶公鑰,也就是說我們自己的服

務器端儲存了應用私鑰和支付寶公鑰,金鑰的設定就完成了!由此支付的準備工作已經完成了!

支付寶的支付邏輯如下圖:


支付寶大致的邏輯就是這樣,下面要做的無非就是呼叫支付寶,約定App伺服器端和客戶端的一些規則,根據支付邏輯定義幾個介面就完事了~

其實這麼一看,呼叫支付寶介面一點也不復雜,支付邏輯也比較好理解,坑就坑在那些個金鑰上,而且文件上面說的也含糊其辭,根本不知道誰對應

誰,主要還需要自己多嘗試,多失敗幾次無所謂,失敗是成功之母嘛!