IOS 移动支付-持续更新

支付宝IOS2.2.1支付

  1. 将Demo中AlipaySDK.bundle AlipaySDK.framework libel.a lib crypto.a openssl Util加入到工程,在需要调用的地方加#import <AlipaySDK/AlipaySDK.h> 头文件。
    这个地方报错误的还真是多了,呜呜,纠结了好久,说几个常见的,以后见到报错我会更新

    -路径问题:请在Build Settings的Search Paths下Header Search Paths中添加”$(SRCROOT)/工程名/Classes/Vendor/Alipay”,这个要按你自己的路径
    -Util 文件中config.h文件跟你本地已有的重复
    -报错too many arguments,方法跟你的原有文件重复了,我的报的是MD5,跟据网上提供的方法改个什么属性为NO,发现不行,你把这个MD5名字改成不一样的就好,注意名字被调用了,你就继续改吧。
    -当为wap时候
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) [[AlipaySDK defaultService] auth_V2WithInfo:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic)两个在一起不会掉用的,去掉一个就好

  2. 在plist中加入URL types (应用注册scheme支付完返回本应用的表示),key=RSA private key(商户方的私钥),RSA public key(签名),Partner(合作身份者ID),Seller(支付宝收款账号),这个写哪里都都可以了,用的时候你找得到就好。

    -URL types下边有三个字段,对应URL types 一项,当然,也可以在tatgets-info-URL Types下边直接设置

  3. 修改内容

NSString *partner = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"Partner"];
    NSString *seller = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"Seller"];
    NSString *privateKey = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"RSA private key"];

此时,如果partner,seller,privateKey其中一个为nil时,报错:缺少partner或者seller或者私钥,privateKey错误的时候提示privateKey为Null,服务器繁忙,应该是order的属性有没有设置的,价格过低活着订单号重复或不识别。

  1. 应用回调
    resultStatus状态代码
    resultStatus:9000——请求处理成功 4000——系统异常 6001——用户中途取消 6002--网络连接出错
    result_code状态代码
    result_Code:200——业务处理成功,会返回authCode 1005——系账户已冻结 713——userid不能转换为opened,请联系支付宝技术支持 202--系统异常,请联系支付宝技术支持

    其中写代码的时候还真是麻烦啊,有时候方法不会被调用,wap和客户端调用方法还不一样,不再一一试了,这支付宝文档说明真心不敢恭维,直接上代码吧,

  if (signedString != nil) {
        orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
                       orderSpec, signedString, @"RSA"];

        [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
//            NSLog(@"!!!!reslut = %@",resultDic);
//             NSLog(@"@@@memo = %@,resultStatus =%@",[resultDic valueForKey:@"memo"],[resultDic valueForKey:@"resultStatus"]);

            if ([[[resultDic valueForKey:@"resultStatus"] toString]isEqualToString:@"9000"]) {

                [[NSNotificationCenter defaultCenter]postNotificationName:ZHIDURESULT object:self userInfo:@{@"info":@"1"}];
            }else{

                [[NSNotificationCenter defaultCenter]postNotificationName:ZHIDURESULT object:self userInfo:@{@"info":@"0"}];

            }

        }];



//        [[AlipaySDK defaultService] auth_V2WithInfo:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
//         NSLog(@"reslut = %@",resultDic);
//             NSLog(@"memo = %@,resultStatus =%@",[resultDic valueForKey:@"memo"],[resultDic valueForKey:@"resultStatus"]);
//        }];


    }

上面这段代码,payOrder 没有客户端的情况是从这里进的,支付流程中响应事件也是这个方法,但当客户端的时候,auth_V2WithInfo 会进入,响应事件的方法是下面processAuth_V2Result 方法,但是,当payOrderauth_V2WithInfo 在一起的时候,会很纠结,结果是wap或者客户端总有一个回调方法不响应,可能是自己搞不清文档的意思,可是你妹的写清楚点行不。然后,wap的时候进入的方法不变,客户端的时候响应方法加上processOrderWithPaymentResult ,你会发现,响应的方法和wap的方法是同一个,好像是把支付流程重新传入了payOrder里边,忘高人指点啊。

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {

    if ([url.host isEqualToString:@"safepay"]) {
//                   
//        [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
//            NSLog(@"result = %@",resultDic);
//            NSString *resultStr = resultDic[@"result"];
//            NSLog(@"memo = %@,resultStatus =%@",[resultDic valueForKey:@"memo"],[resultDic valueForKey:@"resultStatus"]);
//                        
//            if ([[[resultDic valueForKey:@"resultStatus"] toString]isEqualToString:@"9000"]) {
//                
//            }else{

//            
//        }];
        [[AlipaySDK defaultService]processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);

        }];
    }
//    if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回authCode
//        [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
//            NSLog(@"result = %@",resultDic);
//        }];
//    }

    return YES;
}
notifyURL 是客户端传给支付宝的,当客户端支付完成后,支付宝会根据这个url异步调用服务端的接口,同步支付结果的数据,这个要服务器给的,确保你的私钥,合作者id是准确的。

建设银行支付

每个公司定义的支付流程都可能不一样,我们是直接加在一个H5页面,H5自动跳转到建设银行,然后支付成功,点击返回商户,用js和客户端交互,完成整个流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值