Search Unity

  1. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice
  2. Unity is excited to announce that we will be collaborating with TheXPlace for a summer game jam from June 13 - June 19. Learn more.
    Dismiss Notice
  3. Dismiss Notice

[bug] Unity IAP 2.2.5 cannot ConfirmPendingPurchase

Discussion in 'Unity IAP' started by elisaday, Dec 17, 2020.

Thread Status:
Not open for further replies.
  1. elisaday

    elisaday

    Joined:
    Aug 10, 2019
    Posts:
    2
    reproduce step:

    1. Purchase a consumable item A.

    2. In "ProcessPurchase" callback, return "PurchaseProcessingResult.Pending". And request server to validate.

    3. Before server return, kill the game process, then reopen it.

    4. When IAP is initializing, I received the "ProcessPurchase" callback (previous version cannot receive, version 2.2.5 has resolved the bug)。In the callback, return "PurchaseProcessingResult.Pending", and request server to validate again.

    5. After server return, I called "ConfirmPendingPurchase" to finish the transaction.

    6. Try to purchase the same item A, I got PurchaseFailureReason.DuplicateTransaction error.


    Thank you.
     
    Last edited: Dec 17, 2020
    makaka-org likes this.
  2. one-up

    one-up

    Joined:
    Mar 22, 2018
    Posts:
    5
    I have the same problem. In my case, I'm using the UDP store, and the message that I get on initialization of Unity IAP at step 4 is:

    I/Unity: Already recorded transaction 0d3c2...
    UnityEngine.Purchasing.PurchasingManager: ProcessPurchaseIfNew(Product)
    UnityEngine.Purchasing.PurchasingManager:OnProductsRetrieved(List`1)
    UnityEngine.Purchasing.JSONStore:OnProductsRetrieved(String)
    System.Action`2:Invoke(T1, T2)
    UnityEngine.Purchasing.UDPBindings:OnInventoryQueried(Boolean, Object)
    System.Action`2:Invoke(T1, T2)
    UnityEngine.UDP.UdpIapBridge:OnQueryInventory(Inventory)
    System.Action:Invoke()
    UnityEngine.UDP.MainThreadDispatcher:Update()


    If I try to purchase the same consumable item (step 6), I get a message
    Purchased Finished. ResultCode: -300, message: invalid operation: iap pack1 needs to be consumed first
     
  3. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    I will look into this.
     
  4. pizzaclubgames

    pizzaclubgames

    Joined:
    Oct 22, 2020
    Posts:
    3
    Something about returning PurchaseProcessingResult.Pending for a transaction on app restart (a transaction that didn't complete correctly during a previous play) causes issues for me. Once the asynchronous call goes out to our game server like a normal transaction, I return Pending, but when my server call returns, the PurchaseEventArgs product is reset and my transaction id is blank. So I receive a "Unable to confirm purchase; Product has missing or empty transactionID" instead of completing the transaction successfully. Normal purchases work fine, just re-attempted transactions on app restart see this issue.
     
  5. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    We are working on this issue at high priority, and should be included in the next release. It appears that ConfirmPendingPurchase in IAP 2.2.5 may be silently failing. The current ETA is next week.
     
  6. Deleted User

    Deleted User

    Guest

    @JeffDUnity3D
    Hi, I'm trying to upgrade UnityPurchasing to 2.2.5 from 1.23.1.

    In my case, I noticed that automatic restoration of non-consumable products which have been successfully purchased may be failed in Android.
    Is it possible to have relation to failure of ConfirmPendingPurchase silently?

    As far as I know, IStoreListener.OnInitialized is called after IStoreListener.ProcessPurchase. In Changelog at 2.2.3, it says as bellow;

    > GooglePlay - `IStoreListener.OnInitialized` is now called after all purchases have been fetched from the store.

    In old version, IStoreListener.OnInitialized is called before IStoreListener.ProcessPurchase, and automatic restoration is succeeded.

    IStoreListener.ConfirmPendingPurchase is required a IStoreController instance, so if IStoreListener.OnInitialized is called after IStoreListener.ProcessPurchase, it is not possible to call IStoreListener.ConfirmPendingPurchase during IStoreListener.ProcessPurchase which may be automatically called from the system.

    I have so far called IStoreListener.ConfirmPendingPurchase during IStoreListener.ProcessPurchase for ensuring to process pending transactions before processing a new item. Is this usage something wrong?
    I tried to call IStoreListener.ConfirmPendingPurchase after IStoreListener.OnInitialized, but nothing happened. Probably, it is main issue discussed in this thread.

    I'd like to confirm just in case although I think IStoreListener.ConfirmPendingPurchase is not be related automatic restoration but it should be used for pending transactions.

    Further, I noticed IPlayGoogleStoreExtensions.RestoreTransaction is supported now, then I tried to call it manually, but nothing happened unfortunately.
     
  7. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
  8. Deleted User

    Deleted User

    Guest

    @JeffDUnity3D
    Sorry, I found out it is my system's bug.

    I have been saved purchasing information using PlayerPrefs so far.
    It is only work correctly after IStoreListener.OnInitialized is called because the instance of PurchaseEventArgs via IStoreListener.ProcessPurchasing is compared to the result of IStoreController.products.WithID(string).
    The IStoreController reference is not set until IStoreListener.OnInitialized is called, so comparison is failed.
    In result, saving purchasing information using PlayerPrefs is failed and it just looks like not be restored; nevertheless automatic restoration is succeeded actually.

    Anyway, thank you for quick reply and useful information!
     
    JeffDUnity3D likes this.
  9. DimaHubenkoGamepoint

    DimaHubenkoGamepoint

    Joined:
    May 16, 2018
    Posts:
    20
    @JeffDUnity3D Hello, we are currently facing the same problem but on ios. ProcessPurchase is launched multiple times instantly for the same product. We also had the problem on android (with UnityPurchasing 2.0.0) but after upgrading to 2.2.5 it got fixed. But ios is not.
    Xcode 12, Unity 2019.4.10f1

    It is something about this:

    ## [2.2.4] - 2020-12-03
    ### Fixed
    - GooglePlay - `IStoreListener.ProcessPurchase` called more than once for any purchase which is not consumed, i.e. when `ProcessPurchaseResult.Pending` is returned, by fixing a race-condition.
     
  10. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    The issue we are addressing is not "multiple times instantly", that sounds like it might be an issue in your code. Please share your purchasing script.
     
  11. DimaHubenkoGamepoint

    DimaHubenkoGamepoint

    Joined:
    May 16, 2018
    Posts:
    20
    @JeffDUnity3D We have this log in our IStoreListener:
    Code (CSharp):
    1.         public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
    2.         {
    3.             var productInfo = string.Format("{{ id: {0}, receipt: {1}, transactionID: {2} }}",
    4.                 e.purchasedProduct.definition.id, e.purchasedProduct.receipt, e.purchasedProduct.transactionID);
    5.             GPLog.Log(LogType.Purchasing, $"{nameof(ProcessPurchase)}() {productInfo}");
    And here is the result. Transaction 100000754661848 is called multiple times. We return pending during ProcessPurchase, verify purchase on our server and call ConfirmPendingPurchase. As you may see confirm is called after all these ProcessPurchase are already triggered:
    upload_2021-1-15_10-48-9.png

    upload_2021-1-15_10-48-38.png

    upload_2021-1-15_10-49-2.png

    upload_2021-1-15_10-49-28.png

    upload_2021-1-15_11-2-14.png
     
  12. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    @DimaHubenkoGamepoint This is expected with the current issue as discussed in this thread, we are working on it.
     
  13. DimaHubenkoGamepoint

    DimaHubenkoGamepoint

    Joined:
    May 16, 2018
    Posts:
    20
    @JeffDUnity3D Since I got a connection I have a question:
    What is the idea of the verification flow when the receipt is not verified by the server? By now we have no other option except of "ConfirmPendingPurchase". So user gets his money taken anyway...

    Last image on this page has only point 8 which is ConfirmPendingPurchase...
    https://docs.unity3d.com/Manual/UnityIAPProcessingPurchases.html
     
  14. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Correct, there are no other options at this time, other than local receipt validation https://docs.unity3d.com/Manual/UnityIAPValidatingReceipts.html
     
  15. jeanbaptistelai

    jeanbaptistelai

    Joined:
    Jul 17, 2017
    Posts:
    13
    Hi, just want to report that we also experienced the ConfirmPendingPurchase issue on our end.

    Our test case consists of making a IAP purchase using a live build of our app that uses 2.1.1, then the second time we try purchasing the same IAP the duplicate transaction error will trigger.

    So we're trying to push a fix on our next app update using 2.2.5 but our tests indicates that ConfirmPendingPurchase doesn't always clear orphaned transactions. We get a log saying: "Unable to confirm purchase; Product has missing or empty transactionID"
    We got kinda desperate and even tried using FinishAdditionalTransaction to no avail and even trying to call ConfirmPendingPurchase on all product on our init.

    Glad to know that we weren't the only one with issue and that theres a fix on the way. Thanks!

    Quick question though, when OnPurchaseFailed is triggered, are we suppose to call ConfirmPendingPurchase on it anyways?
     
    makaka-org likes this.
  16. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Agreed, we are working on this one at highest priority. There is no need to make any additional calls when you receive OnPurchaseFailed.
     
  17. densy07

    densy07

    Joined:
    Nov 27, 2013
    Posts:
    34
    I have the "ConfirmPendingPurchase" issue when using 2.2.6 and 2.2.7
     
    Olegleg and makaka-org like this.
  18. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    The issue has been addressed, you are likely seeing something else. Please provide details and specific steps to reproduce and the code that you are using, and how you are debugging.
     
  19. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    I have almost the same problem in 2.2.7

    Reproduce steps:

    1. Purchase a consumable item A.

    2. In "ProcessPurchase" callback, return "PurchaseProcessingResult.Pending". And request server to validate.

    3. Return "Error" from server and keep purchase in Pending, then reopen App.

    4. When IAP is initializing, I received the "ProcessPurchase" callback. In the callback, return "PurchaseProcessingResult.Pending", and request server to validate again.

    5. After server "Success" return, I called "ConfirmPendingPurchase" to finish the transaction.

    6. Try to purchase the same item A, I got PurchaseFailureReason.DuplicateTransaction error and "Already recorded transaction".

    7. Every next app reopen I got "Already recorded transaction" on startup.

    8. Try to purchase the same item A, I got PurchaseFailureReason.DuplicateTransaction error and "Already recorded transaction".

    9. After app reinstall, I received the "ProcessPurchase" callback and got the same behavior from Step 4.

    It looks like Consumable item becomes Non-consumable, because App tries to purchase it every app reinstall, doesn't allow to purchase it again and also I got "acknowledgementState":1,"consumptionState":0 in recipe validation on server.

    But e.purchasedProduct.definition.type is Consumable. So the product is still Consumable, but doesn't consumes after "ConfirmPendingPurchase" on startup.

    Also, if I change "PurchaseProcessingResult.Pending" to "PurchaseProcessingResult.Complete" on "ProcessPurchase" after problem detected, the problem still exists.

    So "ConfirmPendingPurchase" and "PurchaseProcessingResult.Complete" doesn't consume product in Pending state after App restart.
     
    Last edited: Mar 30, 2021
  20. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
  21. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    @JeffDUnity3D

    I cannot find PurchaseProcessingResult.Pending or ConfirmPendingPurchase in the Sample IAP Project.

    Code (CSharp):
    1. public PurchaseProcessingResult ProcessPurchase (PurchaseEventArgs e)
    2.         {
    3.             var product = Content.Find(x => x.PurchaseId == e.purchasedProduct.definition.id);
    4.             ShopManager.PurchaseItem(product, e.purchasedProduct.receipt);
    5.             return PurchaseProcessingResult.Pending;
    6.         }
    In ShopManager.PurchaseItem() I send request to server to validate receipt. If everything OK, call ConfirmPurchase().

    Code (CSharp):
    1. public void ConfirmPurchase(string productId)
    2.         {
    3.             try
    4.             {
    5.                 Product product = controller.products.WithID(productId);
    6.                 controller.ConfirmPendingPurchase(product);
    7.             }
    8.             catch (Exception e)
    9.             {
    10.             }
    11.         }
    If there is error from server, shows error modal and do nothing.

    Everything works great if the receipt is validated successful on server and called ConfirmPurchase().

    But if there is a error and ConfirmPurchase() not called, problems appears on the next app launch, as described before. After successful validation on server after App relaunch and calling ConfirmPurchase(), I can't buy this product again, because it was not consumed. And it will not be consumed after App reinstall too. The product starts to be like Non-consumable.

    Also, if I change PurchaseProcessingResult.Pending to PurchaseProcessingResult.Complete on ProcessPurchase after problem detected for test issue, the problem still exists. The product is not consuming, I can't buy new one, and ProcessPurchase will be called every App reinstall.
     
    Last edited: Mar 30, 2021
  22. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Where are you calling ConfirmPendingPurchase? You are not handling the catch condition. If the product is still in Pending, you can't purchase again. You must either return Complete from ProcessPurchase OR call ConfirmPendingPurchase. You can compare to v1 of the Sample IAP Project. And your statement is not clear "If there is an error.." and ConfirmPendingPurchase is not called, the behavior you describe is expected.
     
  23. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    I call ConfirmPendingPurchase if receipt is validated on the server.
    If not (or no answer from server), the product will be kept in Pending state.
    After app relaunch ProcessPurchase is called by Unity IAP and I try to validate receipt on server again.
    If receipt is not validated again (or no answer from server), Unity IAP will call ProcessPurchase again after every app relaunch, as expected.
    But if the the receipt is validated, I call ConfirmPendingPurchase and the problems starts:
    I cannot buy this product again.
    Unity IAP will not call ProcessPurchase after app relaunch and will log "Already recorded transaction".
    Unity IAP will call ProcessPurchase after app reinstall.
    Unity IAP starts to work, as this product is Non-consumable and will not consume it.
     
    Last edited: Mar 30, 2021
  24. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Yes, as you've already stated. When you can, please answer my questions and follow my suggestions. Debug.Log the product information prior to ConfirmPendingPurchase and handle the catch. Test with IAP 3.0.1
     
  25. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    Code (CSharp):
    1. public void ConfirmPurchase(string productId)
    2.         {
    3.             try
    4.             {
    5.                 Product product = controller.products.WithID(productId);
    6.  
    7.                 Debug.Log("Confirming purchase " + JsonConvert.SerializeObject(product));
    8.                 controller.ConfirmPendingPurchase(product);
    9.             }
    10.             catch (Exception e)
    11.             {
    12.                 Debug.Log("ConfirmPurchase: FAIL. Exception during confirm. " + e);
    13.             }
    14.         }
    Debug.Log of the product information prior to ConfirmPendingPurchase is normal. It consist or correct product's definition, metadata, receipt and more. Product's "type":0, that is Consumable. Nothing wrong in Debug.Log.
    After app relaunch no error catched. Only Already recorded transaction XXXXX logged, as described before.
    Will test with IAP 3.0.1 soon.
     
  26. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Already recorded transaction in the logs is expected.
     
  27. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    But I can't buy this product again while getting Already recorded transaction in the logs.
    Now I bought another consumable product without server's error. And there is no Already recorded transaction after App relaunch in the logs for it. Only for broken purchase. So, in my opinion Already recorded transaction is expected only for Non-consumable products. Only for broken consumable purchases I get Already recorded transaction on App relaunch and can't buy them again.
     
  28. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Ensure you are not changing the product type after you create a product. We had issues in previous versions with ConsumePendingPurchase just as you describe, so I'm interested in your 3.0.1 tests.
     
  29. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    I didn't changed the product type after creation. To be sure, created a new product now and tested. The problem is the same.
    Also tested on 3.0.1. Unfortunately, the problem is the same. ConfirmPendingPurchase after App relaunch doesn't consume product.
     
  30. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    It's working for me. I purchased a consumable (gold50) and returned Pending from ProcessPurchase. In ProcessPurchase, I saved a copy of the product. I then press the Confirm button to call ConfirmPendingPurchase. I can then purchase gold50 again. I also restarted the app with the transaction in Pending. I received the ProcessPurchase again, as expected (and returned Pending). I then called ConfirmPendingPurchase and was able to purchase gold50 again. We have customers using this successfully also. I'm using IAP 3.0.1 and the code from the the Sample IAP Project v1 https://forum.unity.com/threads/sample-iap-project.529555/ The difference I see is that you are getting your product from your controller, I'm getting it from the ProcessPurchase arguments, can you test similarly?

    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
    {
    test_product = args.purchasedProduct;
    ...
     
    Last edited: Mar 31, 2021
  31. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    Changed to args.purchasedProduct in ConfirmPurchase. Unfortunately, the problem is the same.
     
  32. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
  33. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    I replaced my code with the Sample project. Unfortunately, the problem is the same. But, I need some code improvements to be sure.
    I am using Unity 2019.4.22f1, product was purchased from Google Play, Android device (tested on another too). Maybe, it can help to catch the problem.
     
  34. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Please provide the device logs with the additional Debug.Log statements and show the corresponding Debug.Log statements in your code, please attach both. Also, if you don't use ConfirmPendingPurchase and just return Complete from ProcessPurchase as a test, does it work correctly then?
     
  35. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    Now my code is the same as v1 of the Sample IAP Project. The only difference is that I add my products in builder OnInitShop.
    This Google account has 2 broken consumable purchases.
    Here are the logs after App reinstall and after App relaunch:
     

    Attached Files:

    Last edited: Apr 1, 2021
  36. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    @Oleg131 Are you returning Complete or Pending? The logs show Complete. I don't see any errors in the logs for OnPurchaseFailed, are you able to purchase again? Also show where you add the product in your code in OnInitShop (generally an On* method implies a callback/event). Also test with a new consumable product, and return Complete (don't use ConfirmPendingPurchase)
     
  37. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    Yes, If I don't use ConfirmPendingPurchase and just return Complete from ProcessPurchase as a test, it doesn't correctly work after App relaunch/reinstall.
     
  38. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    You were able to create a new product that quick? That was fast! Please reply on the rest of my message too. Also, please send me a private message and add me as a Tester. I'll provide my test email, I'll need the opt-in URL. You are downloading via Google Play for your testing, correct? You will need to do that one time, then subsequently you can side-load direct via USB.
     
  39. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    The previous answer was for your previous message.

    I am returning Complete. I am not able to purchase again.

    Code (CSharp):
    1. public void OnInitShop(InitShop data)
    2.         {
    3.           if (IsInitialized())
    4.           {
    5.               return;
    6.           }
    7.  
    8.           Content = data.IAPContent;
    9.  
    10.           var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
    11.  
    12.           foreach (var item in Content)
    13.           {
    14.               var id = item.PurchaseId;
    15.               builder.AddProduct(id, ProductType.Consumable);
    16.           }
    17.  
    18.           UnityPurchasing.Initialize (this, builder);
    19.         }
    I will be back, when test with a new consumable product.
     
  40. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Please add me as a tester. We are making progress, the issue is not with ConsumePendingPurchase. The first two products may be in a bad state, that is why I'm suggesting a new product. Also, my test would help :) https://docs.unity3d.com/Manual/UnityIAPGoogleConfiguration.html (the links and the screenshots are a bit outdated, please ask for clarification if you need) Also, add me here so I don't get charged

    GoogleLicenseTesting.png
     
  41. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    Unfortunately, I can't add you as a tester. It is not testing app.
    I tested a lot and finally caught the problem.
    Everything worked great with the new product, until I started to make real requests to my server.

    How to reproduce the problem:
    1. BuyProductID;
    2. On ProcessPurchase send receipt to server;
    3. Optional: In server validate receipt and give the player product, if everything is ok;
    4. Important: Acknowledge purchase to avoid refund after 3 days. (I am using .NET and Google.Apis.AndroidPublisher.v3 - Purchases.Products.Acknowledge());
    5. On ProcessPurchase return PurchaseProcessingResult.Pending;
    6. Close the App;
    7. Wait a minute;
    8. Relaunch App and Consumable product becomes Non-Consumable and all problems, listed before, appears.

    Also, I know, that PurchaseProcessingResult.Complete automatically acknowledges purchases. But I should Acknowledge purchase on server to fight frauds, because it is online game and player's inventory is stored on server.

    Real situation:
    1. Player BuyProductID;
    2. The request sent to server;
    3. The app crashed;
    4. Player relaunch and can't buy this product again. And also (optional) will get Failed Purchase Modal every app relaunch.

    I tested more, and think, that the problem with the promo codes is almost the same, because the product, redeemed with promo code, is acknowledged immediately by Google, but not consumed.

    Unity IAP doesn't consume acknowledged products.

    Please, fix this problem.
     
    Last edited: Apr 3, 2021
  42. diego-vieira

    diego-vieira

    Joined:
    Mar 27, 2015
    Posts:
    32
    Just to you guys know, I'm facing the exact same problem as Olegleg mentioned.

    I am trying to Acknowledge the purchase on server, right after I delivery the products to the players (since I delivery via database, I Acknowledge on my webserver) and them the Unity IAP always says the player already owns the product and he can't buy the item again. I am also using a .net webserver and Google.Apis.AndroidPublisher.v3
     
    Olegleg likes this.
  43. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    As always, simplify the problem. As a test, simply return Pending (always) from ProcessPurchase and see if you can purchase a consumable a second time. Once you have confirmed that the basics are working, ONLY THEN do you add additional logic.
     
  44. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    You should ALWAYS test all your apps this way. Not sure what you mean it's not a "testing app": It also confirms that IAP is properly configured end-to-end https://docs.unity3d.com/Manual/UnityIAPGoogleConfiguration.html
     
  45. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    As I wrote in my previous message, all the basic are working good.
     
  46. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    I tested my app. The in apps is working. Testing and real money too. The problem was found later, as described before.
     
  47. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Yes, and I have mentioned, I am not able to reproduce and there is no action we plan to take at this time. Why is your app crashing? Please provide the device logs, and add me as a tester. I'm willing to help you test, but you need to add me as a tester first.
     
  48. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    Simplify: Unity IAP doesn't consume acknowledged products.
    Please, fix this problem.
     
  49. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Yes it does, and it works for me. Please follow my recommendations.
     
  50. Olegleg

    Olegleg

    Joined:
    Mar 30, 2021
    Posts:
    49
    What recommendations? I don't understand. I wrote, how to reproduce the problem with server validation. Please, test it.
     
Thread Status:
Not open for further replies.