IAP iOS some user fail to trigger onSuccess listener but get charged

IAP iOS some user fail to trigger onSuccess listener but get charged



I received a lot feedback from user that they cant complete the non-consumable IAP but get charged on their payment method.

I cant reproduce the issue as tested on sandbox / download from AppStore.
Sometime it just has slightly delay but in the end still success trigger the listener.

There are still users that can complete the IAP without problem.

I try to suggest them with several way but non can solve the problem

  1. restart device
  2. restore purchase
  3. repurchase IAP
  4. remove app and reinstall

Before repurchase IAP, i have ask them to make sure have a stable and good connection.
So i have no clue on how to solve the issue, please help.

Thanks !

Project setup
Xcode 10.1
Cocos2d-JS 3.17

v2.4.1.1 onesignal
v2.4.1.1 firebase
v2.4.1.1 iap
v2.4.1.1 googleplayservices

Device model : iPhone SE to iPhone XR.
iOS : 9 to 12.1

Current code init sequence as i read from other post

			onSuccess : function (product) 
				//Purchase success
			onFailure : function (product, msg)
				//Purchase failed
			onCanceled : function (product)
				//Purchase was canceled by user
			onRestored : function (product)
				//Purchase restored
			onProductRequestSuccess : function (products) 
				//Returns you the data for all the iap products
			onProductRequestFailure : function (msg)
				//When product refresh request fails.




did the user got crash or other something unusual, when purchasing


they didn’t mention about this, but they cant restore the purchase even after re-download.

what info do you need from the user? i try if i can get from them.



the product is non-consume?


“type”: “non_consumable”


so, the user purchase non-consumeable item, didn’t get success callback, but get charged on their payment, and they can’t restore by any way.

this is strange.

seem like APPLE take this purchase as failed.


yes, exactly the same issue reported by users.

i try get more details whether they can trigger the failed listener.



I get some info from user.

The IAP purchase issue solved by contacting Apple Customer Service.

Apple verified the transaction exist but something go wrong on the system
Payment has been charged but status remain in "Pending"
After Apple canceled the transaction, user success complete the IAP

So this mean no problem on my code and SDKBOX IAP plugin?

Is there anything we can do to reduce / prevent this issue?
Does any developer facing the same issue on their app too?