集成支付寶手機支付SDK for iOS

支付寶SDK付款有兩種模式:若是外部存在支付寶錢包,則直接跳轉到支付寶錢包付款;不存在的場景下,在SDK內部進行H5支付。 xcode


1.  數據交互流程

支付寶支付的業務數據交互流程圖以下。 安全

 

圖 1 支付寶支付SDK數據交互流程圖 服務器

 

  1. 構造訂單數據並簽名
    商戶客戶端根據手機支付寶支付開發包的接口規則,經過程序生成獲得簽名結果及要傳輸給手機支付寶支付開發包的數據集合。
  2. 發送請求數據
    把構造完成的數據集合傳遞給手機支付寶支付開發包。
  3. 手機支付寶支付開發包對請求數據進行處理
    手機支付寶支付開發包將請求數據根據業務規則包裝後傳遞給支付寶服務端,服務端獲得這些集合後,會先進行安全校驗等驗證,一系列驗證經過後便會處理完成此次發送過來的數據請求。
  4. 返回處理的結果數據
    對於處理完成的交易,支付寶會以兩種方式把數據分別反饋給商戶應用和商戶服務器。

1)         在手機客戶端上,開發包客戶端直接把處理的數據結果反饋給商戶客戶端; app

2)         支付寶服務器主動發起通知,調用商戶在請求時設定好的頁面路徑(參數notify_url,若是商戶沒設定,則不會進行該操做) 異步

     5. 對獲取的返回結果數據進行處理 ui

商戶在客戶端同步通知接收模塊或服務端異步通知接收模塊獲取支付寶返回的結果數據後,能夠結合商戶自身業務邏輯進行數據處理(如:訂單更新、自動充值到會員帳號中等)。同步通知結果僅用於結果展現,入庫數據需以異步通知爲準。 url

 

對於同步返回和異步通知的說明 spa

支付結果必須以異步通知爲準,通知結果僅供參考。通常來講,異步通知快於同步返回,但異步返回的時間並不肯定,也有可能出現異步通知延遲的狀況。如商戶提供了異步通知地址,支付寶服務器端沒有收到商戶的確認響應(上圖第9步),那麼支付寶服務器端會一直重發異步通知結果。 code

 

2.  集成支付寶SDK步驟

步驟1 htm

在xcode中添加AlipaySDK.framework和文件夾alipayFiles

 

步驟2

#import <AlipaySDK/AlipaySDK.h>

 

步驟3

適配iOS9.0中的App Transport Security(ATS)對http的限制,在info.plist中添加

<key>NSAppTransportSecurity</key>

    <dict>   

        <key>NSAllowsArbitraryLoads</key><true/>

    </dict>

步驟4

在AppDelegate的

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

 

方法中增長處理客戶端支付返回結果的代碼,代碼參加DEMO程序或支付寶示例程序。

 

步驟5

在Xcode裏的header search paths 裏添加支付寶SDK文件路徑(包含了openssl);格式以下 $(PROJECT_DIR)/文件夾名。

 

圖 2 Xcode裏添加支付寶SDK header search paths

 

路徑如,$(SRCROOT)/UniPayRedPacketDEMO/alipayFile

 

圖 3 集成支付寶文件示意圖

 

步驟6

點擊項目名稱,點擊「Build Phases」選項卡,在「Link Binary with Librarles」選項中,新增

系統庫文件:AlipaySDK.framework,SystemConfiguration.framework

靜態庫:libcrypto.a,libssl.a

 

圖 4 Xcode添加Lib庫

 

步驟7

點擊項目名稱,點擊「Info」選項卡,在「URL Types」選項中,點擊「+」,在「URL Schemes」中輸入「MYALIPAY」。「MYALIPAY」表明APP標識,用於支付寶客戶端跳轉回到具備該標識的APP。支付寶特別提示,

注意:實際商戶的app中要填寫獨立的scheme,建議跟商戶的app有必定的標示度,要作到和其餘的商戶app不重複,不然可能會致使支付寶返回的結果沒法正確跳回商戶app

 

圖 5 Xcode設置URL Schemes

 

 

3.  支付寶支付接口

https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.eWwqbi&treeId=59&articleId=103660&docType=1

 

3.1.  快捷訂單支付接口

方法名稱

方法原型

方法描述

快捷訂單支付接口

-(void)payOrder:(NSString *)orderStr fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock;

支付並經過回調返回結果

 

快捷訂單支付接口,接口及參數說明,請見支付寶官網連接(如上網址)。在其回調裏處理的是WAP方式返回的結果。

3.2.  處理客戶端支付返回結果接口

如要處理客戶端(已安裝狀況下)返回的結果,則使用

方法名稱

方法原型

方法描述

處理客戶端支付返回結果接口

-(void)processOrderWithPaymentResult:(NSURL*)resultUrl  standbyCallback:(CompletionBlock)completionBlock

設備已安裝支付寶客戶端狀況下,處理支付寶客戶端返回的url

 

處理客戶端支付返回結果接口,接口及參數說明,請見支付寶官網連接(如上網址)。支付寶特別提示,

注意:該方法必須實現,不然將會致使在安裝手機支付寶的狀況下,支付結果沒法正常同步返回。

 

 

4.  常見問題

4.1.  openssl/asn1.h找不到rsa.h

iOS引入支付寶缺乏 #include <openssl/asn1.h>,出現情況以下圖所示。

 

 

圖 6 集成支付寶問題1

 

解決方法見第2節步驟5。

4.2.  APP只能調起H5支付,而沒法調起支付寶客戶端支付

這是因爲iOS系統的保護機制,APP間調用須要加入白名單。

APP須要在xcode加上支付寶白名單,在Info.plist中添加LSApplicationQueriesSchemes信息,以下圖所示。

圖 7 集成支付寶問題2

相關文章
相關標籤/搜索