支付寶WAP支付接口開發(Node/Coffee語言)


此博客不更新好久了, 更新的文檔在這, 有興趣到這裏圍觀:node

http://neutra.github.io/2013/%E6%94%AF%E4%BB%98%E5%AE%9DWAP%E6%94%AF%E4%BB%98%E6%8E%A5%E5%8F%A3%E5%BC%80%E5%8F%91/git

 

---------------------------------------------------github

支付寶WAP支付接口開發(Node/Coffee語言) 

因項目須要,要增長支付寶手機網站支付功能,找了支付寶的樣例代碼和接口說明,折騰兩天搞定,謹以此文做爲這兩天摸索的總結。因爲公司有本身的支付接口,並不直接使用這個接口,因此晚些時候打算把測試代碼整理好放到Github上。瀏覽器

1. 開發前準備

  1. 到官網瞭解此接口的信息,下載樣例代碼(只有ASP.NET和PHP)以便隨時參考。
  2. 一個經過實名認證的企業支付寶帳號,並申請開通手機WAP支付功能,個人測試帳號是拿公司的,申請流程不清楚,官網有說怎麼申請,各位各顯神通吧。
  3. 公網域名和node.js環境。下面的代碼大多用coffee來表達,不過本文不會貼太多代碼,即便對coffee不熟悉也沒什麼關係。關於coffee能夠參考這裏

github上有兩個開源小項目(搜索 alipay ),但都沒有WAP支付功能,能夠拿來當參考,能夠認爲是示例代碼的js移植版,結構很相像。我原打算在其中一個項目基礎上繼續開發,看了代碼和接口文檔後,仍是決定從頭開發一個。由於原有代碼層次不夠清晰,有點過分設計的感受,並且支付寶的接口很簡單,重寫工做量不大。服務器

吐槽下: 官網的示例代碼真只是示例級(test)而已,跟產品級(production)還隔比較遠,感受還談不上SDK。接口文檔至關的坑爹,正因如此我才以爲有必要好好寫篇文章總結。異步

2. 流程

接口開發最重要的應該是理解數據交互流程了,流程弄清了,並理解爲什麼這麼設計,開發起來也是事半功倍測試

首先,要準備下面幾個參數:網站

a. 企業支付寶帳號的PID(也叫ParnerID)和KEY,若是使用RSA簽名而不是MD5的話,還要把RSA私鑰準備好url

b. 支付時用戶看到的東西:商品名稱(subject)、支付總額(total_fee)、購買數量(一般都是1吧)spa

c. 交易後的跳轉地址,交易成功後用戶能夠手工點擊,或頁面延遲自動跳轉到這個地址(return_url)

d. 交易狀態異步通知地址,交易成功或交易關閉會把消息POST到這個地址(notify_url)

而後,看這幅流程圖(不錯吧,推薦下這個網站:)

這個流程圖基本囊括了整個交互過程,下面是說明:

  1. 用戶點擊購買按鈕(或其餘形式),向網站發起購買請求
  2. 網站建立訂單,指派一個惟一訂單號
  3. 網站把訂單號、企業支付寶帳號、交易金額、數量等信息,用私鑰簽名發送給支付寶
  4. 支付寶建立一個交易訂單,返回一個交易令牌(token)
  5. 網站按照指定要求,用token和本身的私鑰,構造一個重定向獲得支付地址
  6. 網站把重定向地址返回給瀏覽器
  7. 瀏覽器自動重定向到該地址,即包含了token、網站簽名的支付寶交易頁面
  8. 支付寶顯示當前交易金額、數量、賣家等信息
  9. 用戶用本身的支付寶帳號支付這筆金額
  10. 支付寶把用戶支付成功(或失敗)這個消息和訂單號加上支付寶的簽名,使用HTTP POST的方式通知網站(失敗的話,會隔段時間從新發送)
  11. 網站處理交易後續邏輯(發貨、訂單狀態存儲之類的)
  12. 網站返回"success"字符串給支付寶,表示該通知已經處理,不用再重發
  13. 支付寶顯示支付成功頁面給用戶(這一步和第10步是不分前後發生的)
  14. 支付成功頁面延遲自動跳轉,或用戶點擊「返回商戶頁面」,跳轉到網站的支付結束頁面(此時不必定成功處理支付寶發來的通知),但會在URL帶上當前的訂單號和狀態。

能夠發現,整個流程有點像OAuth(哎呀,以前那篇文章還沒寫完呢!),主要分三步:

一是申請支付寶交易號(獲取token),這一步能夠理解爲,讓支付寶驗證網站的有效性、讓網站指定該交易要支付多少錢 二是用戶到支付寶頁面付款,這一步能夠理解爲,讓支付寶驗證用戶有效性,讓用戶在一個不受網站監視的環境下進行支付 三是用戶付款後,處理結果頁面告訴用戶支付成功(同步通知),另外異步通知網站服務器該訂單已支付。

支付寶的接口文檔說只有兩個步驟,感受不是很好理解,三步仍是比較準確的(收錢確定要辦事的嘛)。

好睏,細節問題下期繼續。。。

相關文章
相關標籤/搜索