No TransactionObserver message after App Store IAP

We have the following Problem: We get no message sent to the TransactionObserver when a user makes an inApp purchase in the App Store


We have 2 consumable inApp Products and the App is in the production App Store. Now we have Feedback from our users and one problem is the problem above. The user has done the following steps.


1. He had a credit balance on his that wasn't enough to pay for the IAP.

2. He was routed to the AppStore to create a payment method

3. He created the payment method with credit card

4. He finished the IAP in the App Store

5. He opened our App but the Consumable IAP was not detected, so that our app currency was not incremented


I think this problem is similiar to the problem that promo codes can not be restored for consumable inApp products.

Replies

In the scenario you described your StoreKit will queue two transactions and deliver them in rapid succession to your app. The first will be a 'falied' transaction indicating that the user was not able to complete the transaction based on current credit card data. (This would have been the only transaction if the user chose to cancel the transaction once the credit card is updated - and that why it is queued.) The second will be a 'purchased' transaction indicating that the user ultimately did complete the transaction. Your app needs to handle this double call to updatedTransactions. Does it? One mistake is to removeObserver when a failed transaction is received. In which case, there may be a transaction waiting for an addObserver.

We do not remove the Observer after a failed transaction but we finish the thransaction in the payment queue. Is that right?

That is correct.

Ask the user to send you their emailed receipt from teh App Store indicating they made a purchase. If they send a receipt then figure out how to compensate them and examine your code to be sure it's not your problem. (Don't worry until you get the 3rd such request.) If they do not send a receipt then they are either scamming you or they didn't realize that they did not click something like "Yes, make the purchase" after they updated their credit card information or for some other reason they were not charged.