最近支付寶,微信,銀聯支付類sdk均作了更新,其中支付寶sdk變化比較大,由原來須要導入六個文件:c++
在新版以後只須要導入兩個文件就能夠解決了,文件以下:安全
下面我在舊版文章的基礎上,爲你們詳細介紹最新版本支付寶支付開發流程。bash
由於工做的須要,我前後總結了iOS支付相關的近五類支付開發文章,分別是支付寶支付、支付寶網頁支付轉客戶端、微信支付、銀聯支付、Apple_pay,作這些總結第一是方便之後的查閱,第二也爲你們提供方便, 以避免在用到的地方重複踩坑。服務器
注意開始填坑!!!微信
建議先把開發文檔仔仔細細看一遍,必定要看,剛開始的時候沒有老老實實地看完,結果遇到不少的坑,浪費的挺多的時間的,因此建議必定要好好看看,特別是交互流程這一部分。app
流程說明:異步
數據交互說明:微信支付
支付寶業務衆多,真想找到想要的支付sdk仍是要費一番功夫的,這裏給出了最新的sdk地址(注意的是下載出來的SDK包裏面並無傳說中的開發文檔,須要其餘地方找或者看網頁上的)。ui
公鑰、私鑰、PID、sellerID、key這些東西的用途和獲取方式在文檔上都有詳細的說明,這裏再也不贅述,必定要把概念分清楚再去作,否則一會就亂了。若是遇到問題的話我們能夠再一塊兒探討。加密
官方demo文件
把iOS包中的壓縮文件中如下文件拷貝到項目文件夾下,並導入到項目工程中:
在Build Phases選項卡的Link Binary With Libraries中,增長如下依賴:
此時,假如你啓動工程,很大概率上你會發現報error的狀況。 報錯#include <openssl/opensslconf.h> not find 這是一個神奇的大坑,我Google了很久,也不得其解,而後經網友提醒以後想起來#import ""和#import <>的區別。
解決方法:Targets -> Build Settings 下的 Header Search Paths。添加以下目錄 "$(SRCROOT)/項目名稱/文件的絕對地址" 如圖:
在須要調用AlipaySDK的文件中,增長頭文件引用。
import <AlipaySDK/AlipaySDK.h>
複製代碼
在支付寶的接入文檔中,是將生成一個訂單這步放在客戶端來作了,但這個最好是 放在服務器端來作。 後臺生成訂單而後拼接,簽名,而後服務器端直接給客戶端傳一個加密簽名過的參數就能夠了,這樣比較安全。 全部的訂單信息,商戶信息等都掌握在本身的手中,這樣的話APP端就不怕被攔截數據,而且調用起來也就特別簡單了,只須要調用支付的接口。 若是隻須要發送訂單和處理支付返回結果,只須要添加AlipaySDK.bundle和AlipaySDK.framework這兩個就好了,下載的SDK中很容易發現。 快捷支付方法是這個:
-(void)payOrder:(NSString *)orderStr fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock;
複製代碼
在支付的按鈕中,使用支付寶這個類,再調用這個方法就行啦!以下如:
[[AlipaySDK defaultService] payOrder:credential fromScheme:fromScheme callback:^(NSDictionary* resultDic) {
NSLog(@"%@",resultDic);
}];
複製代碼
如示例AliSDKDemo\APAppDelegate.m文件中,增長引用代碼:
import <AlipaySDK/AlipaySDK.h>
複製代碼
在*@*implementation AppDelegate中如下代碼中的NSLog改成實際業務處理代碼:
- (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) {
NSLog(@"result = %@",resultDic);
}];
}
return YES;
}
// NOTE: 9.0之後使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([url.host isEqualToString:@"safepay"]) {
//跳轉支付寶錢包進行支付,處理支付結果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
}];
}
return YES;
}
複製代碼
最後,不要忘了還要寫一個URL Scheme,在Targets -> Info 下最後一個便可找到, 點擊「Info」選項卡,在「URL Types」選項中,點擊「+」。
到這裏支付寶支付就基本完成了,若是小夥伴們在集成過程當中遇到什麼問題,能夠留言給我或者添加qq,在線幫你解決。
關注 【網羅開發】微信公衆號,網羅天下方法,方便你我開發,更多iOS技術乾貨等待領取,全部文檔會持續更新,歡迎關注一塊兒成長!
但願能夠幫助你們,若有問題可加QQ羣: 668562416 交流
若是哪裏有什麼不對或者不足的地方,還望讀者多多提意見或建議
如需轉載請聯繫我,通過受權方可轉載,謝謝