你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS最新集成支付寶詳解

iOS最新集成支付寶詳解

編輯:IOS開發綜合

本文介紹了iOS快速集成支付寶支付的方法,本文中介紹的方法是經過一次封裝,因此配置完成之後調用僅需一行代碼即可支付寶支付,非常的方便,希望大家喜歡。

我只是根據官方的文檔,對支付寶的SDK做了進一步封裝,其中密鑰的生成很簡單,需要看官方的文檔,官方的文檔我在工程附件目錄裡也有一份,如果需要馬上集成,沒工夫研究的話,可以大致看一下密鑰的生成即可,其他的配置我會在下面進行討論。

 

要在iOS應用裡集成支付寶支付,需要公司和支付寶簽約,然後生成相應的密鑰。密鑰的生成支付寶的開發文檔裡已經說的非常清楚了,這裡就不再討論。

 

以上是作者原文。

附上作者自己封裝的支付寶支付SDK在git鏈接點擊打開鏈接

將工程中的IntegratedAlipay文件夾導入工程中,記得選copy

 

\

 

點擊項目名稱,點擊“Build Settings”選項卡,在搜索框中,以關鍵字“search” 搜索,對“Header Search Paths”增加頭文件路徑:“$(SRCROOT)/項目名稱/IntegratedAlipay/AlipayFiles”(注意:不包括引號,如果不是放到項目根目錄下,請在項目名稱後面加上相應的目錄名)

 

\

 

然後不包括引號是這樣的如圖(小細節)

 

\

 

導入支付寶依賴的庫

 

\

 

附上一段官方文檔的話:

步驟2:在需要調用AlipaySDK的文件中,增加頭文件引用。

1#import

步驟3:如果你的app基於9.0編譯,那麼為了適配iOS9.0中的App Transport Security(ATS)對http的限制,這裡需要對支付寶的請求地址alipay.com、alipayobjects.com做例外,在app對應的info.list中添加如下配置(文中以XML格式描述)。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28NSAppTransportSecurity NSExceptionDomains alipay.com NSIncludesSubdomains NSTemporaryExceptionAllowsInsecureHTTPLoads NSTemporaryExceptionMinimumTLSVersion TLSv1.0 NSTemporaryExceptionRequiresForwardSecrecy alipayobjects.comNSIncludesSubdomains NSTemporaryExceptionAllowsInsecureHTTPLoads NSTemporaryExceptionMinimumTLSVersion TLSv1.0 NSTemporaryExceptionRequiresForwardSecrecy

說明:

如果商戶配置了如下的配置:

1 2 3 4NSAppTransportSecurity NSAllowsArbitraryLoads

則上述的NSAppTransportSecurity可以不配置。

對於網絡配置。

接下來

導入SDK 導入庫之後 command + B 編譯一下。 如果沒錯誤最好。 如果有錯誤參照如下可能出現的問題

1.

問題詳情:

(null): URGENT: all bitcode will be dropped because ‘xxxx’ was built without bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. Note: This will be an error in the future.

問題分析:

從上述的錯誤中應該可以看出,這是因為一個第三方的庫不兼容,我的工程中開啟了ENABLE_BITCODE(應該是升級之後自動轉換的),而這個第三方的庫在編譯的時候沒有 enable bitcode,所以導致上訴問題。

解決方法:

應該是有兩種吧,一種就是換成 enable bitcode 的第三方庫,再有一種就是將工程的 ENABLE_BITCODE 設置為 false 就可以了。

因為我這裡不太方便換庫,所以,就把工程的設置給改了一下。

具體操作方法如下:

 

操作方法

 

2.在openssl中他定義的一些東西。不能與你項目中自己定義的宏有同名的

 

\

 

原來我項目中就有STORE 後來我改成了 STORe

 

\

 

如上圖

3. SDK中 Order.m 文件是用MRC內存管理模式寫的。 會有release

所以 不願意手動刪的 可以改成ARC

如圖

 

\

 

(微信支付同理, 不過是有2個文件要改。支付寶是1個)

其他問題待遇到。運行成功

接下來

找到文件

 

\

 

在AlipayHeader.h中修改你需要的內容 例如

kPartnerID、

kSellerAccount、

kNotifyURL、

kAppScheme等。

對於這個scheme是回調時需要的要在APP中設置

如圖

 

\

 

圖中圈內內容 要和頭文件中一樣

只需在需要跳轉支付的地方調用此方法即可

 

\

 

在App delegate中添加回調方法,以下是官方文檔內的描述

步驟5:配置支付寶客戶端返回url處理方法。

(外部存在支付包錢包,支付寶錢包將處理結果通過url返回。)

如示例AliSDKDemo\APAppDelegate.m文件中,增加引用代碼:

1#import

在@implementation AppDelegate中增加如下代碼:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { //如果極簡開發包不可用,會跳轉支付寶錢包進行支付,需要將支付寶錢包的支付結果回傳給開發包 if([url.host isEqualToString:@"safepay"]) { [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { //【由於在跳轉支付寶客戶端支付的過程中,商戶app在後台很可能被系統kill了,所以pay接口的callback就會失效,請商戶對standbyCallback返回的回調結果進行處理,就是在這個方法裡面處理跟callback一樣的邏輯】 NSLog(@"result = %@",resultDic); }]; } if([url.host isEqualToString:@"platformapi"]){//支付寶錢包快登授權返回authCode [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) { //【由於在跳轉支付寶客戶端支付的過程中,商戶app在後台很可能被系統kill了,所以pay接口的callback就會失效,請商戶對standbyCallback返回的回調結果進行處理,就是在這個方法裡面處理跟callback一樣的邏輯】 NSLog(@"result = %@",resultDic); }]; } returnYES; }

好了之後。

在AlipayRequestConfig.m中。可以看到支付寶返回的內容

 

\

 

以下是官方文檔給出的錯誤碼描述

 

\

 

到這裡基本就結束了。

之後如果你的秘鑰錯誤 可能會出現如下問題

用模擬器測試可能提示

 

\

 

用真機測試是這樣的

 

\

 

 

\

 

等申請好秘鑰填好所有信息之後運行一切正常

最後附上支付寶官方文檔鏈接:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.3AADE5&treeId=59&articleId=104352&docType=1

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved