iPhone PayPal初始化失败

时间:2012-01-17 13:30:16

标签: iphone ios ipad paypal

我尝试在我的应用中初始化PayPal。有时我会收到“网络超时”错误,如果我重新尝试初始化PayPal,则会一次又一次显示此警报。怎么避免这个?如何正确重新启动PayPal?我的代码是:

- (void)initializePayPal {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    [PayPal initializeWithAppID:PP_APP_ID forEnvironment:ENV_SANDBOX];

    while ([PayPal initializationStatus] == STATUS_INPROGRESS) {
        [NSThread sleepForTimeInterval:1];
    }

    switch ([PayPal initializationStatus] ) {
        case STATUS_COMPLETED_SUCCESS:
            NSLog(@"STATUS_COMPLETED_SUCCESS");
            break;
        case STATUS_COMPLETED_ERROR: {
            NSDictionary *responseMessage = [PayPal getInstance].responseMessage;
            NSLog(@"STATUS_COMPLETED_ERROR:%@", responseMessage);

            if ([[responseMessage objectForKey:@"errorId"] integerValue] == 10818) {
                [self initializePayPal];
            }
        }
            break;    
        default:
            break;
    }

    [pool release];
}

2 个答案:

答案 0 :(得分:1)

当我使用ENV_SANDBOX时,PayPal初始化失败当我开始使用ENV_LIVE而不是ENV_SANDBOX时问题解决了

答案 1 :(得分:0)

事实上,你的程序将无法运作。

PayPal.initializePayPal

是一个异步方法,它的do-initialize部分必须在消息循环中运行。因此,在您的代码中,您的while语句将主线程保持从返回事件循环。你需要做的是,当你想在你的UI中使用任何PayPal功能时,离开这个方法去尝试测试状态。给真正的初始化机会。