Search Unity

Introducing Unibill - the cross platform In App purchase plugin!

Discussion in 'Assets and Asset Store' started by Banderous, Jan 16, 2013.

  1. Dreamwriter

    Dreamwriter

    Joined:
    Jul 22, 2011
    Posts:
    472
    Thanks, but when I delete FakeGoogleplayPlugin, I get an error that GooglePlayModule can't find the FakeGooglePlayPlugin class. If I delete GooglePlayModule, I get errors from files trying to access GooglePlayModule. And I assume I would keep getting these errors on down the line as I deleted stuff until I had no more Unibill :)

    And the other people in my company have the exact same version numbers of our game as me, and as is on our server, so the other issue about not being configured for billing is unfortunately not that.
     
    Last edited: Dec 2, 2013
  2. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @Dreamwriter the problem is that file has moved, you should find you have two copies of it. Looks like you're on an old version anyhow, since GooglePlayModule doesn't exist any more either.

    It's frustrating but since there's no versioning support in the asset store it is impossible for me to move or delete files in updates.

    If you import Unibill into a fresh project and compare it to your assets folder you'll see which files should actually be there.

    Regarding the versioning error you're seeing, the only solutions I am aware of are the version code and the signing process.

    If you think you've got these consistent across your build machines, I suggest you take a working APK and a non working APK and unzip both into separate directories, then do a diff to see what's different between them.
     
  3. sonicviz

    sonicviz

    Joined:
    May 19, 2009
    Posts:
    1,051
    x 100.

    Or alternatively if Unibill could implement what SIS has done an create a shop template system that would make it even easier to work with, as well as not having to integrate two packages that may or may not mesh too well.
     
  4. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,267
    We have way more than that on the roadmap ;)
     
  5. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    Virtual products won't be long!
     
  6. langju

    langju

    Joined:
    Jul 1, 2009
    Posts:
    207

    Hi,

    I'm having the same problem with the las unibill version on iOS. the local currency symbol is not displayed. Only a number.

    What is wrong ?
     
  7. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    I can think of no reason on unibills side. I currently away but will dig into it next week.
     
  8. jogo13

    jogo13

    Joined:
    Sep 26, 2012
    Posts:
    19
    Just a suggestion, I think Unibill needs a forum for archiving bug reports/workarounds etc. Something simple like the Finger Gestures forum possibly: http://forum.fatalfrog.com/
     
  9. Dreamwriter

    Dreamwriter

    Joined:
    Jul 22, 2011
    Posts:
    472
    On Android, I'm trying to buy a non-consumable that was previously purchased on a certain account. Unibill seems to be erroring out in the DLL because "Unable to buy item (response: 7:Item Already Owned)", but it isn't setting any accessible errors in the Unity interface based on that, so my code has no idea why the fail callback is failing, so I can't give the item to the player that they already bought. Any idea on how I can tell if the player has already purchased something?

    This is better than the older version of Unibill, though, as that would give a black screen that hangs.
     
  10. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @Dreamwriter you should restore transactions to ensure that users get their non consumable purchases restored. This will be fixed however, such that the product is restored automatically if it is owned but not presently restored (as happens on ios).
     
  11. Dreamwriter

    Dreamwriter

    Joined:
    Jul 22, 2011
    Posts:
    472
    Restoring transactions is unfortunately not something that should ever be done without the player first specifically asking for it, since on iOS restoring transactions requires the player enter their password (we used to restore transactions every game boot, until we realized that was what was requiring the password check). Note that on iOS, purchasing something previously owned will make the system pop up a message about how you already purchased this item, so will now get it for free, and that returns a successful purchase message to Unibill, so the problem is only on Android where it silently sends an error message to Unibill, which doesn't completely handle it.
     
    Last edited: Dec 24, 2013
  12. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    It is true that transactions should not be restored automatically, but the option to restore should be offered to users in the form of a button.
     
  13. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    Unibill 1.2.5 is now available

    1.2.5 contains a critical fix for Windows Phone 8 that may cause your app to be rejected by Microsoft's app review team. Please contact support@outlinegames.com for a unitypackage.
     
    Last edited: Sep 4, 2014
  14. Dreamwriter

    Dreamwriter

    Joined:
    Jul 22, 2011
    Posts:
    472
    Oh yeah, we have that button, but we still need to know if the person is trying to buy something their account already bought, so we can give it to them - it's not guaranteed the player will press the button after installing to a new device. But the way Unibill currently works on Android that's unfortunately not possible, because while the underlying Unibill library knows what happened (it's printing a message about it to the console log), the interface just sends our game a Failed callback with no errors at all.
     
  15. pedro_boombit

    pedro_boombit

    Joined:
    Dec 30, 2013
    Posts:
    6
    I just started using your plug-in and its saved me a lot of trouble! Thanks!

    My game is very memory intensive. I am having an issue where if unibiller is initialized but there is no internet connection, the performance degrades until the game crashes. I don't know if it's from the actual process or the logging.

    Is there a way for me to reduce the time between retries from 1s to, say, 10?
     
  16. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    Last edited: Sep 4, 2014
  17. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    Unibill 1.3.0 is now available, featuring Windows Store 8.1 support!

    Please email support@outlinegames.com with your purchase receipt for an advance unitypackage
     
    Last edited: Sep 4, 2014
  18. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @Dreamwriter the Android repurchasing of an owned non consumable bug is fixed in 1.3.1
     
  19. iStrangler.com

    iStrangler.com

    Joined:
    Oct 30, 2013
    Posts:
    25
    Due to laziness, here my email to alex:

    "Hi alex,
    banderous from unity forum gave me your email adress (propably you are banderous? I'm not sure... :D ).
    I have a problem with the new unibill 1.3 version. If I set up the InventoryEditor, i.e the currency ID, and start the play mode in Unity (4.3.1f1 on a PC with W7) it looks good (even though it doesn't add currency to the currency balance). If I then end the play mode, the currency ID is set back to "Name me!". I even tried to change the IDs of the default currencies, but they also get set back to "gold" and "silver". This could be the reason why the currency balance isn't updating?!

    Am I using the wrong version? I used the download link from the email.

    Banderous wrote this in the forum:
    "Please email alex@ballatergames.com with your purchase receipt for an advance unitypackage "

    Underneath you find my receipt.

    I hope you can help me.
    best regards,
    Dennis"
     
  20. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @Dennis responded via email. Fixed in 1.3.2.
     
  21. Dreamwriter

    Dreamwriter

    Joined:
    Jul 22, 2011
    Posts:
    472
    Thanks for fixing the Android repurchasing bug. I tried to install 1.3.2, though, and I'm getting a null exception in the Inventory Editor, line 146:

    config.AndroidBillingPlatform = (BillingPlatform) Enum.Parse(typeof(BillingPlatform), androidBillingPlatforms[androidBillingPlatform]);

    config is null.
     
  22. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @Dreamwriter that would indicate a problem with your UnibillInventory.json, indicating it hasn't been parsed correctly. Please take a look at it and/or email it to support@outlinegames.com
     
    Last edited: Sep 4, 2014
  23. iStrangler.com

    iStrangler.com

    Joined:
    Oct 30, 2013
    Posts:
    25
    Thanks for fixing the problem. Works like a charm. :)
     
  24. MythicalCity

    MythicalCity

    Joined:
    Feb 10, 2011
    Posts:
    420
    Hi, is there a way to have multiple inventories? For example, on some platforms we do not want to sell the same IAP items, is there a way so that on those platforms we can list a different set of items?

    -JJ
     
  25. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @capitalJmedia you would need to configure a different inventory file and deploy with that file on those platforms.
     
  26. MythicalCity

    MythicalCity

    Joined:
    Feb 10, 2011
    Posts:
    420
    What's the best way to do that? Move the inventory files in-out of the project before you make a build for a specific platform? or keep them in the project but rename them as you need them? Or is there any spot in the Unibill code that I could add platform dependent #if statements to choose different inventory filenames?
     
  27. JohnnyA

    JohnnyA

    Joined:
    Apr 9, 2010
    Posts:
    5,041
    @Banderous did you receive my PM from a few days ago?
     
  28. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    Probably easiest to load different inventories with ifdefs. The place to do so is the RemoteConfigManager.
     
  29. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    Just discovered a load of private messages, I've now turned on email notifications.
     
  30. Dreamwriter

    Dreamwriter

    Joined:
    Jul 22, 2011
    Posts:
    472
    Any idea why our game crashes when using the new Unibill?
     
  31. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    Last edited: Sep 4, 2014
  32. Dreamwriter

    Dreamwriter

    Joined:
    Jul 22, 2011
    Posts:
    472
    Well, I'm talking about the null exception we got:

    You said to email you our UnibillInventory, which I did. I just tried installing 1.3.2 again, and noticed it's first getting a null exception in InventoryPostProcessor.SimplifySchema the moment 1.3.2 is installed, line 76:

    var curs = (List<object>) ((Dictionary<string, object>)dic["currencies"])["currency"];
     
    Last edited: Jan 15, 2014
  33. Dreamwriter

    Dreamwriter

    Joined:
    Jul 22, 2011
    Posts:
    472
    I had to debug it myself, and found a workaround for the problem. What's happening is, when we import the new version of Unibill, it tries to convert the old inventory XML file to a new JSON file format. But we don't have any Currencies set up, and the inventory converter in InventoryPostProcessor doesn't handle that situation.

    What I ended up doing was remarking out the Currencies section in SimplifySchema, then having it convert our inventory, then manually copying an empty Currencies section into the JSON file at the end.
     
    Last edited: Jan 15, 2014
  34. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    I don't recall our email. There are a few conversion issues moving to json. Sorry for the trouble.
     
  35. Afroman

    Afroman

    Joined:
    Aug 17, 2013
    Posts:
    43
    @Banderous I'm getting an exception building for WP8:
    An exception of type 'System.TypeLoadException' occurred in Unknown Module. and wasn't handled before a managed/native boundary

    This happens even when building an empty project.
    Sent alex@ballatergames.com an email about this.
     
  36. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    This looks like an issue with the version of Unity you're using, will respond via email.
     
  37. Tonmy_

    Tonmy_

    Joined:
    Jan 20, 2014
    Posts:
    5
    So, I'm considering buying Unibill but I would like to know if it fits my needs before it.

    I'm developing a game with virtual currency for ios, android and facebook. So unibill would help everything for ios and android. For facebook, unibill would be used handle the currency, the transactions I would handle myself.
    Would this work?
     
  38. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @tommy_ Yes; You can increment the balance of unibills virtual currencies via unibills method calls, so you could still use them for currency management on facebook.
     
  39. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    Unibill 1.3.8 is now available, containing a critical Windows Phone 8 fix.

    Windows Phone was essentially broken in the last two point releases since it packaged a Debug DLL.

    As ever contact support@outlinegames.com with purchase receipt for an immediate unitypackage.
     
    Last edited: Sep 4, 2014
  40. iStrangler.com

    iStrangler.com

    Joined:
    Oct 30, 2013
    Posts:
    25
    Maybe a dumb question, but what is the best way to update a plugin?
    Simply install the new version over the old one? Or search all outdated data and delete them? What would you recommend?
     
  41. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    Unity doesn't have a package management system.

    In unibill's case I strive to make it possible to just import the latest version over the top of the old one.
     
  42. Dreamwriter

    Dreamwriter

    Joined:
    Jul 22, 2011
    Posts:
    472
    Using Unibill, we have one iOS device/account giving this message with a consumable: "You've already purchased this In-App Purchase but it hasn't been downloaded". Internet responses to this message seem to range from "ignore it, it's a sandbox-only message" to "make sure you add your class as a transaction observer" to "when you get this message, it lets you complete the transaction". Any ideas?
     
  43. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @Dreamwriter it should complete the transaction when you hit OK.
     
  44. Dreamwriter

    Dreamwriter

    Joined:
    Jul 22, 2011
    Posts:
    472
    It unfortunately doesn't complete the transaction when consumables get that message, only when non-consumables do. Now we're getting this on Android as well once in a while, "Error: You already own this item"
     
  45. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @Dreamwriter will attempt to repro.
     
  46. ConjureScape

    ConjureScape

    Joined:
    Feb 14, 2013
    Posts:
    445
    Hi there.
    Cool plugin.

    I receive the dreaded parse error when running your sample scene on a WP8 device:

    > Assembly-CSharp-firstpass.DLL!Unibill.Impl.MiniJSON.parseNumber(char[] json, ref int index) Line 395 Unknown

    + $exception {System.FormatException: Input string was not in a correct format.
    at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
    at System.Double.Parse(String s)
    at Unibill.Impl.MiniJSON.parseNumber(Char[] json, Int32 index)
    at Unibill.Impl.MiniJSON.parseValue(Char[] json, Int32 index, Boolean success)
    at Unibill.Impl.MiniJSON.parseObject(Char[] json, Int32 index)
    at Unibill.Impl.MiniJSON.parseValue(Char[] json, Int32 index, Boolean success)
    at Unibill.Impl.MiniJSON.parseObject(Char[] json, Int32 index)
    at Unibill.Impl.MiniJSON.parseValue(Char[] json, Int32 index, Boolean success)
    at Unibill.Impl.MiniJSON.parseObject(Char[] json, Int32 index)
    at Unibill.Impl.MiniJSON.parseValue(Char[] json, Int32 index, Boolean success)
    at Unibill.Impl.MiniJSON.parseObject(Char[] json, Int32 index)
    at Unibill.Impl.MiniJSON.parseValue(Char[] json, Int32 index, Boolean success)
    at Unibill.Impl.MiniJSON.parseObject(Char[] json, Int32 index)
    at Unibill.Impl.MiniJSON.parseValue(Char[] json, Int32 index, Boolean success)
    at Unibill.Impl.MiniJSON.jsonDecode(String json)
    at Unibill.Impl.UnibillConfiguration..ctor(String json, RuntimePlatform runtimePlatform, ILogger logger)
    at Unibill.Impl.RemoteConfigManager..ctor(IResourceLoader loader, IStorage storage, ILogger logger, RuntimePlatform platform)
    at Unibiller.Initialise()
    at UnibillDemo.Start()
    at UnibillDemo.UnityFastInvoke_Start()} System.Exception {System.FormatException}
     
  47. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @3d_Game_Ready does the scene work correctly in the editor?
     
  48. ConjureScape

    ConjureScape

    Joined:
    Feb 14, 2013
    Posts:
    445
    Yes it does. I think the error is due to this: http://forum.unity3d.com/threads/70012-float-Parse-different-for-German-OS
    I've changed the offending lines (in MiniJSON.cs) to something like:
    return Double.Parse( new string( numberCharArray ) , System.Globalization.CultureInfo.InvariantCulture);
    That solved it on the device.
     
  49. Banderous

    Banderous

    Joined:
    Dec 25, 2011
    Posts:
    669
    @3d_Game_Ready thanks! I'll get that fixed in the next update.
     
  50. ConjureScape

    ConjureScape

    Joined:
    Feb 14, 2013
    Posts:
    445
    Hi Banderous

    It seems like the solution we discussed broke the localizedPriceString result in Unibill.
    When I query localizedPriceString I receive an empty string.
    Here you can see in your demo that the prices are not displayed: http://gyazo.com/0962f0d5bf12553523be87696e2cc7af