一沛慢、介紹
最近支付寶肾砂,微信,銀聯(lián)支付類sdk均做了更新扣溺,其中支付寶sdk變化比較大骇窍,由原來需要導(dǎo)入六個(gè)文件:
AlipaySDK.framework
AlipaySDK.bundle
Order.h和Order.m
Until文件夾
openssl文件夾
libcrypto.a和libssl.a
在新版之后只需要導(dǎo)入兩個(gè)文件就可以解決了,文件如下:
AlipaySDK.framework
AlipaySDK.bundle
下面我在舊版文章的基礎(chǔ)上锥余,為大家詳細(xì)介紹最新版本支付寶支付開發(fā)流程腹纳。
因?yàn)楣ぷ鞯男枰蚁群罂偨Y(jié)了iOS支付相關(guān)的近五類支付開發(fā)文章哈恰,分別是支付寶支付只估、支付寶網(wǎng)頁支付轉(zhuǎn)客戶端、微信支付着绷、銀聯(lián)支付蛔钙、Apple_pay,做這些總結(jié)第一是方便以后的查閱荠医,第二也為大家提供方便吁脱, 以免在用到的地方重復(fù)踩坑。
注意開始填坑1蛳颉<婀薄!
二娃胆、交互流程
建議先把開發(fā)文檔仔仔細(xì)細(xì)看一遍遍希,一定要看,剛開始的時(shí)候沒有老老實(shí)實(shí)地看完里烦,結(jié)果遇到很多的坑凿蒜,浪費(fèi)的挺多的時(shí)間的,所以建議一定要好好看看胁黑,特別是交互流程這一部分废封。
2.1 功能流程
流程說明:
第4步:調(diào)用支付接口
第5步:支付請求
第8步:接口返回支付結(jié)果
第12步:異步發(fā)送支付通知
2.2 數(shù)據(jù)交互
數(shù)據(jù)交互說明:
構(gòu)造訂單數(shù)據(jù)并簽名
發(fā)送請求數(shù)據(jù)
手機(jī)支付寶支付開發(fā)包對請求數(shù)據(jù)進(jìn)行處理
返回處理的結(jié)果數(shù)據(jù)
商戶對獲取的返回結(jié)果數(shù)據(jù)進(jìn)行處理
三、下載支付寶SDK
支付寶業(yè)務(wù)眾多丧蘸,真想找到想要的支付sdk還是要費(fèi)一番功夫的漂洋,這里給出了最新的sdk地址(注意的是下載出來的SDK包里面并沒有傳說中的開發(fā)文檔,需要其他地方找或者看網(wǎng)頁上的)。
公鑰刽漂、私鑰演训、PID、sellerID贝咙、key這些東西的用途和獲取方式在文檔上都有詳細(xì)的說明仇祭,這里不再贅述,一定要把概念分清楚再去做颈畸,不然一會就亂了乌奇。如果遇到問題的話咱們可以再一起探討。
四眯娱、導(dǎo)入庫集成SDK
4.1 導(dǎo)入文件和關(guān)鍵庫
官方demo文件
把iOS包中的壓縮文件中以下文件拷貝到項(xiàng)目文件夾下礁苗,并導(dǎo)入到項(xiàng)目工程中:
AlipaySDK.framework
AlipaySDK.bundle
在Build Phases選項(xiàng)卡的Link Binary With Libraries中,增加以下依賴:
其中徙缴,需要注意的是:
如果是Xcode 7.0之后的版本试伙,需要添加libc++.tbd、libz.tbd于样;
如果是Xcode 7.0之前的版本疏叨,需要添加libc++.dylib、libz.dylib(如下圖)穿剖。
此時(shí)蚤蔓,假如你啟動(dòng)工程,很大幾率上你會發(fā)現(xiàn)報(bào)error的情況糊余。
報(bào)錯(cuò)#includenot find
這是一個(gè)神奇的大坑秀又,我Google了好久,也不得其解贬芥,然后經(jīng)網(wǎng)友提醒之后想起來#import ""和#import <>的區(qū)別吐辙。
解決方法:Targets -> Build Settings 下的 Header Search Paths。添加如下目錄 "$(SRCROOT)/項(xiàng)目名稱/文件的絕對地址"
如圖:
4.2
在需要調(diào)用AlipaySDK的文件中蘸劈,增加頭文件引用昏苏。
1import
4.3 調(diào)用支付接口
在支付寶的接入文檔中,是將生成一個(gè)訂單這步放在客戶端來做了威沫,但這個(gè)最好是 放在服務(wù)器端來做贤惯。
后臺生成訂單然后拼接,簽名壹甥,然后服務(wù)器端直接給客戶端傳一個(gè)加密簽名過的參數(shù)就可以了救巷,這樣比較安全壶熏。
所有的訂單信息句柠,商戶信息等都掌握在自己的手中,這樣的話APP端就不怕被攔截?cái)?shù)據(jù),并且調(diào)用起來也就特別簡單了溯职,只需要調(diào)用支付的接口精盅。
如果只需要發(fā)送訂單和處理支付返回結(jié)果,只需要添加AlipaySDK.bundle和AlipaySDK.framework這兩個(gè)就行了谜酒,下載的SDK中很容易發(fā)現(xiàn)叹俏。
快捷支付方法是這個(gè):
1-(void)payOrder:(NSString?*)orderStr?fromScheme:(NSString?*)schemeStr?callback:(CompletionBlock)completionBlock;
在支付的按鈕中,使用支付寶這個(gè)類僻族,再調(diào)用這個(gè)方法就行啦粘驰!如下如:
[[AlipaySDK?defaultService]?payOrder:credential?fromScheme:fromScheme?callback:^(NSDictionary*?resultDic)?{
????NSLog(@"%@",resultDic);
}];
4.4 配置支付寶客戶端返回url處理方法
如示例AliSDKDemo\APAppDelegate.m文件中,增加引用代碼:
1import
在*@*implementation ?AppDelegate中以下代碼中的NSLog改為實(shí)際業(yè)務(wù)處理代碼:
-?(BOOL)application:(UIApplication?*)application
????????????openURL:(NSURL?*)url
??sourceApplication:(NSString?*)sourceApplication
?????????annotation:(id)annotation?{
????if?([url.host?isEqualToString:@"safepay"])?{
????????//跳轉(zhuǎn)支付寶錢包進(jìn)行支付述么,處理支付結(jié)果
????????[[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?*)options
{
????if?([url.host?isEqualToString:@"safepay"])?{
????????//跳轉(zhuǎn)支付寶錢包進(jìn)行支付蝌数,處理支付結(jié)果
????????[[AlipaySDK?defaultService]?processOrderWithPaymentResult:url?standbyCallback:^(NSDictionary?*resultDic)?{
????????????NSLog(@"result?=?%@",resultDic);
????????}];
????}
????return?YES;
}
4.5 項(xiàng)目配置
最后,不要忘了還要寫一個(gè)URL Scheme度秘,在Targets -> Info 下最后一個(gè)即可找到顶伞,
點(diǎn)擊“Info”選項(xiàng)卡,在“URL Types”選項(xiàng)中剑梳,點(diǎn)擊“+”唆貌。