ios支付寶集成

1添加支付寶源文件和庫文件AlipayOrder.h    AlipayOrder.m    AlipayResult.h    AlipayResult.m  AlixLibService.h   PartnerConfig.h    AlipayRsaLib.a    Alixpay.bundle   AlixPaylib_arc.a    libcrypto.a   libssl.a    json

2添加json類庫和demo中的rsa簽名    json文件夾和RSA文件夾app

3添加相關類庫  CoreGraphics.framework  Foundation.framework UIKit.framework  CFNetwork.framework  SystemConfiguration.framework 函數

4在delegate文件中加入支付回調函數url

//獨立客戶端回調函數spa

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {3d

    

    [self parse:url application:application];orm

    return YES;ip

}支付寶


- (void)parse:(NSURL *)url application:(UIApplication *)application {ssl

    

    //結果處理

    AlixPayResult* result = [self handleOpenURL:url];

    

    if (result)

    {

        

        if (result.statusCode == 9000)

        {

            /*

             *用公鑰驗證簽名 嚴格驗證請使用result.resultStringresult.signString驗籤

             */

            

            //交易成功

            NSString* key = @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB";

            id<DataVerifier> verifier;

            verifier = CreateRSADataVerifier(key);

            

            if ([verifier verifyString:result.resultString withSign:result.signString])

            {

                //驗證簽名成功,交易結果無篡改

                UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"提示"

                                                                     message:result.statusMessage

                                                                    delegate:nil

                                                           cancelButtonTitle:@"肯定"

                                                           otherButtonTitles:nil];

                [alertView show];

                alertView.delegate = self;

                

                

            //驗籤錯誤

            else {

                UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"提示"

                                                                     message:@"簽名錯誤"

                                                                    delegate:nil

                                                           cancelButtonTitle:@"肯定"

                                                           otherButtonTitles:nil];

                [alertView show];

                

            }

        }

        //若是支付失敗,能夠經過result.statusCode查詢錯誤碼

        else {

            UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"提示"

                                                                 message:result.statusMessage

                                                                delegate:nil

                                                       cancelButtonTitle:@"肯定"

                                                       otherButtonTitles:nil];

            [alertView show];

            

        }

        

        

    }

    else

    {

        //交易失敗

    }

    

    NSLog(@"1111%i",result.statusCode);

    NSLog(@"222%@",result.description);

    NSLog(@"333%@",result);

    NSLog(@"444%@",result.resultString);

    

    

}


- (AlixPayResult *)resultFromURL:(NSURL *)url {

    NSString * query = [[url query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

#if ! __has_feature(objc_arc)

    return [[[AlixPayResult alloc] initWithString:query] autorelease];

#else

    return [[AlixPayResult alloc] initWithString:query];

#endif

}


- (AlixPayResult *)handleOpenURL:(NSURL *)url {

    AlixPayResult * result = nil;

    

    if (url != nil && [[url host] compare:@"safepay"] == 0) {

        result = [self resultFromURL:url];

    }

    

    return result;

}

5設置url 在target中的info中,添加URL Types

相關文章
相關標籤/搜索