支付宝支付
来源:互联网 发布:消防三知四会一联通 编辑:程序博客网 时间: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];
}
}];
}
- app支付--支付宝支付
- 支付宝支付--手机支付
- 支付-支付宝APP支付
- 支付--支付宝APP支付
- 支付宝 支付认识
- iOS 支付宝支付
- ios 支付宝支付
- android支付宝支付
- Android 支付宝【支付】
- 支付宝支付流程
- 支付宝快捷支付
- 支付宝支付
- 支付宝支付
- 支付宝-移动支付
- iOS 支付宝支付
- android 支付宝支付
- IOS支付宝支付
- 支付宝支付写法
- spring线程池ThreadPoolTaskExecutor
- 小购物车
- JSP页面无法正常翻译问题 ---jsp cannot be resolved to a type
- Java导出Word文档使用iText操作
- goahead-3.3.6源码分析
- 支付宝支付
- 调试
- loadBeanDefinitions
- 宝藏(树形DP)
- OCILIB 连接Oracle数据库——安装配置
- 专访微软SQL项目组高级产品经理:SQL Server新技术与云化技术支持
- IntelliJ:补全if,do-while,try-catch,return句子的括号
- 如何找到适合你自己的工作?
- Kinect2.0配合Unity3D使用中获取AcquireLatestFrame()的一个坑