So due to a bug in our backend clients weren’t able to confirm the transaction, but for some reason Google Play still charges while the transaction remains in pending, I don’t know if that has been always the way it worked, but as far as I can remember the whole point of keeping the transaction in pending was to do the validation in the backend and then when everything is okay confirm the transaction, or am I wrong?
You would need to call ConfirmPendingTransaction and pass in the product to finalize the transaction. Can you provide the device logs during app start and IAP initialization? There is more information here How To - Capturing Device Logs on Android . You would want to confirm the transaction in your game before unlocking the product. Not sure about the associated Google billing process, you would likely want to contact them.
So it is a bug right? They shouldn’t charge the client if the transaction is still open. I can replicate it in a test enviroment with a transaction still open and every time I enter the app the ProcessPurchase is called trying to validate the transaction, it fails (on purpose), but I can see already the charge in the Google Play console.