支付宝支付后页面跳转

本文介绍了在iOS应用中,如何处理支付宝支付成功或失败后页面的跳转问题。通过在AppDelegate中设置代理方法,可以实现支付完成后正确返回到应用的指定页面。博主分享了具体的代码实现,并欢迎大家指正。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


支付宝支付成功或者失败后,停留在AppDelegate 里面。用代理方法已解决

首先在 AppDelegate.h 添加

//支付宝回调代理方法
@protocol AlipayDelegate <NSObject>

- (void)paymentResultCallbackWithResult:(NSDictionary *)resultDic;

@end
再添加
@property (nonatomic, weak) id<AlipayDelegate> alipayDelegate;

AppDelegate.m 支付宝支付的地方
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
    if ([url.host isEqualToString:@"safepay"]) {
        //跳转支付宝钱包进行支付,处理支付结果
        
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSString *resultStatus = [resultDic objectForKey:@"resultStatus"];
            NSLog(@"lisiresult = %@",resultStatus);
            
            //【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】
            if (_alipayDelegate && [_alipayDelegate respondsToSelector:@selector(paymentResultCallbackWithResult:)]) {
                
                [_alipayDelegate paymentResultCallbackWithResult:resultDic];
                
            }
            
        }];
    }
    return YES;
}

到使用支付宝的页面

添加

#import "AppDelegate.h"

在提交商品信息等操作的地方添加

 //支付完成回调代理
    AppDelegate * appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    appDelegate.alipayDelegate = self;
    
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
        
        [self checkPaymentResult:resultDic];
    }];

然后再添加两个方法

//核实支付结果
- (void)checkPaymentResult:(NSDictionary *)resultDic
{
    NSLog(@"reslut = %@",resultDic);
    
    switch ([[resultDic objectForKey:@"resultStatus"] integerValue]) {
        case 9000: {
            //to do 请求服务器验证支付状态// 完全在这里支付成功后设置提示框,或者跳转页面的操作
        }
            break;
        default:
            break;
    }
    //9000	订单支付成功
    //8000	正在处理中
    //4000	订单支付失败
    //6001	用户中途取消
    //6002	网络连接出错
}

#pragma mark - AlipayDelegate
- (void)paymentResultCallbackWithResult:(NSDictionary *)resultDic
{
    [self checkPaymentResult:resultDic];
}
最后 别忘了设置 <AlipayDelegate>

如有不对,请指出,第一次写博客,谢谢大家支持


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值