我已经实现了应用内支付,就像苹果文档中关于IAP的描述一样,但当我在沙盒模式下尝试它们时,'transactionState‘永远不会更改为SKPaymentTransactionStatePurchased。(它会永远留在SKPaymentTransactionStatePurchasing上。)
有人知道哪里出了问题吗?
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
NSLog(@"%ld", transaction.transactionState);
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[self restoreTransaction:transaction];
default:
break;
}
}
}
- (void)completeTransaction:(SKPaymentTransaction *)transaction
{
[self recordTransaction:transaction];
[self provideContent:transaction.payment.productIdentifier];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
- (void)failedTransaction:(SKPaymentTransaction *)transaction
{
if (transaction.error.code != SKErrorPaymentCancelled) {
[NSAlert alertWithError:transaction.error];
}
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
- (void)restoreTransaction:(SKPaymentTransaction *)transaction
{
[self recordTransaction:transaction];
[self provideContent:transaction.originalTransaction.payment.productIdentifier];
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
- (void)recordTransaction:(SKPaymentTransaction *)transaction
{
NSLog(@"Record Transaction...");
// ToDo: Implement 'recordTransaction'.
}
- (void)provideContent:(NSString *)productIdentifier
{
NSLog(@"Provide Content");
// ToDo: Implement 'provideContent'.
}发布于 2012-04-27 17:17:44
在不同的机器上测试了相同的代码。它可以在我的开发机器上正常工作。看起来这不是我的准则。
https://stackoverflow.com/questions/10243978
复制相似问题