Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

We've detected that your app is not acknowledging all in-app purchases... Android IAP Acknowledgment

Discussion in 'Unity IAP' started by AliBuck, Jan 14, 2021.

  1. AliBuck

    AliBuck

    Joined:
    Aug 22, 2020
    Posts:
    30
    I got this issue with Unity IAP 2.2.1. Unity 2020.1.7f1
    I see this on my Google Console Inbox page.
    Screenshot 2021-01-14 at 11.35.13.png
    We've detected that your app is not acknowledging all in-app purchases or subscriptions. Starting with Billing Library 2.0, all purchases must be acknowledged within three days or they will be automatically refunded.
    https://developer.android.com/google/play/billing/billing_library_overview#acknowledge


    Seems like most (almost all of the IAPs) are working well. But sometimes they don't. Two people contacted me recently with this problem. The game takes money but content in the game is not purchased.
    Then, after 3 days, money refunded, players buy the item again and it works.

    I don't really know where to look, because Unity does everything automatically.
    Does anyone have the same problem?
     
  2. JeffDUnity3D

    JeffDUnity3D

    Unity Technologies

    Joined:
    May 2, 2017
    Posts:
    14,446
    This is a known issue that we are working on. Are you using the method ConfirmPendingPurchase by chance?
     
  3. szmt3

    szmt3

    Joined:
    Jan 22, 2021
    Posts:
    5
    I'm also having trouble with many purchases going into refund.
    Do you mean that if I use ConfirmPendingPurchase I won't have this problem?
    Is this going to be fixed in the next version of Unity IAP 2.2.1?
     
  4. JeffDUnity3D

    JeffDUnity3D

    Unity Technologies

    Joined:
    May 2, 2017
    Posts:
    14,446
    No, but you do need to upgrade to IAP 2.2.6 where this issue is addressed.
     
  5. szmt3

    szmt3

    Joined:
    Jan 22, 2021
    Posts:
    5
    I updated to IAP 2.2.6, but everything is refund since the end of December still.

    Is this a bug that affects all people using Unity IAP 2.2.1? Is there any other reason for this?
     
  6. JeffDUnity3D

    JeffDUnity3D

    Unity Technologies

    Joined:
    May 2, 2017
    Posts:
    14,446
    Yes, it won't fix previous purchases, only new ones.
     
  7. szmt3

    szmt3

    Joined:
    Jan 22, 2021
    Posts:
    5
    I have updated the app, IAP is 2.2.6.
    I tried to make a purchase myself, but it was refunded; before late December it was processed normally.

    What is the cause?
    All other purchases are still being refunded. I'm at a loss.

    Unity 2019.4.18
    UnityIAP Button
    UnityIAP 2.2.6
     
  8. John_Corbett

    John_Corbett

    Unity Technologies

    Joined:
    May 17, 2019
    Posts:
    151
    Hello @szmt3 ,

    Can you give us more details please! We'd like to help you investigate.

    Which version of com.unity.purchasing (in Package Manager) do you have installed?

    Also, what kind of product type is causing you problems? A consumable, a non-conusmable or a subscription?

    Please send us any logs you can!

    Thanks
     
  9. JeffDUnity3D

    JeffDUnity3D

    Unity Technologies

    Joined:
    May 2, 2017
    Posts:
    14,446
    Also, please try with IAP 2.2.7 (Asset version) and In App Purchasing library 2.2.2 (Package Manager). We addressed the issue of auto-refunds (hopefully!)
     
  10. szmt3

    szmt3

    Joined:
    Jan 22, 2021
    Posts:
    5
    Thanks for the reply.

    a non-conusmable (Remove ads and add features)
    IAP 2.2.6
    In App Purchasing library 2.2.2



    And I tested again with internal test.
    But was refunded after just 3 days.

    <test version>
    IAP 2.2.7
    In App Purchasing library 2.2.2

    I can send you the URL of the internal test version, but now, I disabled the purchase.
    iOS is well.

    I have contacted the Google play console.
    They replied that it was a matter of Acknowledge.
     
  11. JeffDUnity3D

    JeffDUnity3D

    Unity Technologies

    Joined:
    May 2, 2017
    Posts:
    14,446
    Please provide the device logs. Place Debug.Log statements in all the IAP callbacks and purchasing methods that you are using so we can debug the issue. The logs will contain the Debug.Log statements (and will confirm the IAP version)
     
  12. MacBean

    MacBean

    Joined:
    Jul 16, 2015
    Posts:
    1
    I've been getting a similar issue also where the purchase is completed but then it is getting refunded by google. In the code for IAPListener it shows:

    Code (CSharp):
    1. [code=CSharp]public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
    2.         {
    3.             Debug.Log(string.Format("IAPListener.ProcessPurchase(PurchaseEventArgs {0} - {1})", e,
    4.                 e.purchasedProduct.definition.id));
    5.  
    6.             onPurchaseComplete.Invoke(e.purchasedProduct);
    7.  
    8.             return (consumePurchase) ? PurchaseProcessingResult.Complete : PurchaseProcessingResult.Pending;
    9.         }
    [/code]

    My IAP is a non-consumable so I have 'consumePurchase' set to false. In which case it only responds with Pending rather than complete... which I'm assuming may be my problem. Maybe I am misunderstanding the 'consumePurchase' toggle and should be using true for that?
     
  13. JeffDUnity3D

    JeffDUnity3D

    Unity Technologies

    Joined:
    May 2, 2017
    Posts:
    14,446
    Correct. That toggle will likely be removed in the future. It's not related to product type, but product status. If you leave a product in Pending, it will eventually be refunded.
     
  14. Kennai

    Kennai

    Joined:
    Nov 1, 2018
    Posts:
    27
    Hey Jeff! If I understand correctly, I always must return PurchaseProcessingResult.Complete inside function ProcessPurchase?
    No matter if I have consumable or non-consumable items? It wont consume item then? So old logic changed?
    My old code had similar toggle, and it worked before. But now I get refunded purchases after 3 days with non-consumable items.

    Waiting for answer :)
     
  15. JeffDUnity3D

    JeffDUnity3D

    Unity Technologies

    Joined:
    May 2, 2017
    Posts:
    14,446
    Nothing has changed. Unless you are using server-side receipt validation, you always return Complete from ProcessPurchase, as always.
     
  16. Kennai

    Kennai

    Joined:
    Nov 1, 2018
    Posts:
    27
    Hmm, I spent some time and re-checked IAP demo and other stuff...
    Its really weird. For non-consumable purchases I returned Pending status. and on next app launch IAP automatically invoke ProcessPurchase for that items and I successfully "restored" purchased items in that way.
    This stuff worked great in last year and I had no issues with it.
    This year I updated IAP libraries because I was needed Google Play Billing library v3 and seems, now my old logic is not correct.
    So, sorry for dumb question:
    To remember what player purchased, now I have to locally store some stuff and on app restart retrieve it and "refresh" purchased things?
    I dont have any server side integration.
     
  17. Kennai

    Kennai

    Joined:
    Nov 1, 2018
    Posts:
    27
    So I can loop through all available items and check its receipt inside OnInitialized func?
     
  18. JeffDUnity3D

    JeffDUnity3D

    Unity Technologies

    Joined:
    May 2, 2017
    Posts:
    14,446
    Yes