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. seansteezy

    seansteezy

    Joined:
    Nov 28, 2013
    Posts:
    122
    Any idea why my items are being listed twice? Using Stan's Assets, unity 5.4.2p4. Everything else is working great! Thanks in advance for any advice!

    *edit - it seems to be pulling from the Play Store IAP name/description and the Simple IAP name/description. Also - they show one has a currency symbol ($) and the other does not - the first one is from Simple IAP and the second is from Play Store listing:



    *edit - #7 My shop items are duplicated.
    Make sure that the IAPManager prefab is only placed in the first scene of your app and that you start your game from there.

    Well, I only have one scene with a multitude of modal windows. IAPManager is there. Same with the shop manager. Could that cause a conflict?
     
    Last edited: Nov 22, 2016
  2. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
  3. seansteezy

    seansteezy

    Joined:
    Nov 28, 2013
    Posts:
    122
    Yeah I saw that too late, but then again, I have that setup properly I believe, one scene, one IAPManager prefab and one IAPShopManager, do they have to be in separate scenes?
     
  4. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    @seansteezy #4 in the FAQ. :p

    You can try with two scenes to be absolutely sure, but it should work correctly on the device for both cases. If you are on an old version, try updating, otherwise could you send a repro project to our support email?
     
  5. Oblix

    Oblix

    Joined:
    Dec 4, 2014
    Posts:
    7
    Hello , I've got SimpleIAP intergrated into my build also using Stan's Assets , I've uploaded a beta to the store to test out IAP. The billing section works fine (charged 0.99 to my account) , however when using subscriptions I've just used the logic shown in the example setup video to test whether the subscription is purchased. or not. It throws error 1003 when I launch the app saying "error refreshing inventory , querying owned subscription". Basically my problem is that , if I subscribe to content and press back , the app responds correctly. However if I uninstall , and then reinstall WHILE still having active subscriptions , my tests using DBManager.isPurchased tell me that my subscription is not active , even though I subscribed initially.

    Any Help ?

    Thanks
     
  6. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Hello @Oblix, please see this post about the message 1003 - it should read querying owned items, not subscriptions. As you can see in the answer by Stan, this means that the product is actually purchased on Google's side but Simple IAP System is not aware of it after the reinstall. This is to be expected because you cleared the internal database this way. Did you press the restore button in-game to get all transactions verified again?
     
    Last edited: Nov 24, 2016
  7. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Hi all and a late Happy New Year!

    I would like to share some development details for Simple IAP System which are on the roadmap for this year. First of all, the next version (3.3) will be the last version in the 3.x cycle and will add JSON import/export functionality for the IAP Settings Editor window. This is because the next major update (4.0) might break backwards compatibility for the IAP Settings window, meaning you will be able to just import your old JSON file, instead of setting them up again.

    Then, there are also changes in the asset structure:
    - version 3.3 will be the last version supporting Unity 4.6/4.7. This probably does not affect mobile devs, because you would not be able to release a game on Android/iOS with Unity 4.x anyway due to missing support for newer devices.

    On the roadmap for version 4.0:
    - the minimum required Unity version will be Unity 5.3.
    - will require the use of Unity IAP. Reason for this is that support for third party billing plugins (such as Stans Assets, Voxel Busters) are built on top of the Unity IAP store class. A big advantage here is that the current billing packages are gone - you can simply select the billing plugin you would like to use in an editor window and mix it with other implementations. For example, using Stans Assets for Android, Voxel Buster for iOS and Unity IAP for the rest.
    - drops support for Prime31 billing plugins as they do not have any advantages over Unity IAP.
    - adds optional support for PayPal & Facebook payments on Standalone & WebGL, by integrating PlayFab.
    - the integration of PlayFab also means supporting Cloud Save for all IAP data, real and virtual. You can manage player inventories in their dashboard, modify virtual currencies, and have them play over multiple devices without losing purchases. This is currently in development.
    - since PlayFab supports Steam payments as well, this will possibly be added in the future (if I manage to get an approved Steam App ID for testing).

    I am proud to say that version 4.0 will have the biggest feature list ever, adding even more billing platforms which are unique to this asset, and making it a real cross-platform experience for in-app products. I hope you are excited as well! Feel free to ask any questions here, or via email.
     
  8. Fronne

    Fronne

    Joined:
    Sep 25, 2014
    Posts:
    112
    Hi Baroni,

    I tried for three hours to Upgrade() from 3.1.1 to 3.3 but was unable to do so, I got a lot of Errors starting with
    "Operator `!=' cannot be applied to operands of type `SIS.IAPType' and `UnityEngine.Purchasing.ProductType" when I followed the instructions from FAQ #13 What's the best way to upgrade to a new version of Simple IAP System?

    When you upgrade to a new version, you probably want to keep your IAPManager prefab (saves products in the IAP Settings editor) and the IAPListener script (your product callbacks). On the import prompt, uncheck both of them and overwrite the rest.

    I had to copy and paste my IAP items list to be able to continue...
    This means the IAPListener script is changed and you should update FAQ #13 I suppose?

    Some of the Errors I got:
    • Operator `!=' cannot be applied to operands of type `SIS.IAPType' and `UnityEngine.Purchasing.ProductType
    • The JSON Export didn't work, you can just select a folder but no file is written...
    • Virtual coins are not displayed in the Buy Button, "real money" is displayed poperly but clicking the button doesn't work, nothing happens, no message, no errormessage too (Had this problem before)...
    • I got a Samsung namespace error after reimporting UnityIAP...
    • Some other namespace related errors in the same file...
    • After removing SIS completely to try againg from scratch Unity ends with a crash: The file 'MemoryStream' is corrupted! Remove it and launch unity again!
    I tried three times to Upgrade() but same thing happens...
    I couldn't find any Info about 3.3, the latest info at your site (Release Notes): Latest Version: 3.2.2
    I had a similar problem with Virtual coins not displayed trying to Upgrade() from 3.1.1 to 3.2.1:
    https://forum.unity3d.com/threads/s...sis-shop-solution.194975/page-21#post-2787798

    I want to released our App by the end of next week so I quit trying for the time being...
    Can you tell me if the "UnityIAP: fixed iOS platform overrides not being recognized" is a fix for 3.1.1 or later?
    Do you think it's safe to release the App with 3.1.1 and Unity 5.3.2(p2) or should I Upgrade to SIS 3.3 first?

    Cheers,
    Franco Palmieri - Fronne
     
  9. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Hi @Fronne,

    first of all, did you run the billing setup for Unity IAP under Window > Simple IAP System > Plugin Setup again after importing the newest version? The full process is - (1) import new SIS, (2) unselect IAPManager prefab (not the script) and IAPListener script while doing so, (3) run billing plugin setup. You have to do that, else you're stuck with the default (non-billing) files. I hope that solves most if not all of the issues you are facing. If it doesn't, please report back and provide the following information:

    Not sure what you mean by that. Copy and paste the IAP items list - why? Where to?

    Please state the script and code line this is coming from.

    You have to select a top-level folder and just click to select it, not open it.

    Probably due to not running the billing setup again.

    You can see here that support for Samsung was added in Simple IAP System 3.2. Probably you've used a combination of old Unity IAP files and/or old SIS files.

    Updates on the Asset Store are not approved immediately. Since posting about a new version on our website does send an email to all subscribers of that thread immediately, we do that just after the update was approved by Unity. This time the update went live during last night and I didn't have the time to post about it yet.

    It's a one-liner fix for 3.2 and later. This did not occur before 3.2.

    Looking at the changelog there haven't been any critical fixes to Unity IAP since 3.1.1.
     
    Fronne likes this.
  10. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    The product types depend on the billing plugin you are using. Non-consumable virtual does not exist for Unity IAP, yet you mention using Unity IAP classes and selecting virtual products in the IAP Settings editor at the same time, which isn't even possible - see the attached screenshot. However, I have found an issue in the export functionality in Unity IAP to be fixed later today.

    I've read over your post, but there is clearly something else going on. Upgrading to a new version of Simple IAP System shouldn't be that difficult as described here. It's really a lot of text to read though, maybe you could send me a non-upgraded version of your project via email and I'll record a video on what do to for you.
     

    Attached Files:

    Last edited: Jan 21, 2017
    Fronne likes this.
  11. Fronne

    Fronne

    Joined:
    Sep 25, 2014
    Posts:
    112
    Hi Baroni,

    The virtual coins are displayed properly now, don't know what happend before, very weird...

    Export to JSON you mean? I can't export, it does nothing...

    I think your'e right! I did some Upgrades of SIS in the past and there was never a problem...
    I LOVE this Asset, it's one of my favorites...

    I just deleted two of my posts because it was to confusing and I dont want to confuse anybody else...

    Thanks but my project is over 2.7 GB in size, I can mail it if your mailserver allows the size or upload it to my server where you can download it if the problem stays but right now I got it working except for the ISamsungAppsConfiguration error but I don't need Samsung Apps Support any time soon...

    I will create two Builds for both iOS and Android to do some SandBox testing, if that's OK (it should be fine now) I will focus on publishing our App first, it was supposed to be released in december...

    I'm fine for now, thanks a lot for your time and patience, I will come back on this soon...

    Have a nice weekend,
    Cheers!
    Franco Palmieri - Fronne
     
    Baroni likes this.
  12. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    A fix for JSON export in the Unity IAP package has been released just now. As an additional note: the export creates two new files, SimpleIAPSystem_IAPSettings.json and SimpleIAPSystem_Currencies.json at the folder destination specified. That's also the main reason for selecting a folder after pressing the 'Export to JSON' button, instead of entering a single file name. When importing settings into Simple IAP System again, the same folder (containing both files) need to be selected.
     
    Fronne likes this.
  13. Fronne

    Fronne

    Joined:
    Sep 25, 2014
    Posts:
    112
    I finally figured it out now, there's still one problem Upgrading to 3.3. My original IAPListener script is from late december 2015, v3.0.1. I kept this file with all Upgrades in the past. The error I got is related to this I think (and hope)...

    SIS1.jpg

    All other problems came because Unity's UnityPurchasing plugin was Outdated, I didn't even remember installing the plugin and want to share this in case somebody got similar problems. To solve this, UPDATE the plugin and everything works fine again! I tested it in a live SandBox enviroment on both iOS and Android...

    SIS3.jpg

    It took me almost TWO DAYS to figure it out but SIS 3.3 really rocks!!!

    Cheers!,
    Franco Palmieri - Fronne
     
    Last edited: Jan 22, 2017
  14. Fronne

    Fronne

    Joined:
    Sep 25, 2014
    Posts:
    112
    I just noticed a new date was added at the Asset Store but the SIS Version Number is the same:
    Version: 3.3 (Jan 22, 2017) Size: 1.9 MB

    Is this the one with the fix for JSON Export?

    Cheers,
    Franco Palmieri - Fronne
     
  15. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    For Unity IAP, this line should be
    Code (csharp):
    1. if (item != null && obj != null && obj.type != ProductType.Consumable)
    Yes, that contains the JSON export fix - no other changes.
     
    Fronne likes this.
  16. RoyalCoder

    RoyalCoder

    Joined:
    Oct 4, 2013
    Posts:
    301
    Hi @Baroni ,

    I migrated my project for iOS and now I'm getting this error:
    Assets/SimpleIAPSystem/Scripts/IAPArticle.cs(43,24): error CS0246: The type or namespace name `IOSProductTemplate' could not be found. Are you missing an assembly reference?

    Why? Thanks!
     
  17. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    @D0R1N you've probably using a new version of Stans Assets. They changed the IOS billing classes as you can see in their changelog. You have to update SIS as well.
     
  18. pako

    pako

    Joined:
    Nov 21, 2012
    Posts:
    111
    Hi,

    I ported my game from Android to Windows UWP (desktop app on Windows Store). The game has currently limited visibility in the Windows Store for testing purposes, and all IAPs prices are set to Free to facilitate testing.

    Even though I have enabled "Fetch" for all IAP products in the IAP Settings, this doesn't seem to apply, i.e. after I download the game from the Windows Store, the prices display as set in IAP Settings, instead of '0' or 'Free'.

    Is this happening because they are set to Free, or is it something else?
     
  19. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Hi @pako, are you sure that the store controller returned all products along with their correct meta data? If so, what's the 'price' meta data returned for your free product? You can also check that it's not a store issue by setting a price for a product instead of free, then checking if that is displayed correctly.
     
  20. pako

    pako

    Joined:
    Nov 21, 2012
    Posts:
    111
    Where can I find the meta data?

    I'll try setting a price for a product, but there's validation/certification involved for all changes and it will take some time to process. So, in the mean time I can check the meta data.

    By the way, even as the system is right now, I can click on the price button, and the purchase -for free- completes properly.
     
  21. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    So it connects to the store properly, at least!

    If you are using Unity IAP, then have a look at the OnInitialized method within IAPManager. From there, access the IStoreController > Products > MetaData > localizedPriceString.
     
  22. pako

    pako

    Joined:
    Nov 21, 2012
    Posts:
    111
    I am using Unity IAP. I'm not sure if I'm doing the right thing:

    I placed a break point inside OnInitialized in IAPManager, started the game in the Editor, and when the break point was hit, I inspected the value of controller/products/all/[0]/metadata/localizedPriceString = "$0.01" (same for all other products [1], [2], etc).

    Am I doing this right, or is there something else I need to do.

    If I'm doing the right thing, it seems that although after OnInitialized runs the price of each item = "$0.01" (could be considered free), the price displayed on the buttons is the price of the IAP Settings (no fetch).

    One more thing I noticed is that while OnInitialized runs in the editor play mode ShopManage.instance = null, so ShopManager.OverwriteWithFetch doesn't get called.

    Anyway, this may be normal behaviour for Editor Play mode, but I'm not sure what I have to do.

    I also tried running the Master version after building for Windows Store. This is the version from which I created the app package that I uploaded to the store.

    I got similar behaviour as above, except that in the localizedPriceString the $ sign was replaced by € and this time it was = to exactly zero (not 0.01), i.e. controller/products/all/[0]/metadata/localizedPriceString = "€0.00". Again ShopManage.instance = null, and the price displayed on the buttons is the price of the IAP Settings (no fetch).

    I might be wrong about this, but it seems to me that the correct data is being fetched from the store, but it's not properly displayed on the buttons.

    UPDATE: The problem seems to come from IAPManager.OnSceneLoaded(). When it's called the ShopManager cannot be found,
    i.e. after line 190 executes GameObject shopGO = GameObject.Find("ShopManager");
    shopGO = null
     
    Last edited: Feb 9, 2017
  23. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    That's the expected behavior. Unity IAP returns test values in the editor and fetching obviously won't work in that environment because you actually can't fetch from anywhere.

    So the question is: after the scene gets loaded (IAPManager OnSceneLoaded method), which happens before the billing initialization, why is the ShopManager instance still null. It searches for a 'ShopManager' prefab in the scene - do you have one / did you rename it / any other clues by debugging?
     
  24. pako

    pako

    Joined:
    Nov 21, 2012
    Posts:
    111
    I have not renamed ShopManager, and everything runs fine on Android. It seems that the problem is only with Windows Store.

    I have IAPManager on a Bootstrapper scene, which is the first scene that loads. There's no game play, no shopping and no SceneManager in this scene. Just some initializations. The Bootstrapper scene then loads a play-mode selection scene. Again, no game play, no shopping and no SceneManager in this scene either.

    Only after a play-mode is selected does a scene load with a SceneManager present. This configuration has worked fine so far, at least on Android.

    I'll try some more debugging tomorrow.
     
  25. pako

    pako

    Joined:
    Nov 21, 2012
    Posts:
    111
    I found where the problem is!

    First of all, the ShopManager instance is found properly. Last night I was misled to think otherwise, since OnSceneLoaded is called 3 times before a scene with a ShopManager instance gets loaded (so much for working late at night...)

    So, ShopManager.OverwriteWithFetch is called properly, but the problem is in IAPItem.Init. For some reason localizedDescription is set to an empty string. I have double checked, and the descriptions on the Windows store definitely contain some text.

    Consequently, the method returns before setting the correct price, per the 'if' condition in IAPItem line 186.

    To test it, in IAPItem line 186, I removed the condition string.IsNullOrEmpty(descr) and this time the prices were properly set to €0.00 but obviously the descriptions were all empty.

    So, the problem is why product.metadata.localizedDescription returns an empty string, even though it's not empty. This also explains why it works in Android and not in Windows Store.
     
  26. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Thanks for debugging this @pako! Wow, an empty description is unexpected. I will refactor the Init method so that it doesn't stop executing when it finds empty strings, but just doesn't set them instead. Unfortunately that's the only thing I can do here.

    Not setting/having a localizedDescription is an issue of Unity IAP - it would be great if you could check that you are running the latest version of that (which could contain a fix already), and if you do, please submit a bug report to Unity and let me know the bug tracker # so I can vote on it.
     
    pako likes this.
  27. pako

    pako

    Joined:
    Nov 21, 2012
    Posts:
    111
    Yes, I'm running the latest version of Unity IAP. So, I filed a bug report. The issue doesn't appear in the issue tracker yet, so it can't be voted. I guess it's under moderation, or they will try to reproduce it before publishing it on the tracker. When it's in the issue tracker yet, I'll post a link here.
     
    Baroni likes this.
  28. Oblix

    Oblix

    Joined:
    Dec 4, 2014
    Posts:
    7
    Hi , I've read through the FAQ and help guide and done some digging in the thread but am still stumped.

    Assets/SimpleIAPSystem/Editor/IAPEditorExporter.cs(37,34): error CS0117: `JSON' does not contain a definition for `Parse'

    Not sure how to get around this.
    I'm sure its something simple however since this error fires on install I'm unable to even setup SimpleIAP.

    Guidance appreciated.
     
  29. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Hi @Oblix, could it be that you have multiple JSON serializers in your project, one that has the same class named 'JSON'? Having the same class multiple times is an issue because the compiler doesnt know which to use.

    The solution is to put everything into namespaces (like done for this asset). For a quick fix, you could also open the IAPEditorExporter at that line and explicitly replace JSON with SimpleJSON.JSON.
     
    zeb33 likes this.
  30. Oblix

    Oblix

    Joined:
    Dec 4, 2014
    Posts:
    7
    Thanks for the advice , thats twice now you've helped out spot on. Going to leave app store review 5 stars , thanks again.
     
  31. Baraff

    Baraff

    Joined:
    Aug 16, 2014
    Posts:
    255
    @Baroni I am wanting to have some items unlock as the player progresses past levels. What is the best approach for this?
    I have set up the requirements but I can't see an easy way to check whether an item's requirements have been met.
    Eg. I can check whether an item is purchased by something like this: if(DBManager.isPurchased("item1"))
    but how can I check if this item is unlocked something like if((DBManager.isUnlocked("item1"))
    I don't want these items to cost anything, just unlock and be available.

    Thanks
     
  32. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Hi @Baraff,

    requirements would be the way to go. The example scenes also have a sample about that in the 'Custom' section, where an item gets unlocked when the player reached level 1 or 2. For checking requirements, you would use DBManager.isRequirementMet(IAPManager.GetIAPObject("your product name").req).

    The user would still need to 'purchase' them in the shop though, even if they cost nothing, depending on the product type (selectable or not selectable). You could either set them to selected or purchased directly then, but a better alternative would be to show a message that sends them into the shop.
     
  33. Baraff

    Baraff

    Joined:
    Aug 16, 2014
    Posts:
    255
    Thanks, that pretty much did what I was after.
     
  34. QuadMan

    QuadMan

    Joined:
    Apr 9, 2014
    Posts:
    122
    Hi @Baroni ,
    I'm having duplicated item problem, I saw you fixed the bug but I'm still having problem...
    I'm usng latest one. (v3.3)
    I didn't edited any scripts, there is only one ShopManager and one IAPManager in scene..
    Here's the video.


    Please Help me :(
     
  35. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Hi @Reality-Gaming-Studio,

    if you are placing both the IAPManager and ShopManager in the same scene, there might be a bug depending on the Unity version used. Did you see this thread on our website forums, maybe it helps too?
     
  36. QuadMan

    QuadMan

    Joined:
    Apr 9, 2014
    Posts:
    122
    Oh I didn't saw that, thanks.
     
  37. JesterMaster

    JesterMaster

    Joined:
    Oct 29, 2014
    Posts:
    34
    I noticed that DBManager -class uses DES -encryption on IOS and Android in function Decrypt(string toDecrypt). DES -encryption is not by far secure. DES encryption was broken like 20 years ago. I also noticed that WP8 implementation uses AES -encryption which is by far more secure.I would need at least AES128, AES256 would be nice. You should replace DES -encryption by AES.

    I was wondering could we use your WP8 AES code in Android and IOS platforms? Would this create problems in somewhere else in your code? If we cannot do this what kind of other fixes would be required?

    [removed code]


    So would it work in IOS and Android just deleting all other stuff and just leaving WP8 stuff?
     
    Last edited by a moderator: May 5, 2017
  38. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    @JesterMaster you are posting code of a full method from our asset in a public forum. Please remove it immediately. I'm going to reply to your question soon - it's midnight here in Germany.
     
  39. JesterMaster

    JesterMaster

    Joined:
    Oct 29, 2014
    Posts:
    34
    sorry for that :(
     
  40. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    @JesterMaster so, let me start by explaining why there are two different encryption methods in this asset (thanks to the anonymous moderator for removing the code snippets!):

    - AES is only being used on Windows Phone because the DES algorithm is not available there. If it would be available in the WP8 namespace, I would have used it on that platform too. Why the favour of DES over AES, you might ask?
    - AES is far more secure, that's correct. As such, the algorithm is so complex that even Apple can't look into your encrypted data easily. That's why AES requires submitting an Encryption Registration (ERN) to the US Bureau of Industry (BIS), in addition to a self-written letter stating how you are using the encryption and what you are storing there once a year. You can find more information on their FAQ page (search for "AES"). This is a paperwork burden that I didn't want to force on customers of Simple IAP System.
    - But DES is listed on the FAQ page above requiring an ERN too? Yes, but since our encryption key length for DES is not exceeding 64 bits, you are qualifying for an exemption (search for "category 5 part 2" on that page). So all of the above bureaucracy does not apply to you anymore.

    A bit on the background of using encryption in SIS: it has never been designed to be 'secure' in the first place. Security in apps is something you will never achieve, also it is not worth the effort either. You can find a lot of threads about this topic on the internet or on this forum as well. Hackers will always find ways to crack your app, be it by decrypting your save files, modifying the memory directly, or simply distributing a hacked save file for others to download. Encryption in SIS is being performed to make the save file unreadable, to introduce the lowest hacking barrier possible, protecting against simple hex editor manipulation. For every app that needs to be 'secure' you would not store data on the device under any circumstances, as data you give to the hands of users is never secure, but use a fully authoritative gameplay server instead.

    I hope this clarifies your question. If it does, I would be happy if you could also revisit your review on the Unity Asset Store.
     
  41. QuadMan

    QuadMan

    Joined:
    Apr 9, 2014
    Posts:
    122
    Hi,
    Can I ask you how to use serverUrl(RemoteDownload) one?
    I can't find tutorial about it.
     
  42. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Hi @Reality-Gaming-Studio, please see chapter 9 in the documentation PDF included. There is also mentioned where you can find the example configuration in your project.
     
    QuadMan likes this.
  43. QuadMan

    QuadMan

    Joined:
    Apr 9, 2014
    Posts:
    122
    eh, there's no upload remotefile from code?
    sorry if I bother you.
     
  44. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    No, there is no upload from code because I don't want to ask for your FTP credentials in SIS. Also, each server and file permission settings are different. You will have to upload your remote file manually to your server.
     
  45. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Support question in next major SIS update:
    Does anyone still use Voxel Busters or Stans Assets for billing? If so, why?
     
  46. Paradoks

    Paradoks

    Joined:
    Oct 13, 2009
    Posts:
    436
  47. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Hi @Paradoks, thanks for your interest. I'm currently wrapping up the release and am in the process of doing final tests, documenting the new code and writing setup guides. I'm targeting a release date in about two weeks to end of the month.
     
    christougher likes this.
  48. acr1378

    acr1378

    Joined:
    Dec 4, 2014
    Posts:
    76
    We are struggling to get UnityIAP to work with autorenewable subscriptions. The issue is retrieving a fresh receipt every billing cycle to check if the user has auto-renewed or cancelled the subscription. It is unclear to me if this requires server-side validation (which some people have claimed) or if you can retrieve a fresh copy of the receipt when the app opens, validate it locally, and check the new expiration date.

    I don't see much documentation along the lines of subscription implementation on Simple IAP's website. Can it be used for auto-renewable IAP's?


     
  49. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    I guess you are targeting iOS, as that's the only platform requiring fresh receipts for subscriptions. On Google Play, you could just check whether a product is purchased or not, as that's something returned by Google when initializing Unity IAP (although with a delay up to 48 hours since it's cached on the device).

    Validating receipts locally is something you would never do. That's basically giving the user the power to decide whether he wants to purchase your product to begin with, or just simulate the purchase with hacking apps. You absolutely need to verify receipts which are changing on an external server, that sends the receipt to Apple/Google, gets a result and then forwards that to your app. Maybe at some point, Unity IAP will support validating subscription receipts in a better way - see this post.

    Simple IAP System does support subscriptions on Google Play and iOS. It's not our focus or main selling point, however several customers are using our server-side receipt validation script in live apps. Our server-side validation is not included in the Asset Store package, as it requires a slightly complex setup (your own server, obviously) that we sold separately on our website as a service. That's not the case anymore though, and we are giving it away for free in exchange for your SIS Asset Store purchase invoice.
     
  50. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,264
    Hello all!

    I'm proud that after working 6 months on this, I can finally announce the new 4.0 update is live on the Unity Asset Store!



    As others like to call it, this is the biggest update for Simple IAP System to date. Not only does it add Facebook support, but also PayPal payments and Oculus in-app purchases (including a virtual reality sample scene) as completely new stores - you won't find that in any other billing asset on the Asset Store :)

    Additionally, the newly added PlayFab integration allows for cloud save, player management, remote catalogs and receipt validation. Note that the integration is still under active development - you can find more details in the integration guide linked above.

    If you would like to see detailed release notes with screenshots for this release, you can follow this link, where each feature is explained with some additional notes. Otherwise, below is a summary on what changed. Since so much has changed in this release, even after days of QA done, there could be bugs or documentation issues. Please provide feedback here, in our forums or via email if anything is unclear, or just tell me what you think about the new features!

    Happy developing!

    Summary
    • NEW STORES: Facebook (Unity IAP), Oculus (Rift & GearVR), PayPal (via PlayFab). See the store guides on our forums for instructions.
    • added VR example scene (VerticalVR) for in-game purchasing on Oculus
    • PlayFab integration brings cloud sync support for online games: memory only mode, meaning no IAP data is stored on the device. This requires an active internet connection at all times!
    • added server side receipt validation using PlayFab: "lite" mode supports validation only (no other PlayFab features required)
    • added automatic tracking of consumable products in PlayerData
    • added usageCount for consumable products to define custom use count
    • added currency product type that adds the defined amount on purchase
    • added ShowDatabaseEditor for displaying currently stored player data
    • added possibility of "standalone" IAPItem without using shop prefabs: you can drag an IAPItem in the scene and give it a productId manually
    • rewrote shop item updating to be more performant, adding automatic shop updating e.g. for single-scene apps with shop in background
    • replaced downloadable RemoteConfig with PlayFab's item catalog: introduce product sales without app update, works on all platforms
    • replaced 'restore' product with separate button in each shop scene: there is a new 'Button - Restore' prefab and UIButtonRestore script
    • fixed ClearDatabaseEditor not working without entering runtime
    • fixed shop items duplicating with IAPManager & ShopManager in scene
    • renaming of some DBManager methods for consistency
    • restructure of billing plugins: all plugins are written on top of Unity IAP - therefore Unity IAP is now a required plugin. No more separate billing plugin packages to import, this is being handled with platform defines instead, allowing for several combinations of billing plugins on different platforms.
    • removed support for SmartLocalization as it has been abandoned
    • removed support for Prime31 billing plugins
    • minimum required Unity version: 5.6.x

    Upgrade notes:
    - Export your products in the IAP Settings Editor before upgrading. Re-check your currency products for the new currency type and also your platform overrides since their format has changed. Remove any custom code that can now be handled with the currency type (adding currency on purchase) and usage (adding PlayerData on purchase).
     
    julianr and ilmario like this.