iOS端 集成 银联和支付宝

银联:

提供测试使用卡号、手机号信息(此类信息仅供测试,不会发生正式交易)招商银行预付费卡:
卡号:
6226 4401 2345 6785
密码:111101 


1>( SDK  分为以下两个版本)选择的是 UPPayPlugin 版 本 
   UPPayPlugin.h
   UPPayPluginDelegate.h
   libUPPayPlugin.a
  1. 添 加 QuartzCore.frameworkSecurity.framework到工程 


  2. 在调用支付的界面添加


  3. 然后在.m调用:

    [UPPayPluginstartPay:tnmode:@"01"viewController:selfdelegate:self];//解释一下 tn 是后台传过来的流水号,01是测试环境,生产环境是00,调用银联手机支付的当前UIViewController

  4. 实现代理方法:

  5. [html]  view plain copy
    1. //银联结果回调  
    2. -(void)UPPayPluginResult:(NSString*)result  
    3. {  
    4. //    NSString* msg = [NSString stringWithFormat:@"支付结果:%@", result];  
    5. //    [MyAlertView showWaitViewWithMessage:msg];  
    6.     int x;  
    7.     if ([result isEqualToString: @"fail"]) {  
    8.         [MyAlertView showWaitViewWithMessage:@"支付结果:失败"];  
    9.         x = 0;  
    10.     }else if([result isEqualToString: @"cancel"]){  
    11.         [MyAlertView showWaitViewWithMessage:@"支付结果:取消"];  
    12.         x = 0;  
    13.     }else if([result isEqualToString: @"success"]){  
    14.         [MyAlertView showWaitViewWithMessage:@"支付结果:成功"];  
    15.         x = 1;  
    16.         [self changeTheOrderStates:x];  
    17.     }else{  
    18.       
    19.     }  
    20.       
    21. }  
    22. //加密  
    23. -(NSString*)doRsa:(NSString*)orderInfo  
    24. {  
    25.     id<DataSigner> signer;  
    26.     signer = CreateRSADataSigner(PartnerPrivKey);  
    27.     NSString *signedString = [signer signString:orderInfo];  
    28.     return signedString;  
    29. }  

    好了银联完成!!!

支付宝:

支付宝比银联少复杂点
1》导入包
引入系统的
CFNetwork.framework
SystemConfiguration.framework
Security.framework

如果用到了zbar 二维码会报错,需替换里面的.a文件


2》         然 就是引入

//支付宝

#import "AlixLibService.h"

#import "PartnerConfig.h"

#import "DataSigner.h"

#import "DataVerifier.h"

#import "AlixPayResult.h"

      3》就是调用函数去支付 和支付后的回调,但是支付宝要写两套1<是在AppDelegate.m中,是手机上装了支付宝的回调和处理。2<是在你要调用支付的当前控制器里一套,是手机没用装支付宝客户端请求web页的处理。

      在AppDelegate.m中引入支付宝的类!(见2)

然后添加如下代码

[html]  view plain copy
  1. #pragma mark 支付宝独立客户端 回掉  
  2. //独立客户端回调函数  
  3. - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {  
  4.       
  5.     [self parse:url application:application];  
  6.     return YES;  
  7. }  
  8.   
  9. - (void)parse:(NSURL *)url application:(UIApplication *)application {  
  10.       
  11.     //结果处理  
  12.     AlixPayResult* result = [self handleOpenURL:url];  
  13.       
  14.     if (result)  
  15.     {  
  16.           
  17.         if (result.statusCode == 9000)  
  18.         {  
  19.             /*  
  20.              *用公钥验证签名 严格验证请使用result.resultString与result.signString验签  
  21.              */  
  22.               
  23.             //交易成功  
  24.             NSString* key = AlipayPubKey;//签约帐户后获取到的支付宝公钥  
  25.             id<DataVerifier> verifier;  
  26.             verifier = CreateRSADataVerifier(key);  
  27.               
  28.             if ([verifier verifyString:result.resultString withSign:result.signString])  
  29.             {  
  30.                   
  31.                 //验证签名成功,交易结果无篡  
  32.                 [[NSNotificationCenter defaultCenter] postNotificationName:@"JYsuccess"object:nil];  
  33.                   
  34.             }  
  35.         }  
  36.         else  
  37.         {  
  38.             //交易失败  
  39.             [[NSNotificationCenter defaultCenter] postNotificationName:@"JYfail"object:nil];  
  40.         }  
  41.     }  
  42.     else  
  43.     {  
  44.         //交易失败  
  45.         [[NSNotificationCenter defaultCenter] postNotificationName:@"JYfail"object:nil];  
  46.     }  
  47.       
  48. }  
  49.   
  50. - (AlixPayResult *)resultFromURL:(NSURL *)url {  
  51.     NSString * query = [[url query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  
  52. #if ! __has_feature(objc_arc)  
  53.     return [[[AlixPayResult alloc] initWithString:query] autorelease];  
  54. #else  
  55.     return [[AlixPayResult alloc] initWithString:query];  
  56. #endif  
  57. }  
  58.   
  59. - (AlixPayResult *)handleOpenURL:(NSURL *)url {  
  60.     AlixPayResult * result = nil;  
  61.       
  62.     if (url != nil && [[url host] compare:@"safepay"] == 0) {  
  63.         result = [self resultFromURL:url];  
  64.     }  
  65.       
  66.     return result;  
  67. }  

//在调用支付的控制器中添加如下代码

调用支付代码》

[html]  view plain copy
  1. //注册购买请求  
  2.     [[NSNotificationCenter defaultCenter]  addObserver:self selector:@selector(successToDo:) name:@"JYsuccess" object:nil];  
  3.     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(failToDo:) name:@"JYfail" object:nil];  
  4.     //时间戳  
  5. //    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[[NSDate  date] timeIntervalSince1970]];  
  6.     NSString *timeSp =  _currentOrderNo;  
  7.     NSString *subject = @"惠人产品购买";  
  8.     NSString *body = @"商品购买";  
  9.     NSString *notify_url = @"";  
  10.     //订单ID  
  11.     NSString *IDstring = [[NSString alloc]initWithFormat:@"%@",timeSp];  
  12. //    NSString *fee = @"0.01";  
  13.     NSString *fee = _currentOrderMoney;  
  14.     NSString *TempOrderString = [NSString stringWithFormat:@"partner=\"%@\"&seller_id=\"%@\"&out_trade_no=\"%@\"&subject=\"%@\"&body=\"%@\"&total_fee=\"%@\"¬ify_url=\"%@\"&service=\"mobile.securitypay.pay\"&_input_charset=\"utf-8\"&payment_type=\"1\"",PartnerID,SellerID,IDstring,subject,body,fee,notify_url];  
  15.       
  16.     NSString* signedStr = [self doRsa:TempOrderString];  
  17.       
  18.     NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",TempOrderString,signedStr,@"RSA"];  
  19. #ifdef DEBUG  
  20.     NSLog(@"购买请求%@",orderString);  
  21. #endif  
  22.     NSString *appScheme = @"BlueMobiProject";  
  23.     [AlixLibService payOrder:orderString AndScheme:appScheme seletor:@selector(paymentResult:) target:self];  


处理结果代码》

[html]  view plain copy
  1. #pragma mark web会调函数  
  2. //wap回调函数  
  3. -(void)paymentResult:(NSString *)resultd  
  4. {  
  5.     //结果处理  
  6. #ifdef EEBUG  
  7.     NSLog(@"返回的结果是%@",resultd);  
  8. #endif  
  9.     AlixPayResult* result = [[AlixPayResult alloc] initWithString:resultd];  
  10.     if (result)  
  11.     {  
  12.           
  13.         if (result.statusCode == 9000)  
  14.         {  
  15.             /*  
  16.              *用公钥验证签名 严格验证请使用result.resultString与result.signString验签  
  17.              */  
  18.               
  19.             //交易成功  
  20.             NSString* key = AlipayPubKey;//签约帐户后获取到的支付宝公钥  
  21.             id<DataVerifier> verifier;  
  22.             verifier = CreateRSADataVerifier(key);  
  23.               
  24.             if ([verifier verifyString:result.resultString withSign:result.signString])  
  25.             {  
  26.                 //验证签名成功,交易结果无篡  
  27.                 [[NSNotificationCenter defaultCenter] postNotificationName:@"JYsuccess"object:nil];  
  28.                 //                BMBuySuccess *buysuccess = [[BMBuySuccess alloc]init];  
  29.                 //                NSLog(@"返回数据=%@",_TempDic);  
  30.                                 buysuccess._TempDic = _TempDic;  
  31.                 //                [buysuccess requite:_TempDic and:_liushuiID];  
  32.             }  
  33.               
  34.         }  
  35.         else  
  36.         {  
  37.             //交易失败  
  38.             [[NSNotificationCenter defaultCenter] postNotificationName:@"JYfail"object:nil];  
  39.         }  
  40.     }  
  41.     else  
  42.     {  
  43.         //交易失败  
  44.         [[NSNotificationCenter defaultCenter] postNotificationName:@"JYfail"object:nil];  
  45.     }  
  46.       
  47. }  

好了支付宝完成!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值