XZ_iOS之iOS9.0后跳支付点击左上角返回app

当用户点击了左上角系统的返回调起App时,微信或者支付宝的支付回调中获取不到回调的结果,想要实现当用户点击了左上角系统的返回时,跳转到我的订单页面,而不是停留在确认订单页面;监控用户的返回方式。

1>现在全局的单例中创建一个属性,用这个属性标记是从微信或支付宝点击左上角返回的,还是成功支付或者是取消支付返回的
// 确认订单 ----- 从支付宝或者微信直接返回
// 1是支付成功 2是支付失败 3是点击左上角返回
@property ( nonatomic , assign ) NSInteger backNumber;

2>在确认订单的控制器中创建一个全局的布尔值,用这个布尔值标记用户是否点击了”确认订单"调起支付了,
// 从微信支付宝直接返回
// YES调起支付了 NO未调起支付
@property ( nonatomic , assign ) BOOL isBack;
3>当用户点击”提交订单“获取到订单号调起支付的时候,将 isBack设置为YES,并将单例中的 backNumber设置成3
self . isBack = YES ;
XZShareSetting . backNumber = 3 ;
4>在支付的回调方法中,如果是支付成功, backNumber设置成1,支付失败, backNumber设置成2
#pragma mark ----- 回调方法
-( void )XZPayOrderResult:( NSInteger )rest;
{
    if (rest == 1 ) {
        XZShareSetting . backNumber = 1 ;
    } else
    { // 失败
        XZShareSetting . backNumber = 2 ;
    }
}
5>当切换回本来的App时,由running状态切换到inactive状态,此时调用applicationWillEnterForeground:方法,在AppDelegate的 applicationDidBecomeActive方法中判断 backNumber的值,如果是3就发一个通知,确认是在点击了”确认订单”情况下从微信或者支付宝返回的,因为从app返回或者从后台唤起App或者是手机灭屏再打开都会走这个方法,
//appDelegate 进入活跃状态
- ( void )applicationDidBecomeActive:( UIApplication *)application{
    // 商城
    if ( XZShareSetting . backNumber == 3 ) {
        // 直接从支付宝或者微信点左上角返回
        [[ NSNotificationCenter defaultCenter ] postNotificationName : KBackFromAlipayOrWechat object : nil userInfo : nil ];
    }
}
6>在确认订单的控制中接收这个通知
// 从微信或者支付宝直接返回
    [[ NSNotificationCenter defaultCenter ] addObserver : self
                                             selector : @selector (BackFromAlipayOrWechat:)
                                                 name : KBackFromAlipayOrWechat
                                               object : nil ];

7>并在方法中判断用户是否点击了”确认订单",如果点击了进行跳转,并将
#pragma mark ----- 从微信或者支付宝直接返回
- ( void )BackFromAlipayOrWechat:( NSNotification *)notification {
   
    if ( self . isBack ) { // 跳转我的订单
        if ( XZShareSetting . backNumber == 3 ) {
            // 查看订单
            XZMyOrderViewController *orderView = [[ XZMyOrderViewController alloc ] init ];
            orderView. isRemoveFather = YES ;
            self . isBack = NO ;
            [ self . navigationController pushViewController :orderView animated : YES ];
        }
    }
}

到此所有的情况判断结束,跳转完成

其中的一些定义
/**
 *  商城从支付宝或者微信返回
 */
#define KBackFromAlipayOrWechat @ "BackFromAlipayOrWechat"

你可能感兴趣的:(iOS)