应用程序内购买自动续订事务还原问题

时间:2011-09-13 06:45:23

标签: iphone in-app-purchase

我正在开发一个用户可以购买自动续订订阅的应用程序。购买部分是正常的,但当用户删除应用程序并尝试恢复他的购买时会出现问题。以下是我写的处理它的代码。

  1. 我给了一个标题为“已经是订阅者”的按钮。当用户点击我拨打以下代码时。

    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];           
    
  2. 这就是我在- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions方法中处理恢复的方法。

            case SKPaymentTransactionStateRestored:
            duration = [strDuration intValue];
            if(transaction.transactionReceipt != nil){
                receipt = [[NSString alloc] initWithData:[b64 dataByBase64EncodeFromData:transaction.transactionReceipt] encoding:NSASCIIStringEncoding];
                [userDefault setObject:transaction.transactionReceipt forKey:@"LastReceipt"];
                [queue finishTransaction:transaction];
                [self callReceiptInfoImpl];
            }
            break;
    
  3. 以下是还原事务完成时的委托方法。

    -(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue{ NSLog(@"COMPLETED TRANSACTION RESTORED"); }

  4. 问题是,当用户点击“已经是订阅者”按钮时,第1步被调用,但第2步从未被调用。最后,我可以在屏幕上看到消息“已完成交易已恢复”。

    如果有人遇到类似问题,请指导。

    感谢您阅读.....

1 个答案:

答案 0 :(得分:0)

  

在您的课程中,您必须实施回调   function paymentQueue:updatedTransactions:

     

此功能将在时间和时间接收有关交易的更新   它是制作的。因为您的交易即使在应用程序发生时也会发生   关闭后,您应该准备好尽快收到这些通知   你打开应用程序。所以最好的地方是初始化它   applicationDidFinishLaunching或等效方法。

来自link