0

此处适用于 iOS 的 PayPal 移动支付库的文档 指出,您有两个用于初始化库的选项。选项 1 是:

“在需要时在主线程上初始化 PayPal 对象。每次调用 getPayButtonWithTarget 方法之前初始化库。这个实现很简单,因为它使用单线程编程模型。initializeWithAppID 调用是阻塞的,所以你的应用程序等待初始化完成。
要使用此方法,您可以使用一行代码: [PayPal initializeWithAppID:appID];"

但是,每当我在主线程上调用此函数时,我都会返回STATUS_INPROGRESS. 我别无选择,只能手动休眠,直到状态变为STATUS_COMPLETED_SUCCESS.

是什么赋予了?

4

1 回答 1

1

您可以
[PayPal initializeWithAppID:appID]在 的主线程中调用ViewController,但您需要等待 2-3 秒Paypal才能初始化信息,然后单击按钮进行支付。(如果您使用示例
[[PayPal getPayPalInst] getPayButtonWithTarget:self...];,您将看到按钮最初禁用,仅在 1-2 秒后启用(变为黄色)。如果您想
- (IBAction)simplePayment{}从主线程调用,则必须创建后台线程。类似线程:iPhone PayPal初始化失败

-(void) viewDidAppear:(BOOL)animated {
   [super viewDidAppear:animated];
    [PayPal initializeWithAppID:@"APP-80W284485P519543T" forEnvironment:ENV_SANDBOX];
    [NSThread detachNewThreadSelector:@selector(checkInitStatusAndPay) toTarget:self withObject:nil];
}

-(void) checkInitStatusAndPay {


    while (TRUE) {
        PayPalInitializationStatus status = [PayPal initializationStatus];
        NSLog(@"status %u", status);
        if(status == STATUS_COMPLETED_SUCCESS) {

            [self performSelectorOnMainThread:@selector(simplePayment:) withObject:nil waitUntilDone:NO];
            break;
        }
    [NSThread sleepForTimeInterval:2];
    }
}

- (IBAction)simplePayment:(id)sender {

.... 
    [[PayPal getPayPalInst] checkoutWithPayment:payment];
}
于 2013-03-28T06:54:24.530 回答