天天看點

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

一,安全支付服務簡介:

1.1,安全支付服務介紹。

安全支付服務是安裝在本地android作業系統上的一個元件,主要用來向其它的應用程式提供便捷、安全以及可靠的支付服務。正如平常系統上所提供的其它服務,如電子郵件和電話服務一樣。本文主要描述安全支付服務應用開發接口的使用方法,供合作夥伴以及其它第三方應用開發者參考。

1.2,安全支付服務業務流程。

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

1.3,調用安全支付資料流程圖

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

二,安全支付接入流程

2.1,接入前期準備

接入前期準備工作包括商戶簽約和密鑰配置,已完成商戶可略過。

2.1.1,商戶簽約

首先,商戶需要在https://ms.alipay.com進行注冊,并簽約安全支付服務。簽約成功後可擷取支付寶配置設定的合作商戶id(partnerid),賬戶id(sellerid),如圖:

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

簽約過程中需要任何幫助請緻電:0571-88158090(支付寶商戶服務專線)

2.1.2,密鑰配置

簽約成功後,商戶可登陸https://ms.alipay.com擷取商戶賬号對應的支付寶公鑰,具體擷取步驟請見3.2 rsa密鑰詳解

接着,商戶生成商戶公鑰和商戶私鑰(具體生成步驟請見3.2 rsa密鑰詳解),并登陸https://ms.alipay.com,上傳商戶公鑰(具體上傳步驟請見3.2

rsa密鑰詳解)。

至此,接入前期準備工作完成,下一節将使用demo測試準備工作是否正确。

2.2,demo

為了便于商戶的接入,我們提供了安全支付demo。通過本demo,商戶可測試2.1節的前期準備工作是否正确完成,同時還可參考demo的代碼完成接入。(注意:請勿在模拟器下測試demo,否則可能導緻付款賬戶被鎖定!)

2.2.1,demo 配置運作

步驟 1:

解壓下載下傳的安全支付開發資料壓縮包ws_secure_pay,進入目錄“ws_secure_pay\android”,其中“appdemo4_0413”即demo的項目檔案,将其導入eclipse,步驟如圖:

支付寶安全支付服務Android應用開發指南(摘取官方文檔)
支付寶安全支付服務Android應用開發指南(摘取官方文檔)
支付寶安全支付服務Android應用開發指南(摘取官方文檔)
支付寶安全支付服務Android應用開發指南(摘取官方文檔)

項目結構如圖:

支付寶安全支付服務Android應用開發指南(摘取官方文檔)
支付寶安全支付服務Android應用開發指南(摘取官方文檔)

步驟 2:

打開“partnerconfig.java”檔案,按照注釋添加商戶賬号資訊,具體包括:合作商戶id、賬戶id、支付寶公鑰(即伺服器公鑰)、商戶公鑰、商戶私鑰。如下圖:

支付寶安全支付服務Android應用開發指南(摘取官方文檔)
支付寶安全支付服務Android應用開發指南(摘取官方文檔)

步驟 3:

在真機或者模拟器上運作項目(下圖以模拟器為例),首次啟動時,由于系統未安裝安全支付服務,将出現以下提示:

支付寶安全支付服務Android應用開發指南(摘取官方文檔)
支付寶安全支付服務Android應用開發指南(摘取官方文檔)

此時,可以選擇“确定”進行安裝,安裝後該提示不會再出現。此時點選任意商品進行購買,即啟動安全支付:

支付寶安全支付服務Android應用開發指南(摘取官方文檔)
支付寶安全支付服務Android應用開發指南(摘取官方文檔)

首次運作安全支付服務,會進行安全認證,此時選擇“支付寶賬戶”付款(注意:付款用的賬戶應為某一真實賬戶,交易金額也是真實的!),輸入賬戶資訊,按照提示一步步進行:

支付寶安全支付服務Android應用開發指南(摘取官方文檔)
支付寶安全支付服務Android應用開發指南(摘取官方文檔)

完成安全認證後,若出現如下提示,說明密鑰配置有誤,請仔細閱讀3.2 rsa密鑰詳解

支付寶安全支付服務Android應用開發指南(摘取官方文檔)
支付寶安全支付服務Android應用開發指南(摘取官方文檔)

若出現“确認支付”頁面,說明密鑰配置無誤,接入前期準備工作全部正确完成。接下來将正式進行安全支付的接入內建。

2.2.2,demo結構說明

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

2.3 安全支付內建

本章指導在商戶項目中內建安全支付,關鍵代碼以demo為例。

步驟 1:添加jar檔案

添加demo中的alipay_msp.jar包添加工程中。

步驟 2:初始化安全支付服務

在調用安全支付進行支付前,需要先初始化安全支付服務,主要代碼如下:

步驟 3:訂單資料生成

在調用安全支付時,需要送出訂單資訊orderinfo其中參數以“key=value”形式呈現,參數之間以“&”分割,所有參數不可缺。示例如下:(紅色參數表示該參數值需與示例一緻,不可自定義;藍色參數表示值可自定義。具體參數說明請見訂單資訊描述)

            其中sign值的生成,請見商品資訊簽名。需要特别注意的是:對資料簽名後得到的sign值必須進行urlencode,之後才可作為參數。

步驟 4:調用安全支付

           準備好參數後,即可調用安全支付進入支付流程并獲得調用結果,代碼如下:

           result = malixpay.pay(orderinfo);

           alixpay函數具體說明請見alixpay方法描述。

步驟 5:支付結果擷取和處理

           調用安全支付後,将通過兩種途徑獲得支付結果:

           1、 alixpay.pay()方法的傳回

           該方法将傳回表示支付結果的字元串,詳細資訊詳見

           2、支付寶伺服器通知

           商戶需要提供一個http協定的接口,包含在參數裡傳遞給安全支付,即notify_url。支付寶伺服器在支付完成後,會用post方法調用notufy_url,以xml為資料格式傳輸支付結果,詳見

接下來以demo代碼為例,介紹整個流程:

2.4 應用釋出

目前,我們為第三方應用用戶端提供了兩種內建安全支付服務的方式。第一種是運作時安裝,即将安全支付服務安裝包apk與第三方應用用戶端整合在一起,在恰當的時機,由第三方應用用戶端釋放并安裝安全支付服務安裝包apk。另一種則稱為動态下載下傳安裝,在此種情況下,安全支付服務安裝包apk是預先存放在約定的遠端伺服器中,第三方應用用戶端可以從此處下載下傳apk并進行安裝。

為了提升使用者體驗,避免捆綁安裝舊版本的安全支付服務之後,接着又需要重新更新并安裝成最新版本,我們目前推薦結合使用以上兩種內建方式。在最新的demo中,會首先連接配接支付寶伺服器,檢測并判斷捆綁在第三方用戶端中的alipay_plugin.apk是否為最新版本,如果是,則直接安裝。如果捆綁在第三方用戶端中的alipay_plugin.apk不是最新版本,則從伺服器中下載下傳最新版本的安裝包,然後進行安裝。

2.4.1運作時安裝

運作時安裝的具體步驟如下所示:

1) 将alipay_plugin.apk作為資源複制到第三方應用工程中的assets目錄。

2) 第三方應用在需要付款時(或者其它恰當時機),先檢測安全支付服務是否已經安裝。如果尚未安裝,則從assets目錄中提取alipay_plugin.apk到手機存儲。

3) 安裝手機存儲中的安全支付服務apk。

以下是一個代碼片段,示範上述過程。

2.4.2 動态下載下傳安裝

動态下載下傳安裝的具體步驟如下所示:

1) 由支付寶預先将安全支付服務apk放置到約定的遠端下載下傳伺服器。

2) 第三方應用在需要付款時(或者其它恰當時機),先檢測安全支付服務是否已經安裝。如果尚未安裝,則從約定的遠端下載下傳伺服器提取alipay_plugin.apk到手機存儲。

第三章 rsa詳解

以下内容加*号為重點

3.1 rsa和openssl介紹

3.1.1什麼是rsa

rsa是一種非對稱的簽名算法,即簽名密鑰(私鑰)與驗簽密鑰(公鑰)是不一樣的,私鑰用于簽名,公鑰用于驗簽。

在與支付寶交易中,會有2對公私鑰,即商戶公私鑰,支付寶公鑰。

商戶公私鑰:由商戶生成,商戶私鑰用于對商戶發往支付寶的資料簽名;商戶公鑰需要上傳至支付寶,當支付寶收到商戶發來的資料時用該公鑰驗證簽名。

支付寶公鑰:支付寶提供給商戶,當商戶收到支付寶發來的資料時,用該公鑰驗簽。

3.1.2為什麼要用rsa

使用這種算法可以起到防止資料被篡改的功能,保證支付訂單和支付結果不可抵賴(商戶私鑰隻有商戶知道)。

3.1.3什麼是openssl

一句話概括:openssl是基于衆多的密碼算法、公鑰基礎設施标準以及ssl協定安全開發包。

3.1.4為什麼要用openssl

通過openssl生成的簽名和内置的算法可以做到跨平台,這樣在不同的開發語言中均可以簽名和驗簽。

3.2 rsa密鑰詳解*

3.2.1找到生成rsa密鑰工具

(1)下載下傳開發指南和內建資料,如下圖,您能看到此文檔說明指南和內建包已經下載下傳了。

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

(2)解壓下載下傳的壓縮包(ws_secure_pay),找到并解壓openssl-0.9.8k_win32(rsa密鑰生成工具).zip工具包

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

3.2.2生成商戶密鑰并擷取支付寶公鑰

(1) 生成原始rsa商戶私鑰檔案

假設解壓後的目錄為c:\alipay,指令行進入目錄c:\alipay\bin,執行“opensslgenrsa-out rsa_private_key.pem 1024”,在c:\alipay\bin下會生成檔案rsa_private_key.pem,

其内容為原始的商戶私鑰(請妥善儲存該檔案),以下為指令正确執行截圖:

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

(2) 将原始rsa商戶私鑰轉換為pkcs8格式

指令行執行“ openssl pkcs8 -topk8 -inform pem -inrsa_private_key.pem -outform pem-nocrypt”得到轉換為pkcs8格式的私鑰。複制下圖紅框内的内容至建立txt文檔,去掉換行,最後另存為“private_key.txt”(請妥善儲存,簽名時使用)。

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

(3)生成rsa商戶公鑰

指令行執行“ openssl rsa -in rsa_private_key.pem -pubout -outrsa_public_key.pem”,在c:\alipay\bin檔案夾下生成檔案rsa_public_key.pem。接着用記事本打開rsa_public_key.pem,複制全部内容至建立的txt文檔,删除檔案頭“-----begin

publickey-----”與檔案尾“-----endpublic key-----”及空格、換行,如下圖。最後得到一行字元串并儲存該txt檔案為“public_key.txt”。

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

(4)上傳商戶公鑰至支付寶

浏覽器通路https://ms.alipay.com/index.htm并用簽約帳号登入,點選菜單欄“我的産品”,右側點選“密鑰管理”,見下圖紅色框内

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

點選“上傳”,選擇步驟(3)生成的“public_key.txt”并完成上傳。

(5)擷取rsa支付寶公鑰

成功上傳公鑰至支付寶後,頁面顯示如下:

支付寶安全支付服務Android應用開發指南(摘取官方文檔)

其中紅色框内部分即支付寶公鑰,請複制至建立txt文檔,去掉換行和空格,妥善儲存(用于驗簽收到的支付寶通知)。

3.3  rsa簽名和驗簽*

建議:簽名和驗簽盡量在商戶伺服器端進行,同時一些敏感資料(如公私鑰等)也應存儲在伺服器端,避免可能的安全隐患。

3.3.1 rsa簽名

(1)在項目中添加下面的類:

對不起各位,最近比較忙,一直沒時間編輯,下面放出官方源檔案,大家可以直接下載下傳檢視!

http://download.csdn.net/detail/gulaer/5017686

繼續閱讀