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

一:介紹

最近支付寶,微信,銀聯支付類sdk均作了更新,其中支付寶sdk變化比較大,由原來須要導入六個文件:c++

  • AlipaySDK.framework
  • AlipaySDK.bundle
  • Order.h和Order.m
  • Until文件夾
  • openssl文件夾
  • libcrypto.a和libssl.a

在新版以後只須要導入兩個文件就能夠解決了,文件以下:安全

  • AlipaySDK.framework
  • AlipaySDK.bundle

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

由於工做的須要,我前後總結了iOS支付相關的近五類支付開發文章,分別是支付寶支付、支付寶網頁支付轉客戶端、微信支付、銀聯支付、Apple_pay,作這些總結第一是方便之後的查閱,第二也爲你們提供方便, 以避免在用到的地方重複踩坑。服務器

注意開始填坑!!!微信

二:交互流程

建議先把開發文檔仔仔細細看一遍,必定要看,剛開始的時候沒有老老實實地看完,結果遇到不少的坑,浪費的挺多的時間的,因此建議必定要好好看看,特別是交互流程這一部分。app

2.1 功能流程

功能流程圖

流程說明:異步

  • 第4步:調用支付接口
  • 第5步:支付請求
  • 第8步:接口返回支付結果
  • 第12步:異步發送支付通知

2.2 數據交互

數據交互圖

數據交互說明:微信支付

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

三:下載支付寶SDK

支付寶業務衆多,真想找到想要的支付sdk仍是要費一番功夫的,這裏給出了最新的sdk地址(注意的是下載出來的SDK包裏面並無傳說中的開發文檔,須要其餘地方找或者看網頁上的)。ui

公鑰、私鑰、PID、sellerID、key這些東西的用途和獲取方式在文檔上都有詳細的說明,這裏再也不贅述,必定要把概念分清楚再去作,否則一會就亂了。若是遇到問題的話我們能夠再一塊兒探討。加密

四: 導入庫集成SDK

4.1 導入文件和關鍵庫

官方demo文件

把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(以下圖)。

此時,假如你啓動工程,很大概率上你會發現報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 交流

若是哪裏有什麼不對或者不足的地方,還望讀者多多提意見或建議

如需轉載請聯繫我,通過受權方可轉載,謝謝

相關文章
相關標籤/搜索