Ответ 1
Вы получаете транзакции SKPaymentTransactionStateRestored
вместо транзакций SKPaymentTransactionStatePurchased
при восстановлении покупок пользователей, отправив сообщение restoreCompletedTransactions
в SKPaymentQueue
.
iOS Покупки In-App: Когда и почему SKPaymentTransactionStateRestored
отправляется обратно как статус транзакции?
Связано ли это с повторяющимся планом подписки?
Вы получаете транзакции SKPaymentTransactionStateRestored
вместо транзакций SKPaymentTransactionStatePurchased
при восстановлении покупок пользователей, отправив сообщение restoreCompletedTransactions
в SKPaymentQueue
.
Общее правило - обрабатывать оба обратных вызова: для покупки и покупки восстановления.
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
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 content:transaction.payment.productIdentifier];
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
- (void) restoreTransaction: (SKPaymentTransaction *)transaction
{
[self recordTransaction: transaction content:transaction.originalTransaction.payment.productIdentifier];
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}