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内购流程

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