15

我在恢复已完成的交易时遇到了一些问题。

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

我添加了几个示例中提到的观察者,我尝试添加paymentQueueRestoreCompletedTransactionsFinished并且已经拥有updatedTransactions. paymentQueueRestoreCompletedTransactionsFinished说我有零交易。

我可以购买产品,如果我再次尝试购买,它会阻止我并说我已经使用此代码购买了该产品。

SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier];
[[SKPaymentQueue defaultQueue] addPayment:payment];

我想也许我的捆绑标识符有问题,但这似乎很好,如果不是,购买将无法进行。

我一直在设备和模拟器上尝试这个,但结果相同。此外,如果我使用的是英国或美国商店,也没有什么区别。

我真的很想知道为什么这对我不起作用?

4

2 回答 2

10

尝试这样做并检查数组计数是否也返回零?

- (void) checkPurchasedItems
{
   [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}//You Call This Function

//Then this delegate Function Will be fired
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
  purchasedItemIDs = [[NSMutableArray alloc] init];

  NSLog(@"received restored transactions: %i", queue.transactions.count);
  for (SKPaymentTransaction *transaction in queue.transactions)
  {
      NSString *productID = transaction.payment.productIdentifier;
      [purchasedItemIDs addObject:productID];
  }
}
于 2012-04-12T09:42:24.757 回答
2

根据文档

当您创建要在商店中销售的新产品时,您可以选择是否可以恢复该产品。

所以问题是,您的产品是否配置为允许恢复?

于 2012-04-12T08:34:48.807 回答