I know this is an old topic, but I had problems finding a solution, and I went through some breathtaking trial versions and errors until I found out the solution, so I thought that I would share it here, since I donβt could find him otherwise.
First, make sure that after each transaction you call:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
In my case, it happened that the transaction was not completed and remained in the queue, so even when I switched to another isolated account, it continued to request my old account password.
To fix this, I added:
SKPaymentQueue *queue = [SKPaymentQueue defaultQueue];
for (SKPaymentTransaction *transaction in queue.transactions) {
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
BEFORE I added a transaction observer, that is:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
Besides, in
(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
I added this line of code:
[queue finishTransaction:transaction]
SKPaymentTransactionStateRestored SKPaymentTransactionStateFailed switch. , , .
, , , iPhone, , /, , , . , -.
EDIT: (11/12/15)
, . , , , . , .
, :
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
tearDown ( applicationDidEnterBackground:) , . , , , . , , , .