支付宝集成
程序员文章站
2022-05-30 21:33:59
...
CocoaPods 下载SDK
//搜索最新版
$ pod search AlipaySDK-iOS
//找到最新版本:pod 'AlipaySDK-iOS', '~> 15.5.9',将其复制到Podfile文件中。
//删除Podfile.lock文件
//更新第三方类库文件
$pod update --verbose
使用AlipaySDK 文件
在宏文件中导入AlipaySDK:#import <AlipaySDK/AlipaySDK.h>
设置URL Type
【项目文件】->【TARGETS】->【项目名】->【info】->【URL Types】然后点击“ + ”在URL Schemes中命名一个名称字符串(最好是与项目有关的名字)。
# FloatLaverView.m 文件
//注意:有的后端一股脑把数据传过来没处理,需要前端取字段“params”和“sign”
NSString *orderInfo = [NSString stringWithFormat:@"%@&sign=%@", model[@"params"], model[@"sign"]];
//注意:URL Type中不能使用特殊字符,否则字符宝那边无法识别,如:@"taijidao://"
[[AlipaySDK defaultService] payOrder:orderInfo fromScheme:@"taijidao" callback:^(NSDictionary *resultDic) {
//在版本 AlipaySDK-iOS 15.5.9 中,这里不支持回调了,需要在AppDelegate.m 文件中,对回调进行处理
}];
} failure:^(id _Nonnull fail) {
[SVProgressHUD showErrorWithStatus:@"支付异常!"];
}];
# AppDelegate.m 文件
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
if ([url.host isEqualToString:@"safepay"]) {
//支付宝跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
if ([resultDic[@"resultStatus"] integerValue] == 9000) {
[SVProgressHUD showSuccessWithStatus:@"支付成功!"];
[[NSNotificationCenter defaultCenter] postNotificationName:aliPaySuccess object:nil];
}else {
[SVProgressHUD showSuccessWithStatus:@"支付异常!"];
[[NSNotificationCenter defaultCenter] postNotificationName:aliPaySuccess object:nil];
}
}];
//授权跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
//解析 auth Code
NSString *result = resultDic[@"result"];
NSString *authCode = nil;
if (result.length > 0) {
NSArray *resultArr = [result componentsSeparatedByString:@"&"];
for (NSString *subResult in resultArr) {
if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
authCode = [subResult substringFromIndex:10];
break;
}
}
}
NSLog(@"支付宝授权结果 authCode = %@", authCode?:@"");
}];
}
return YES;
}
参考资料: