Unity IAP doesn’t consume consumable acknowledged purchases.
I am using up to date (Google Issue Tracker) Method: purchases.products.acknowledge on the server to acknowledge purchases.
I know, that PurchaseProcessingResult.Complete automatically acknowledges purchases. But I should Acknowledge purchase on the server side to fight frauds, because my game is online game and player’s inventory is stored on the server.
Acknowledged consumable product starts to behave as Non-consumable in Unity IAP, because App doesn’t allow to purchase it again and tries to purchase it every app reinstall.
How to reproduce the problem:
- BuyProductID;
- On ProcessPurchase send receipt to server;
- Optional: On the server validate receipt and give the player product, if everything is ok;
- Important: Acknowledge purchase to avoid refund after 3 days. (I am using .NET and Google.Apis.AndroidPublisher.v3 - Purchases.Products.Acknowledge());
- On ProcessPurchase return PurchaseProcessingResult.Pending;
- Close the App;
- Wait a minute;
- Relaunch App and Consumable product becomes “Non-Consumable” and all problems, listed before, appears.
What is not working as expected:
- BuyProductID - ProcessPurchase - PurchaseProcessingResult.Pending - Purchases.Products.Acknowledge() on the server - Relaunch app - ProcessPurchase - PurchaseProcessingResult.Complete
- BuyProductID - ProcessPurchase - PurchaseProcessingResult.Pending - Purchases.Products.Acknowledge() on the server - Relaunch app - ProcessPurchase - PurchaseProcessingResult.Pending - ConfirmPendingPurchase
And after this two ways, the player’s account become “broken”. He can’t buy this product again and this product will ProcessPurchase every app reinstall
And also,
What is not working as expected:
- Redeem promo code in Google Play - Google automatically Acknowledge - Open App - ProcessPurchase - PurchaseProcessingResult.Complete
- Redeem promo code in Google Play - Google automatically Acknowledge - Open App - ProcessPurchase - PurchaseProcessingResult.Pending - ConfirmPendingPurchase
- Redeem promo code in app - Google automatically Acknowledge - ProcessPurchase - PurchaseProcessingResult.Pending - Relaunch app - ProcessPurchase - PurchaseProcessingResult.Complete
- Redeem promo code in app - Google automatically Acknowledge - ProcessPurchase - PurchaseProcessingResult.Pending - Relaunch app - ProcessPurchase - PurchaseProcessingResult.Pending - ConfirmPendingPurchase
The player’s account becomes “broken” too, because the product, redeemed with promo code, is acknowledged immediately by Google, but not consumed.
It is the same issue: Unity IAP doesn’t consume consumable acknowledged purchases.
More about these problems here:
Please, fix this problem.