Search Unity

Simple In-App Purchase System (SIS) - Shop solution

Discussion in 'Assets and Asset Store' started by Baroni, Aug 8, 2013.

?

Which billing plugin are you using in combination with Simple IAP System?

  1. Unity IAP

    173 vote(s)
    86.5%
  2. Voxel Busters

    10 vote(s)
    5.0%
  3. Stans Assets

    13 vote(s)
    6.5%
  4. Prime31

    4 vote(s)
    2.0%
  1. benjaminfried2

    benjaminfried2

    Joined:
    May 10, 2020
    Posts:
    1
    Hey Baroni,

    Thank you for making this asset and for being so responsive on the forums. I have a question about setting up Steam Inventory.

    Each time I attempt to make a purchase (on the vertical sample scene or on one of my own), I get this error

    Unity IAP is not initialized correctly! Please check your billing settings.
    UnityEngine.Debug:LogError (object)
    SIS.IAPManager:purchase (string) (at Assets/SimpleIAPSystem/Scripts/IAPManager.cs:393)
    SIS.ShopItem2D:purchase () (at Assets/SimpleIAPSystem/Scripts/ShopItem2D.cs:338)
    UnityEngine.EventSystems.EventSystem:Update () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:385)


    What I have:

    1.Standalone set to "Steam" in the project settings
    2.Numerical product ids that match Steam Store IDS (which match "Item Def Ids" on Steam)
    3. SteamStore "Store Meta" in the "Overrides" section for each product
    3.4 Items uploaded to steam inventory using the JSON template you provided
    4. Working (Shift-Tab) Steam Overlay
    5.Functional Steamworks.net implementation
    6.Working virtual currency when "real money" is switched off

    There are a number of other things I've tried such as:

    1. being more specific with switch case names
    2. Debugging the SteamStore script
    3. Running in Debug mode after building


    I'm not sure what else to try. Any help would be much appreciated.

    Thanks
     
  2. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    Hi @benjaminfried2, thanks for posting here, and for all the details.

    Just making sure that you haven't missed the steps you didn't mention:
    • placing the SteamManager script into your first game scene
    • using your developer account when signing into the Steam app
    • deploying the files at your Steam app location under "\Steam\steamapps\common\<game>"
    • adding the game to and starting from Steam (not Unity editor)
    However, all of the above points should actually be true if the Steam Overlay is already working correctly, so there might be an issue with the products or with retrieving them. I am going to send you a private message with very small package that only makes use of the SteamStore implementation, without Simple IAP System around it. Please try it out and let's see what happens.
     
  3. usmanjavaid16

    usmanjavaid16

    Joined:
    Dec 14, 2015
    Posts:
    9
    Yes we've noticed that and conveyed that but still our client is insisting as he has few examples on AppStore with Cash Games so we're proceeding with that.


    Can we use dynamic links in this case? One of Firebase features

    I configured your scene 05 (Energy) bundle with PayPal but when I try to buy I get the message "Billing is not available".
    I tried using VPN and changing location thinking that it might be linked with location but seems to be same in different locations. Any idea what that could be?

    I have installed Unity IAP as per documentation and ticked enable integration for PayPal. I am attaching a screenshot for reference.
    Debugged where the error message is coming from where I found
    IAPManager line 391

    Code (CSharp):
    1. if (controller == null)
    2.                    {
    3.                        OnPurchaseFailed("Billing is not available.");
    4.                        if (isDebug) Debug.LogError("Unity IAP is not initialized correctly! Please check your billing settings.");
    5.                        return;
    6.                    }
    I am confused why we're checking integration for Unity IAP where I need IAP for only PayPalIs there any additional steps I am missing?
     

    Attached Files:

    Last edited: Dec 19, 2022
  4. usmanjavaid16

    usmanjavaid16

    Joined:
    Dec 14, 2015
    Posts:
    9
    @Baroni just clarifying that attempting to purchase on editor works and I am redirected to PayPal. This message appears when I deploy the app on iPhone through xCode. The app is not currently uploaded on Test Flight or Live.
     
  5. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    Unity IAP lays the ground for PayPal billing since it makes use of Unity IAP store interface classes, so you can use the same callbacks across all stores - that's why it is required for PayPal as well, although it does not do anything.

    Thanks for the screenshots! Your issue might be related to not setting Live client ID/secret in the settings. In the editor the sandbox credentials are used, but when deployed, the live credentials. So not entering them results in PayPal not being initialized at all.

    Any https:// link will work.
     
    usmanjavaid16 likes this.
  6. usmanjavaid16

    usmanjavaid16

    Joined:
    Dec 14, 2015
    Posts:
    9
    Baroni Thanks for your prompt response,
    I tried entering the same values as SandBox into the project settings for testing on the device but it resulted in the same error message.
    Using development, debug says:
    IAPManager reports: PurchaseFailed. Error: Billing is not available.
    Unity IAP is not initialized correctly! Please check your billing settings.

    Here's the screenshot.
    Unity 2020.3.14f1
    Device iPhone X
     

    Attached Files:

    Last edited: Dec 20, 2022
  7. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    @usmanjavaid16 the credentials for Sandbox do not work for Production, the environments have a different URL and are completely separate. You have to create Production users and credentials too.
     
  8. usmanjavaid16

    usmanjavaid16

    Joined:
    Dec 14, 2015
    Posts:
    9
    I am new to PayPal. As per my understanding Sandbox accounts are used to test purchases and production for real transactions.
    Now how to create production users and credentials? I want to test purchases on my device but I don't want to test it with real transactions.
     
    Last edited: Dec 20, 2022
  9. Sheyk2022

    Sheyk2022

    Joined:
    Oct 15, 2017
    Posts:
    26
    Olá @Baroni
    Consegui atualizar o SIS no meu projeto. Mas não estou conseguindo construir meu jogo porque estou recebendo esses erros no console... Como posso resolver isso?

    Sempre que tento construir o jogo, recebo cancelamento com esses erros no console...
     
    Last edited: Dec 20, 2022
  10. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    That's correct, but the Unity editor is using Sandbox (that's where you test) and Production on real devices. This article describes how to get production credentials - there should be a live toggle on the developer.paypal page to switch environments.
     
    usmanjavaid16 likes this.
  11. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    @Sheyk2022 please remove the screenshot showing asset source code on this public forum. Do not post snippets of source code in text or screenshots here.

    I can't follow what you have done exactly because you mixed old, new SIS and Unity IAP versions in the past. But "androidStore" does not exist anymore, you have to change that reference in the ReceiptValidatorService script to "appStore".
     
  12. Sheyk2022

    Sheyk2022

    Joined:
    Oct 15, 2017
    Posts:
    26
    Desculpe! Já removi as capturas de tela. vou tentar isso aqui...
     
  13. Sheyk2022

    Sheyk2022

    Joined:
    Oct 15, 2017
    Posts:
    26
    Hi man, I have a question please. Why playfab extension is not available in recent version of SIS @Baroni
     
  14. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
  15. dave_oak

    dave_oak

    Joined:
    Oct 7, 2015
    Posts:
    26
    Hi, I have a problem with Unity IAP for Android.

    I cannot tick the "Enable Integration" checkbox for Unity IAP. It says "Package Imported: OK". The checkbox appears enabled but won't change state.

    I am modifying an app that currently uses Unity IAP directly, to add PayPal support for WebGL builds (this works). I am now trying to build for Android and use IAP for Google Play Store.

    Thanks for any guidance you can offer.

    I have Unity 2021.3.15f1, IAP 4.5.2 and SIS 5.2.2
     
  16. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    Hi @dave_oak,

    so you are clicking on the checkbox but it won't get enabled? I have heard of this before and it seems to be a regression with the UI in Unity. Could you try to click on and around the checkbox until it gets highlighted in blue, then press Enter?
     
  17. dave_oak

    dave_oak

    Joined:
    Oct 7, 2015
    Posts:
    26
    Great, thanks. That didn't work directly but did prompt me to try using the keyboard. A combination of tab and space works no problem.
    I also managed to get the mouse entry working intermittently by changing the width of the property panel, but it's not consistent. Mousing over the checkbox always highlights it, but clicking isn't reliable.
    My machine is a 2020 Mac Mini (silicon) if it helps.
     
    Baroni likes this.
  18. usmanjavaid16

    usmanjavaid16

    Joined:
    Dec 14, 2015
    Posts:
    9
    Hello @Baroni
    Can we dynamically change the price of the product? If yes, how?
     
  19. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    Hi, product prices are fetched from the App Stores, so you have to change them there (e.g. Apple App Store, Google Play etc.). If you enabled "Fetch" on your product in the SIS Project Settings, the localized price is displayed too.

    Or do you mean with PayPal?
     
    Last edited: Jan 4, 2023
  20. dave_oak

    dave_oak

    Joined:
    Oct 7, 2015
    Posts:
    26
    I've got a query about the configuration. I have 4 products in one category (all consumable). For the WebGL build I want them to use PayPal but on iOS and Android builds I want to use IAP. Is there a way to configure this? At the moment it is using PayPal on all builds. Thanks!
     
  21. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    The "Billing Provider" setting in SIS Project Settings is a global variable, so selecting PayPal there will indeed affect all platforms. You could either:
    • Duplicate the category and its products, but give each product a different ID since they need to be unique. In the category override, on the PayPal group, add Google Play & Apple App Store and disable "Available". On the mobile group, add and disable PayPal. This would make the PayPal category available on all platforms, except Android & iOS, and vice-versa.
    • You could write an OnPreprocessBuild editor script that when building for Android or iOS, it disables the "Billing Provider" setting on the category (on the IAPSettings asset).
     
    Last edited: Jan 4, 2023
    dave_oak likes this.
  22. usmanjavaid16

    usmanjavaid16

    Joined:
    Dec 14, 2015
    Posts:
    9
    I meant PayPal. Can I just modify the IAPSetting scriptableObject in runtime and prices will be updated without any further steps?
    I have created a product just modifying the realPrice and the reward in runtime.

    Update: I tried doing this and it works initially but then later on PayPal or SIS kind of caches the price for a particular product ID.

    For-example: I did a sandbox transaction with product id add_custom_dollar with a price of $4 and then tried changing the value and reward according to $20 and it worked as well.
    Now after multiple attempts of changing it to $3, it seems to be $20 even when I am changing the price and reward. It appears to be cached somewhere.

    Update 2: Now what I noticed is that if I change the price to $27 and reward accordingly and stop the unity project. play again and change the value to $26 and buy then in PayPal I will see $27 which was what the value was initially of scriptableObject. So even after changing the value, it does not recognize the updated value but what was stored initially when App started.
     
    Last edited: Jan 5, 2023
  23. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    @usmanjavaid16 where are you modifying the ScriptableObject? At initialization in Awake, the products and prices are handed over to Unity IAP which is then used when purchasing them later on. Changing the prices after initialization will therefore have no effect.

    The "old / previous" value remaining in the ScriptableObject is by design, because if you are modifying them in the Unity Editor, the values will persist to disk. This will not be the case in a deployed build. See here to read more about this.

    For modifying prices at runtime on platforms other than mobile, I usually recommend disabling the "Auto Initialize" checkbox on the IAPManager prefab. Then, you have two choices:
    • download the current prices from a remote server and set them on the ScriptableObject
    • have your own script with hardcoded values, and set them on the ScriptableObject
    After you're done, call IAPManager.GetInstance().Initialize() to continue with the regular workflow.
     
  24. fujitrace

    fujitrace

    Joined:
    Jan 1, 2023
    Posts:
    2
    I can not use Simple IAP because of following error.
    Plaese tell me how to fix them.

    upload_2023-1-5_22-18-14.png
     
  25. fujitrace

    fujitrace

    Joined:
    Jan 1, 2023
    Posts:
    2
    I can not use Simple IAP because of following error.
    Plaese tell me how to fix them.
    upload_2023-1-5_22-42-31.png
     
  26. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    @fujitrace you've double posted, this was a mistake I guess? You are seeing this error most likely because you have a class named "JSON" in your project which does not use its own namespace. It is very bad practice to not use namespaces, so I would recommend adding one for your existing JSON class.

    As an alternative, you could go into the DBManager script at the lines mentioned and write "SimpleJSON.JSON.Parse" instead of just "JSON.Parse".
     
  27. Gametyme

    Gametyme

    Joined:
    May 7, 2014
    Posts:
    618
    Anyone using this with steam?
     
  28. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    There are several people using the Steam or Steam & PlayFab integration successfully. Just yesterday I troubleshooted Steam setup issues with someone and finally got it working for him.
     
  29. makaka-org

    makaka-org

    Joined:
    Dec 1, 2013
    Posts:
    1,026
    I noticed that https://flobuk.gitlab.io/validator/docs/ is unreachable from Russia without VPN.

    So if a user from Russia purchases a subscription or product (at least on the App Store, users can do it for now) using your server validator service, then validation will work?
     
  30. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    @makaka-org Good question. The documentation pages are hosted by GitLab, which seem to block requests from Russia following US regulations.

    The Receipt Validator Service on the other hand is hosted by Cloudflare, mainly located in the US too, but not blocking requests from Russia according to their latest official statement. I have quickly checked a few apps running the Service and even in an app with thousands of purchases every month, there was not a single one coming from Russia. Meaning, either some use App Store accounts in a different country, or the App Store blocks the purchase attempt. I guess you would want to check with a sandbox purchase, which uses the same servers and technology internally.
     
  31. makaka-org

    makaka-org

    Joined:
    Dec 1, 2013
    Posts:
    1,026
    Russia's App Store still supports payments with the internal balance of some Mobile Network Operators, so the payments are not completely blocked.
     
  32. Gushmeister

    Gushmeister

    Joined:
    Apr 30, 2018
    Posts:
    51
    Hi @Baroni . I made a new approach and it looks like the Playfab-Integration is working!

    What I now want to know is, how can I make items to be not buyable? Let's say I've got around 40 different skins, but don't want to make them all at once to be buyable, have only 10 of them active and change every week, which 10 Skins can be bought. How would I achieve this?

    By the way: If a user bought a skin the week before, he should of course see the item, even if it's not available for other users, but he bought it, so he should have access to it.
     
  33. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    Hi @Gushmeister, I assume your question is directed at how to make items not buyable on PlayFab? Because in Unity, you could set them to "Available = false" in the SIS Project Settings, but that would require an app update which is not what you want I think.

    First, I would suggest having one tab in your shop for available products, and one for purchased products, so you do not mix them (not required but makes more sense UI-wise). You would still include all products in the request to PlayFab, since the response has to include products owned, even though they are currently not available for purchase. So no change here.

    Then, you could use PlayFab's "Title Data" (Engage > Content > Title Data) and add a key with an array of available items. The client downloads the data when logging in with PlayFab (see PlayFab API references on login GetPlayerCombinedInfoRequestParams, you have to include GetTitleData = true). In your shop, iterate over these items and instantiate them under the 'available products' tab. Already owned products should be marked as such correctly after instantiation.

    Get all purchased items from the DBManager and instantiate them under the 'purchased products' tab in your shop. Available but already owned products could be duplicated here, you have to decide if that's ok or what to do with them.

    Note: automatic instantation of categories is basically of no use here since you would want maximum control over whats lands in your shop or not. I guess for automation, you could also have an Azure script with a cron job that updates the Title Data every week.
     
  34. Gushmeister

    Gushmeister

    Joined:
    Apr 30, 2018
    Posts:
    51
    Hi Baroni, thanks for your answer.

    Okay, as you're talking about Title Data, that's an approach I would have done, if what I was looking for wasn't possible. I mean, why didn't Playfab just integrate an "available" variable to allow items to be present.

    I'm not really sure if I understood you right, but in my game, I have the shop, where u buy items completely separated from where I equip them (basically I have only skins in my shop). I'm not sure if the approach I got in my head is the same but wouldn't it work like this: I have a new TitleData String set which tracks available items, something like 1-1-0-1-0-1-0-0-1 and so on, which I split by '-' and save in that array. Every position represents a shop item. Where I have 0, the item isn't available to be bought, whereas 1 means available. In the "badest" situation, hackers could make all items available to buy, cuz they modify that string, but that wouldn't be an armageddon for me. Then in SIS-instantiation I'll add a condition to only instantiate the SIS item, if it's number is present in the array, if not, it won't be instantiated and therefore a normal player wouldn't be able to press a buy-button, cuz there's no prefab to instantiate.

    Would that be the right way?

    And could you maybe share some resources on Sandbox-Testing on Android with me? I found something for iOS and this seems to be pretty easy, but Android looks kinda complicated.
     
  35. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    PlayFab has the concept of catalogs and you can have multiple of them, e.g. a "Catalog 2" with only limited items. It is a lot more complicated to implement than the discussed approach though.

    Yes, as long as you can identify all items by that 1-1-0... string, that would work.

    There's a full guide for Google Play here, just like for the Apple App Store, including how to set up sandbox testing.
     
  36. Gushmeister

    Gushmeister

    Joined:
    Apr 30, 2018
    Posts:
    51
    Do I need to add all Products as well? Cuz I thought this is all managed via Playfab now.

    I mean this:
    "In Google Play's "Monetise > Products > In-app products / Subscriptions" section, add the same products with the exact same product identifier (ID). Consumable and non-consumable products go into the "In-app products" tab, whereas subscription products are in a separate tab. Only active products can be purchased. Note: If you add translations for your products, Simple IAP System is able to display product details in the user’s native language, which naturally increases IAP conversion rates (recommended)."
     
  37. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    @Gushmeister PlayFab cannot access your Google Play app and add all products automatically. You have to add them in Google Play in order to make them available for purchase. PlayFab only talks to the Google Play API then.
     
  38. Benjaben22

    Benjaben22

    Joined:
    Oct 26, 2012
    Posts:
    75
    @Baroni

    So far the product has been working really well for Steam! I'm having one issue however with a user in Brazil

    "Unity IAP is not initialized correctly! Please check your billing settings."

    The other error is:

    "Billing is not available."

    I tried looking around for any kind of region lock, but I'm not seeing anything. Have you run into anything like this?

    No problems anywhere else yet.
     
  39. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    @Benjaben22 Thanks for reporting back and much success with your game on Steam!

    I have not heard of any issues specific to initializing Steam billing in Brazil yet - are you able to confirm that other users located in Brazil run into the same issue, or does this happen only for that single user?
     
  40. Benjaben22

    Benjaben22

    Joined:
    Oct 26, 2012
    Posts:
    75
    @Baroni I haven't had any other users from Brazil purchase anything or report the inability to do so. It could be that they were unable to purchase and just didn't report it.

    I found in the code where it's failing:

    The try/catch block during IAP initialization. There aren't any logs there that are outputting any information. But I might do another build with a bit more information (I was going to see if I could resolve it first without making the user have to jump through a bunch of builds).

    The game uses PlayFab on the back-end and they were able to create an account on PlayFab just fine and log in normally. Steam is up and running. They confirmed they were able to make purchases in other games.


    Code (CSharp):
    1. if (controller == null)
    2.                     {
    3.                         OnPurchaseFailed("Billing is not available.");
    4.                         Debug.LogError("Unity IAP is not initialized correctly! Please check your billing settings.");
    5.                         return;
    6.                     }
    This is the block it's failing on in IAPManager
     
    Last edited: Jan 18, 2023
  41. Benjaben22

    Benjaben22

    Joined:
    Oct 26, 2012
    Posts:
    75
    Oh I think I maybe found the issue? Right now all my prices are in USD. Some regions might require regional pricing.

    Edit: After looking around for a bit, I'm not seeing anything that suggests this would fix the issue.
     
    Last edited: Jan 17, 2023
  42. Benjaben22

    Benjaben22

    Joined:
    Oct 26, 2012
    Posts:
    75
    @Baroni I noticed in your sample you use

    "price": "1;VLV100"

    In steam's documentation it says to use:
    "price_category" : "1;VLV100"

    In my setup I'm doing

    "price": "1;USD099"

    So far no one's had any issues with this... Just wondering if this might be a cause for issue
     
  43. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    @Benjaben22 never heard of that before and unsure how Steam converts fixed pricing like USD099 to local pricing or a pricing tier like VLV100. I am currently in the process of creating a Steam account located in Brazil via VPN to test this. Will report back when I have more details.
     
  44. Benjaben22

    Benjaben22

    Joined:
    Oct 26, 2012
    Posts:
    75
    @Baroni thanks a bunch! I was also going to try that haha. I think Brazil does have some strange rules around gaming though.
     
  45. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    After testing, I have not found any issues with this. I have tried the usual VLV100 as well as USD100, both were converted into local R$ at around R$5.08. So not only did the store initialize correctly with a Brazilian account, but Steam's local currency conversion works as expected too. I'm clueless on how to reproduce this, maybe you would want to follow up with Steam support so they could check this specific user?
     
  46. Benjaben22

    Benjaben22

    Joined:
    Oct 26, 2012
    Posts:
    75
    Thanks for checking this out. The user reported they could make purchases in Brawlhala. I haven't had any others from Brazil reach out to me either. I did add a ton error logs to the build and had them send me there logs and was unable to see any of them (not sure if SimpleIAP filters out logs).

    I'll reach out to Steam and see.
     
  47. Gushmeister

    Gushmeister

    Joined:
    Apr 30, 2018
    Posts:
    51
    @Baroni @benjaben Good luck on fixing this fast, for sure u'll find the bug soon!

    Aside from that I got good news: Managed to make the shop dynamic with Playfab Title Data. It's important to first TryParse the Product ID, if you don't do so, shop items in the category currencies aren't instantiated since they aren't just an ID that can be parsed to int. It works like a charm, I so love your asset. As soon as you get into the code just a little bit, it becomes really really powerful!

    Greetings to everyone
     
    Baroni likes this.
  48. Gushmeister

    Gushmeister

    Joined:
    Apr 30, 2018
    Posts:
    51
    Hi @Baroni
    I could finally test In-App Purchases, and on Android I get this error:
    Exception
    NullReferenceException: Object reference not set to an instance of an object.
    Unity.Services.Analytics.TransactionCurrencyConverter.Convert (System.String currencyCode, System.Double value) (at <00000000000000000000000000000000>:0)
    UnityEngine.Purchasing.AnalyticsAdapter.GenerateRealCurrencySpentOnPurchase (UnityEngine.Purchasing.Product product) (at <00000000000000000000000000000000>:0)
    UnityEngine.Purchasing.AnalyticsAdapter.BuildTransactionFailedParameters (UnityEngine.Purchasing.Product product, UnityEngine.Purchasing.PurchaseFailureReason reason) (at <00000000000000000000000000000000>:0)
    UnityEngine.Purchasing.AnalyticsAdapter.SendTransactionFailedEvent (UnityEngine.Purchasing.Product product, UnityEngine.Purchasing.PurchaseFailureReason reason) (at <00000000000000000000000000000000>:0)
    UnityEngine.Purchasing.AnalyticsClient.OnPurchaseFailed (UnityEngine.Purchasing.Product product, UnityEngine.Purchasing.PurchaseFailureReason reason) (at <00000000000000000000000000000000>:0)
    UnityEngine.Purchasing.StoreListenerProxy.OnPurchaseFailed (UnityEngine.Purchasing.Product i, UnityEngine.Purchasing.PurchaseFailureReason p) (at <00000000000000000000000000000000>:0)
    SIS.IAPManager.Purchase (System.String productID) (at <00000000000000000000000000000000>:0)
    UnityEngine.Events.UnityEvent.Invoke () (at <00000000000000000000000000000000>:0)
    UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at <00000000000000000000000000000000>:0)
    UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchPress (UnityEngine.EventSystems.PointerEventData pointerEvent, System.Boolean pressed, System.Boolean released) (at <00000000000000000000000000000000>:0)
    UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchEvents () (at <00000000000000000000000000000000>:0)
    UnityEngine.EventSystems.StandaloneInputModule.Process () (at <00000000000000000000000000000000>:0)
    UnityEngine.EventSystems.StandaloneInputModule:process()

    What could it be?

    Edit: I See In-App Purchases Service was deactivated in Unity, trying again now with "ON".
     
    Last edited: Jan 22, 2023
  49. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,265
    @Gushmeister Unity Services is a separate package, or actually two (Core + Analytics) now, which is described on the install instructions. Are those packages available in your project? It seems the error is on converting the product price in the TransactionCurrencyConverter.Convert method - not sure what is expected there though. What's your product price as defined in the IAP Settings editor, a string or number?

    Could you state the version of Unity Services Core + Unity IAP you are using so I could try to reproduce?
     
  50. Sheyk2022

    Sheyk2022

    Joined:
    Oct 15, 2017
    Posts:
    26
    Hi @Baroni
    can you let me know where I can download an older version of SIS? i need to update my game to the current version of SIS. (The SIS which is present in my project is older than version 4.3.7)

    I bought the current version of SIS. So can you provide me with a previous version of SIS, it could be 4.3.7...