一,安全支付服務簡介:
1.1,安全支付服務介紹。
安全支付服務是安裝在本地android作業系統上的一個元件,主要用來向其它的應用程式提供便捷、安全以及可靠的支付服務。正如平常系統上所提供的其它服務,如電子郵件和電話服務一樣。本文主要描述安全支付服務應用開發接口的使用方法,供合作夥伴以及其它第三方應用開發者參考。
1.2,安全支付服務業務流程。
1.3,調用安全支付資料流程圖
二,安全支付接入流程
2.1,接入前期準備
接入前期準備工作包括商戶簽約和密鑰配置,已完成商戶可略過。
2.1.1,商戶簽約
首先,商戶需要在https://ms.alipay.com進行注冊,并簽約安全支付服務。簽約成功後可擷取支付寶配置設定的合作商戶id(partnerid),賬戶id(sellerid),如圖:
簽約過程中需要任何幫助請緻電: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,步驟如圖:
項目結構如圖:
步驟 2:
打開“partnerconfig.java”檔案,按照注釋添加商戶賬号資訊,具體包括:合作商戶id、賬戶id、支付寶公鑰(即伺服器公鑰)、商戶公鑰、商戶私鑰。如下圖:
步驟 3:
在真機或者模拟器上運作項目(下圖以模拟器為例),首次啟動時,由于系統未安裝安全支付服務,将出現以下提示:
此時,可以選擇“确定”進行安裝,安裝後該提示不會再出現。此時點選任意商品進行購買,即啟動安全支付:
首次運作安全支付服務,會進行安全認證,此時選擇“支付寶賬戶”付款(注意:付款用的賬戶應為某一真實賬戶,交易金額也是真實的!),輸入賬戶資訊,按照提示一步步進行:
完成安全認證後,若出現如下提示,說明密鑰配置有誤,請仔細閱讀3.2 rsa密鑰詳解
若出現“确認支付”頁面,說明密鑰配置無誤,接入前期準備工作全部正确完成。接下來将正式進行安全支付的接入內建。
2.2.2,demo結構說明
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)下載下傳開發指南和內建資料,如下圖,您能看到此文檔說明指南和內建包已經下載下傳了。
(2)解壓下載下傳的壓縮包(ws_secure_pay),找到并解壓openssl-0.9.8k_win32(rsa密鑰生成工具).zip工具包
3.2.2生成商戶密鑰并擷取支付寶公鑰
(1) 生成原始rsa商戶私鑰檔案
假設解壓後的目錄為c:\alipay,指令行進入目錄c:\alipay\bin,執行“opensslgenrsa-out rsa_private_key.pem 1024”,在c:\alipay\bin下會生成檔案rsa_private_key.pem,
其内容為原始的商戶私鑰(請妥善儲存該檔案),以下為指令正确執行截圖:
(2) 将原始rsa商戶私鑰轉換為pkcs8格式
指令行執行“ openssl pkcs8 -topk8 -inform pem -inrsa_private_key.pem -outform pem-nocrypt”得到轉換為pkcs8格式的私鑰。複制下圖紅框内的内容至建立txt文檔,去掉換行,最後另存為“private_key.txt”(請妥善儲存,簽名時使用)。
(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”。
(4)上傳商戶公鑰至支付寶
浏覽器通路https://ms.alipay.com/index.htm并用簽約帳号登入,點選菜單欄“我的産品”,右側點選“密鑰管理”,見下圖紅色框内
點選“上傳”,選擇步驟(3)生成的“public_key.txt”并完成上傳。
(5)擷取rsa支付寶公鑰
成功上傳公鑰至支付寶後,頁面顯示如下:
其中紅色框内部分即支付寶公鑰,請複制至建立txt文檔,去掉換行和空格,妥善儲存(用于驗簽收到的支付寶通知)。
3.3 rsa簽名和驗簽*
建議:簽名和驗簽盡量在商戶伺服器端進行,同時一些敏感資料(如公私鑰等)也應存儲在伺服器端,避免可能的安全隐患。
3.3.1 rsa簽名
(1)在項目中添加下面的類:
對不起各位,最近比較忙,一直沒時間編輯,下面放出官方源檔案,大家可以直接下載下傳檢視!
http://download.csdn.net/detail/gulaer/5017686