1. 程式人生 > >Android 外接sdk之支付寶

Android 外接sdk之支付寶

支付寶開放平臺 最新sdk可以訪問開放平臺進行下載

以下為流程和注意事項。

1.名詞簡介

請求 手機客戶端以字串形式把需要傳輸的資料傳送給接收方的過程。
返回 支付寶以字串形式直接把處理結果資料返回給手機客戶端。
通知 伺服器非同步通知。支付寶根據得到的資料處理完成後,支付寶的伺服器主動發起通知給商戶
的網站,同時攜帶處理完成的結果資訊反饋給商戶網站。
敏感詞 帶有敏感政治傾向、暴力傾向、不健康色彩或不文明的詞。

2.準備工作

商戶簽約和金鑰配置。

3.SDK整合流程

解壓alipay_lib.zip,將解壓出來alipay_lib拷貝到Eclipse workspace,通過Eclipse 
import 該工程,並在此工程的Properties->Android中選中為library 工程。

將alipay.jar複製至商戶應用工程的libs目錄下,通過Java Build Path匯入進工程。

4.修改Manifest


android:name="com.alipay.android.app.sdk.WapPayActivity" 
android:screenOrientation="portrait"> 

5.訂單資料生成

在呼叫快捷支付SDK時,需要提交訂單資訊info,其中引數以key=”value”形式呈
現,引數之間以“&”分割,所有引數不可缺。

6.介面呼叫

獲取Alipay支付物件呼叫支付,此介面方法實現為同步呼叫,將阻塞商戶應用UI
執行緒,所以呼叫此介面需啟動新執行緒,並使用looper 為main looper的Handler
物件與UI執行緒傳遞訊息。

7.支付結果獲取和處理

呼叫pay方法支付後,將通過2種途徑獲得支付結果:
同步返回
商戶應用客戶端獲取pay( )返回的字串資訊,在應用內直接處理支付結果。
非同步通知
商戶需要提供一個http協議的介面,包含在引數裡傳遞給快捷支付,即notify_url。
支付寶伺服器在支付完成後,會以POST方式呼叫notify_url,以xml資料格式傳
輸支付結果。 

8.如何獲得PID與金鑰

使用簽約支付寶賬號登入“商家服務”平臺中的“我的商家服務”,點選“查詢PID、Key”,即可檢視到簽約支付寶賬號、合作者身份ID(PID)的資訊。輸入支付密碼,查詢key。

9.RSA金鑰生成與使用

開啟openssl資料夾下的bin資料夾,執行openssl.exe檔案,輸入“genrsa -out rsa_private_key.pem 1024”命令,回車後,在當前bin檔案目錄中會新增一個rsa_private_key.pem檔案,其檔案為原始的商戶私鑰(請妥善保
存該檔案,PHP開發語言中需要使用該檔案)

10.生成RSA公鑰
輸入“rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem”命令回車
後,在當前bin檔案目錄中會新增一個rsa_public_key.pem 檔案,其檔案為原始
的商戶公鑰(請妥善儲存該檔案,PHP開發語言中需要使用該檔案)

11.生成PKCS8編碼的私鑰
輸入命令“pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM 
-nocrypt”並回車,儲存到一個文字檔案,可隨意命名,只要知道這個是PKCS8格式的私鑰即可(請
妥善儲存該檔案)

12.RSA金鑰使用邏輯:
商戶在使用RSA簽名方式的支付寶介面時,真正會用到的金鑰是商戶私鑰與支付
寶公鑰。商戶上傳公鑰給支付寶,支付寶把公鑰給商戶,是公鑰互換的操作。這就
使得商戶使用自己的私鑰做簽名時,支付寶端會根據商戶上傳的公鑰做驗證簽名。
商戶使用支付寶公鑰做驗證簽名時,同理,也是因為支付寶用支付寶私鑰做了簽名。

13.業務資料傳遞
支付寶提供的業務引數為支付寶需要商戶傳遞過來的資料要求。商戶只需要根據自
己的業務需求,在業務邏輯程式碼執行時把這些動態資料以賦值給變數的形式,再通
過支付寶介面本身的介面邏輯,傳遞給支付寶系統,讓支付寶系統可識別。
舉例說明,商戶要把某筆訂單的資料傳遞給支付寶。那麼商戶需要先根據支付寶的
引數要求,從自己的下單系統中拿到付款總金額(total_fee)、商戶的訂單號
(out_trade_no)、訂單名稱(subject)等資料,再把這些資料一個一個以值的形
式賦給對應的變數。再通過程式碼邏輯,把變數組合及加工成一次可以傳送給支付寶
的請求。