支付宝支付

来源:互联网 发布:消防三知四会一联通 编辑:程序博客网 时间:2024/06/10 05:27

一:准备工作

第一种方法:手动导入  (因为之前用的时候,没有找到支付宝第三方库,所以用的是手动导入)

1.导入支付宝API demo中的  AlipaySDK.bundle  AlipaySDK.framework  这两个文件导入项目(不要用API下载的这两个文件,添加进去会报错)

2.添加依赖:

第二种方法:pod 'AlipaySDK-2.0', '~> 15.0.2'   #支付宝  (这种方法,免去了配置依赖)(后面的版本号最好是加上,如果不加,下载的是本地最新的,不一定是线上最新的,想要查找最新的,用pod search AlipaySDK-2.0命令查找)

二:开始写代码了微笑

还是先截图吧,这样看着清晰

1.在delegate.m文件中导入



2.URL Schemes 是自己自定义的,为了支付完成之后,跳回到自己的app,最好是带着alipay 有益于和创建的其他URL Schemes区分



3.在使用支付宝的地方,调起支付,就可以了

在使用支付的界面,导入头文件

#import <AlipaySDK/AlipaySDK.h>//支付宝

我们公司实现的支付宝的逻辑是这样的:


确认支付的时候,我先下一个单子,后台给我一个code

然后,我拿这个code,传给另一个接口,后台给我返回来一串appId,sign等混合到一起的字符串,然后就可以将得到的字符串传入调起支付宝代码里面,回调之后,会返回数字,通过返回的数据,可以判断成功或者失败原因,然后做相应的自定义的操作了


做项目的时候,出现的错误,以及原因   :原因:后台返回sign为空,后台给返回sign就可以了


成功:


相应代码如下:(代码可复制)

1.在delegate.m文件中导入

#import "AppDelegate.h"

#import <AlipaySDK/AlipaySDK.h>//导入支付宝

#pragma mark---支付宝

- (BOOL)application:(UIApplication *)application

            openURL:(NSURL *)url

  sourceApplication:(NSString *)sourceApplication

         annotation:(id)annotation {


    if ([url.hostisEqualToString:@"safepay"]) {

        //跳转支付宝钱包进行支付,处理支付结果

        [[AlipaySDKdefaultService] processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary *resultDic) {

            NSLog(@"result = %@",resultDic);

        }];

    }

    returnYES;

}


// NOTE: 9.0以后使用新API接口

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*,id> *)options

{

    if ([url.hostisEqualToString:@"safepay"]) {

        //跳转支付宝钱包进行支付,处理支付结果

        [[AlipaySDKdefaultService] processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary *resultDic) {

            NSLog(@"result = %@",resultDic);

        }];

    }

    returnYES;

}


#pragma mark---支付宝支付请求的接口

- (void)requestZhiFuBaoDate:(NSString *)payCode

{

    NSMutableDictionary * dict_parameter=[[NSMutableDictionaryalloc] init];

    [dict_parameter setValue:@"alipay"forKey:@"payment_type"];

    [dict_parameter setValue:[userDefaultvalueForKey:@"depotId"]forKey:@"depot_id"];

    [dict_parameter setValue:[userDefaultvalueForKey:@"custId"]forKey:@"cust_id"];

    [dict_parameter setValue:[userDefaultvalueForKey:@"custType"]forKey:@"cust_type"];

    [dict_parameter setValue:payCodeforKey:@"order_code"];

    [MyHttpRequestpost:zhifubaoPayDateUrlandParam:dict_parameter finish:^(NSData *data,NSDictionary *obj, NSError *error) {

        if ([[NSStringstringWithFormat:@"%@",obj[@"status"]]isEqualToString:@"1"]) {

            // NOTE: 调用支付结果开始支付

            [[AlipaySDKdefaultService] payOrder:obj[@"info"]fromScheme:@"alipayZhicangda"callback:^(NSDictionary *resultDic) {

                NSLog(@"reslut444 = %@",resultDic);

                NSInteger returnResult =0;

                returnResult = [resultDic[@"resultStatus"]integerValue];

                [singleTonshareSingleTon].successDict=@{@"name":_detailDataDictionary[@"cust_info"][@"contact"],@"phone":_detailDataDictionary[@"cust_info"][@"telephone"],@"address":[NSStringstringWithFormat:@"%@%@%@%@",_detailDataDictionary[@"cust_info"][@"province"],_detailDataDictionary[@"cust_info"][@"city"],_detailDataDictionary[@"cust_info"][@"district"],_detailDataDictionary[@"cust_info"][@"address"]],@"payMoney":[NSStringstringWithFormat:@"¥%.2f",[_detailDataDictionary[@"cart_list"][@"total_price"]doubleValue]]};

                if (returnResult ==9000) {//支付成功

                    PaySuccessdCtrl * payCtrl=[[PaySuccessdCtrlalloc] init];

                    [self.navigationControllerpushViewController:payCtrl animated:NO];

                }else{//支付失败

                    [singleTonshareSingleTon].failDict=@{@"payOrder":obj[@"info"],@"order_code":payCode,@"shopName":_detailDataDictionary[@"cust_info"][@"cust_name"],@"payMoney":[NSStringstringWithFormat:@"%.2f",[_detailDataDictionary[@"cart_list"][@"total_price"]doubleValue]]};

                    NSString * orderFailInfo=@"";

                    switch (returnResult) {

                        case8000:

                            orderFailInfo=@"订单正在处理中...";

                            break;

                        case4000:

                            orderFailInfo=@"订单支付失败";

                            break;

                        case5000:

                            orderFailInfo=@"订单重复请求";

                            break;

                        case6001:

                            orderFailInfo=@"订单取消";

                            break;

                        case6002:

                            orderFailInfo=@"网络连接出错";

                            break;

                        case6004:

                            orderFailInfo=@"支付结果未知,请查看账单";

                            break;

                        default:

                            break;

                    }

                    PayFailCtrl * payFailCtrl=[[PayFailCtrlalloc] init];

                    payFailCtrl.failInfo=orderFailInfo;

                    [self.navigationControllerpushViewController:payFailCtrl animated:NO];

                }

            }];

        }else{

            UIAlertController *noHaveCameraAlertVC = [UIAlertControlleralertControllerWithTitle:@"提示"message:obj[@"info"]preferredStyle:UIAlertControllerStyleAlert];

            UIAlertAction * okAction1 = [UIAlertActionactionWithTitle:@"确定"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction *action) {

            }];

            [noHaveCameraAlertVC addAction:okAction1];

            [selfpresentViewController:noHaveCameraAlertVCanimated:YEScompletion:nil];

        }

    }];

}




原创粉丝点击