一、支付宝
支付宝自带的有支付回调的block
在AppDelegate.h里面
9.0新的
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([url.host isEqualToString:@"safepay"]) {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
if ([statusStr isEqualToString:@"9000"]) {
NSLog(@"支付成功");
//发送对应的通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"successPay" object:nil];
} else if ([statusStr isEqualToString:@"8000"]) {
NSLog(@"正在处理中");
/
} else if ([statusStr isEqualToString:@"6001"]) {
NSLog(@"用户中途取消支付");
} else if ([statusStr isEqualToString:@"6002"]) {
NSLog(@"网络故障支付失败");
} else if ([statusStr isEqualToString:@"4000"]) {
NSLog(@"支付失败");
}
}
在支付页面注册通知,跳转对应页面
-(void)registerNotification
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(successPay) name:@"successPay" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(failePay) name:@"failePay" object:nil];
}
-(void)successPay
{
//成功支付
//也可以从服务端获取结果后在跳转(后台给的API查询支付结果)
PaySuccessViewController *success = [[PaySuccessViewController alloc]init];
[self.navigationController pushViewController:success animated:YES];
}
二、微信
微信差不多
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
return [WXApi handleOpenURL:url delegate:self];
}
//微信回调,微信给的接口
-(void)onResp:(BaseResp*)resp
{
PayResp*response=(PayResp*)resp;
switch(response.errCode)
{
case WXSuccess:
//服务器端查询支付通知或查询API返回的结果再提示成功
[[NSNotificationCenter defaultCenter] postNotificationName:@"successPay" object:nil];
NSLog(@"支付成功");
break;
case WXErrCodeUserCancel:
//服务器端查询支付通知或查询API返回的结果再提示成功
[[NSNotificationCenter defaultCenter] postNotificationName:@"failePay" object:nil];
NSLog(@"用户取消支付");
break;
default:
[[NSNotificationCenter defaultCenter] postNotificationName:@"failePay" object:nil];
NSLog(@"支付失败,retcode=%d",resp.errCode);
break;
}