iOS開發 --- AlipaySDK接入(version:15.6.4 motify:2019.06.11)

客戶端 iOS 集成流程

App支付客戶端DEMO&SDK  

支付相關接口說明

支付接口

1.1

方法名稱:pay方法

方法原型:(void)payOrder:(NSString )orderStr fromScheme:(NSString )schemeStr callback:(CompletionBlock)completionBlock;

方法功能:提供給商戶快捷訂單支付功能。

NSString* scheme  商戶程序註冊的URL protocol,供支付完成後回調商戶程序使用

(CompletionBlock)completionBlock 快捷支付開發包回調函數,返回免登、支付結果。本地未安裝支付寶客戶端,或未成功調用支付寶客戶端進行支付的情況下(走H5收銀臺),會通過該completionBlock返回支付結果。  

NSString* orderString  app支付請求參數字符串,主要包含商戶的訂單信息,key=value形式,以&連接。

/**
 *  支付接口
 *
 *  @param orderStr        支付訂單信息字串
 *  @param schemeStr       調用支付的app註冊在info.plist中的scheme
 *  @param completionBlock 支付結果回調Block,用於wap支付結果回調
                           跳轉支付寶支付時只有當processOrderWithPaymentResult接口的completionBlock爲nil時會使用這個bolock
 */
- (void)payOrder:(NSString *)orderStr
      fromScheme:(NSString *)schemeStr
        callback:(CompletionBlock)completionBlock;
/**
 *  支付接口 v2
 *
 *  @param orderStr        支付訂單信息字串
 *  @param dynamicLaunch   是否使用動態配置策略跳轉支付寶支付
 *  @param schemeStr       調用支付的app註冊在info.plist中的scheme
 *  @param completionBlock 支付結果回調Block,用於wap支付結果回調
 跳轉支付寶支付時只有當processOrderWithPaymentResult接口的completionBlock爲nil時會使用這個bolock
 */
- (void)payOrder:(NSString *)orderStr
   dynamicLaunch:(BOOL)dynamicLaunch
      fromScheme:(NSString *)schemeStr
        callback:(CompletionBlock)completionBlock;

支付結果接口

方法名稱:處理客戶端方法

方法原型:-(void)processOrderWithPaymentResult:(NSURL*)resultUrl standbyCallback:(CompletionBlock)completionBlock;

方法功能:設備已安裝支付寶客戶端情況下,處理支付寶客戶端返回的url。

本地安裝了支付寶客戶端,且成功調用支付寶客戶端進行支付的情況下,會通過該completionBlock返回支付結果。

NSURL *resultUrl  支付寶客戶端回傳的url

CompletionBlock completionBlock 本地安裝了支付寶客戶端,且成功調用支付寶客戶端進行支付的情況下,會通過該completionBlock返回支付結果。

注意:請在APPDelegate的 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 中調用該方法,iOS9.0及以上請在 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options 中調用該方法。

/**
 *  處理支付寶app支付後跳回商戶app攜帶的支付結果Url
 *
 *  @param resultUrl        支付寶app返回的支付結果url
 *  @param completionBlock  支付結果回調 爲nil時默認使用支付接口的completionBlock(即- (void)payOrder:(NSString *)orderStr
      fromScheme:(NSString *)schemeStr
        callback:(CompletionBlock)completionBlock;這個方法中的completionBlock)
 */
- (void)processOrderWithPaymentResult:(NSURL *)resultUrl
                      standbyCallback:(CompletionBlock)completionBlock;

支付寶授權 2.0 相關接口

/**
 *  快登授權2.0
 *
 *  @param infoStr          授權請求信息字串
 *  @param schemeStr        調用授權的app註冊在info.plist中的scheme
 *  @param completionBlock  授權結果回調,需要調用方在appDelegate中調用processAuth_V2Result:standbyCallback:方法獲取授權結果
 *                          若在授權過程中,調用方應用被系統終止則此block無效(此時會調用'processAuth_V2Result:standbyCallback:'傳入的standbyCallback)
 */
- (void)auth_V2WithInfo:(NSString *)infoStr
             fromScheme:(NSString *)schemeStr
               callback:(CompletionBlock)completionBlock;

 

/**
 *  處理支付寶app授權後跳回商戶app攜帶的授權結果Url
 *
 *  @param resultUrl        支付寶app返回的授權結果url
 *  @param completionBlock  授權結果回調,用於處理跳轉支付寶授權過程中商戶APP被系統終止的情況
 */
- (void)processAuth_V2Result:(NSURL *)resultUrl
             standbyCallback:(CompletionBlock)completionBlock;

相關代碼

支付:(如果未安裝支付寶,調用下面方法,通過回調resultDic處理支付結果。)

// NOTE: 調用支付結果開始支付
    [[AlipaySDK defaultService] payOrder:contentString fromScheme:@"AlipaySchemes" callback:^(NSDictionary *resultDic) {
        NSLog(@"payWithAlipayWithReturnContent AlipaySDK callback reslut = %@",resultDic);
        
        if ([resultDic[@"resultStatus"] intValue] == 9000) {
            //訂單支付成功
            NSLog(@"%@",@"--------訂單支付成功---------");
        }else{
            //訂單支付失敗
             NSLog(@"%@",@"--------訂單支付失敗---------");
        }
    }];

支付結果: 

未安裝支付寶客戶端時,通過下面方法的回調resultDic處理支付結果。

將 @implementation AppDelegate 中以下代碼中的 NSLog 改爲實際業務處理代碼:

// NOTE:iOS9之前使用
- (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);
            if ([[resultDic valueForKey:@"resultStatus"] intValue] == 9000) {
                //訂單支付成功
                [[NSNotificationCenter defaultCenter] postNotificationName:@"paySuccess" object:nil];
            }else{
                //訂單支付失敗
                [[NSNotificationCenter defaultCenter] postNotificationName:@"payFail" object:nil];
            }   
            
        }];
    }
    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);
             if ([[resultDic valueForKey:@"resultStatus"] intValue] == 9000) {
                //訂單支付成功
                [[NSNotificationCenter defaultCenter] postNotificationName:@"paySuccess" object:nil];
            }else{
                //訂單支付失敗
                [[NSNotificationCenter defaultCenter] postNotificationName:@"payFail" object:nil];

        }];
    }
    return YES;
}

相關文章

iOS 支付回調區分支付寶和微信的方法

iOS 微信和支付寶的最新整理(客戶端和後臺兩種demo)

支付寶支付iOS集成與二次封裝

IOS整合支付寶支付微信支付

iOS三方支付--微信支付/支付寶支付

iOS支付寶和微信支付

iOS對接微信、支付寶支付、App內購流程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章