iOS 最新版本支付寶支付開發流程

FBY展菲發表於2017-12-26

一:介紹

最近支付寶,微信,銀聯支付類sdk均做了更新,其中支付寶sdk變化比較大,由原來需要匯入六個檔案:

  • AlipaySDK.framework
  • AlipaySDK.bundle
  • Order.h和Order.m
  • Until資料夾
  • openssl資料夾
  • libcrypto.a和libssl.a

在新版之後只需要匯入兩個檔案就可以解決了,檔案如下:

  • AlipaySDK.framework
  • AlipaySDK.bundle

下面我在舊版文章的基礎上,為大家詳細介紹最新版本支付寶支付開發流程。

因為工作的需要,我先後總結了iOS支付相關的近五類支付開發文章,分別是支付寶支付、支付寶網頁支付轉客戶端、微信支付、銀聯支付、Apple_pay,做這些總結第一是方便以後的查閱,第二也為大家提供方便, 以免在用到的地方重複踩坑。

注意開始填坑!!!

二:互動流程

建議先把開發文件仔仔細細看一遍,一定要看,剛開始的時候沒有老老實實地看完,結果遇到很多的坑,浪費的挺多的時間的,所以建議一定要好好看看,特別是互動流程這一部分。

2.1 功能流程

功能流程圖

流程說明:

  • 第4步:呼叫支付介面
  • 第5步:支付請求
  • 第8步:介面返回支付結果
  • 第12步:非同步傳送支付通知

2.2 資料互動

資料互動圖

資料互動說明:

  1. 構造訂單資料並簽名
  2. 傳送請求資料
  3. 手機支付寶支付開發包對請求資料進行處理
  4. 返回處理的結果資料
  5. 商戶對獲取的返回結果資料進行處理

三:下載支付寶SDK

支付寶業務眾多,真想找到想要的支付sdk還是要費一番功夫的,這裡給出了最新的sdk地址(注意的是下載出來的SDK包裡面並沒有傳說中的開發文件,需要其他地方找或者看網頁上的)。

公鑰、私鑰、PID、sellerID、key這些東西的用途和獲取方式在文件上都有詳細的說明,這裡不再贅述,一定要把概念分清楚再去做,不然一會就亂了。如果遇到問題的話我們們可以再一起探討。

四: 匯入庫整合SDK

4.1 匯入檔案和關鍵庫

官方demo檔案

iOS 最新版本支付寶支付開發流程

把iOS包中的壓縮檔案中以下檔案拷貝到專案資料夾下,並匯入到專案工程中:

  • AlipaySDK.framework
  • AlipaySDK.bundle

在Build Phases選項卡的Link Binary With Libraries中,增加以下依賴:

配置截圖
其中,需要注意的是:

  • 如果是Xcode 7.0之後的版本,需要新增libc++.tbd、libz.tbd;
  • 如果是Xcode 7.0之前的版本,需要新增libc++.dylib、libz.dylib(如下圖)。

iOS 最新版本支付寶支付開發流程

此時,假如你啟動工程,很大機率上你會發現報error的情況。 報錯#include <openssl/opensslconf.h> not find 這是一個神奇的大坑,我Google了好久,也不得其解,然後經網友提醒之後想起來#import ""和#import <>的區別。

解決方法:Targets -> Build Settings 下的 Header Search Paths。新增如下目錄 "$(SRCROOT)/專案名稱/檔案的絕對地址" 如圖:

3.png

4.2

在需要呼叫AlipaySDK的檔案中,增加標頭檔案引用。

import <AlipaySDK/AlipaySDK.h>
複製程式碼

4.3 呼叫支付介面

在支付寶的接入文件中,是將生成一個訂單這步放在客戶端來做了,但這個最好是 放在伺服器端來做。 後臺生成訂單然後拼接,簽名,然後伺服器端直接給客戶端傳一個加密簽名過的引數就可以了,這樣比較安全。 所有的訂單資訊,商戶資訊等都掌握在自己的手中,這樣的話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);
          
}];
複製程式碼

4.4 配置支付寶客戶端返回url處理方法

如示例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;
}
複製程式碼

4.5 專案配置

最後,不要忘了還要寫一個URL Scheme,在Targets -> Info 下最後一個即可找到, 點選“Info”選項卡,在“URL Types”選項中,點選“+”。

專案配置

到這裡支付寶支付就基本完成了,如果小夥伴們在整合過程中遇到什麼問題,可以留言給我或者新增qq,線上幫你解決。

關注 【網羅開發】微信公眾號,網羅天下方法,方便你我開發,更多iOS技術乾貨等待領取,所有文件會持續更新,歡迎關注一起成長!

希望可以幫助大家,如有問題可加QQ群: 668562416 交流

如果哪裡有什麼不對或者不足的地方,還望讀者多多提意見或建議

如需轉載請聯絡我,經過授權方可轉載,謝謝

相關文章