Simple In-App Purchase System (SIS) for SOOMLA

Please note that Simple IAP System for SOOMLA has been deprecated on the Unity Asset Store. Over the past year, we’ve had a great business relationship with the guys at SOOMLA, along with an agreement on this asset which has been mutually cancelled few weeks ago. As a separate version of our main Simple IAP System asset, this adaptation did not fully meet my expectations when it comes to market potential on the Asset Store. This is why I’ve decided to focus my efforts and resources on our main Simple IAP System asset.

Simple IAP System for SOOMLA is not removed or deleted - existing customers who have already purchased or downloaded the package will still be able to download it. As always, I will also keep supporting it by answering any inquiries throughout the year and possibly even further. For those of you who would like to hop on the Unity IAP train instead, I’ve created an upgrade path from Simple IAP System for SOOMLA to our main Simple IAP System asset on the Unity Asset Store. Thank you for your understanding.


Simple IAP System for SOOMLA (SIS) provides in-app purchase management right within Unity. Create products or complete shops in minutes by using an intuitive editor window! SIS handles all the different purchase callbacks technically and visually, while the design and shop templates included are fully customizable. By using SOOMLA Store, extending it with unlockable product logic and allowing to update IAP data remotely, it offers the full range of professional in-app purchase techniques. The integration with SOOMLA GROW ensures that you immediately know how your users are acting in your game, customer conversion rates and how your app performs compared to industry benchmarks.

As you may know from our other products, we really put emphasis on the ease of use of our assets. If you want to get going with in-app purchases right away, you can just start with one of the shop templates, set up the IAP Settings and integrate purchased products in your game logic. That’s it! I appreciate any feedback or comments and will be happy to answer any questions you may have!

SIS features:

  • Unity 4.6 uGUI integration
  • IAP Editor for creating IAPs without coding
  • Dynamic Shop Layout & Shop Templates
  • Locked IAPs based on user progress
  • Localization from the App Stores (online)
  • Localization using Smart Localization (offline)
  • Adjust IAP data without updating your app
  • iOS App Store, Google Play & Amazon support

SOOMLA provides:

  • Store Economy Model: real money & virtual currency purchases, consumable and non-consumable products and equippable or upgradable products or even product packs are supported
  • Storage: encrypted on-device database for saving your app data in a secure way
  • Game progression framework: users can earn rewards by completing missions in levels, unlock new worlds and reach certain scores (optional)
  • Social module: perform actions on popular social networks and reward your users (optional)
  • GROW: a community-driven analytics dashboard, where developers can use smart metrics to compare their game’s performance to benchmarks of other games!

Please visit our product page for more in depth information.

Docs:

YouTube:

Get it here:



Hi.
Really nice asset:)

I buy SIS for SOOMLA today and really want to understand some in your documentation

it means if i have parent Hand and want to change skin with prefabs objects Glowe1, Glowe2, Glowe3 i’ll set Glowe1 as prefab with parent Hand in IAP settings inspector etc., and prefabs will changing in game scene after i set one of them in IAP menu scene?

Hi potkpot, thanks for the comment!

The Shop Manager has nothing to do with your game logic. Prefabs and parents in the IAP Settings editor are used for creating your in-app purchase items, like these: Image.

For example if you want to change your character in-game, you have to check what the user has bought or selected, and instantiate your character parts accordingly. Something along the lines of:

//when the game starts
if(StoreInventory.GetItemBalance("Helmet1") > 0)) //user purchased Helmet1
{
    //instantiate your prefab for this item and attach it to the character
}

You can also do this by using StoreInventory.IsVirtualGoodEquipped(“Helmet1”), which would check whether the user actually equipped Helmet1.

Thanks, Baroni

When i setup with your documentation i took some problems.

After all points of manual i set demo scenes and

  • Scenes can work only after scene “AllSelection”
  • Deafult coins in IAP settings set to 2000, after play on player or device 0 coins
  • All items can equip without buying

Errors in console

As i see problem is initialize of soomla. But i didnt try cause

Hi again,

let’s go over this one by one. Did you put the CoreEvents & StoreEvents prefabs from SOOMLA in the AllSelection scene (step 4 in the documentation)?

THANKS! All is work perfect!

1 Like

I cant find in manager possibility to create 2 or more groups with auto switchoff checkboxes on one screen, like weapons in demo scenes. How can i get it?

@potkpot Auto switch off checkboxes? In the weapons example, these products are defined as “Equippable” with the “Specific Setting” set to “Category” in the IAP Settings editor. IAPItem prefabs for this type of product have the “Select Button” assigned. See page 5 in the documentation for more details about different product types. If you want to share the “auto switchoff” functionality over more than one group, they have to have the same category name.

Simple IAP System for SOOMLA has been mentioned on their blog:

And the special introductory price of $10 is still on!
If you are in the need of a shop for IAPs, this might be the (cheapest) chance!

@Baroni1 Maybe some mistakes on my project but i have no changes in player after setting anotheranother products to “category” in IAP manager. Only in weapons products from your demo works well.

Do you use one of the “_EquipCategory” / “_EquipLocal” prefabs and are your products actually in the same category? If that doesn’t solve it, please post some screenshots to illustrate the problem better.

If IAP redactor opened without playing options to change prefabs is disabled. It can change only if scene is on play. After stop scene prefabs changes to default

I’m not sure what you mean by “redactor”. You have to open the IAP Settings editor in your shop scene and change the prefab/parent references there (in the IAP Settings editor).

Hi Baroni,
What is the difference between this asset from unity store and the one from github?

Hi @OMAXLIVE3 ,
this asset extends SOOMLA’s Store plugin with a shop system and allows setting up in-app purchases without coding (see the feature list and screenshots in the first post for a full overview). Basically it makes handling in-app purchases in Unity a whole lot easier instead of creating it from the ground up.

1 Like

Thanks for clarifying @Baroni1 ,
I think it helps so much but I’m not sure if would be good for me, I will explain you my case, right now I have the option for changing clothes of the player, for example shoes, shirt etc… it’s implemented with SQLite, so I save what the player is wearing. The idea is to have a list for each category and for example when I tap one Product/shirt, change the player prefab to that shirt selected in real time and then press to buy if needed “I’m already doing that with my own list. I just need to detect when a Product was pressed from the Simple IAP System for SOOMLA plugin to make the change”.

Do you think it’s possible?

Simple IAP System already saves current purchases and selections locally on the device, so you don’t have to save that remotely. You can then query the selections via IAPManager.GetAllEquipped and instantiate the correct item in your game according to that. The example scenes have a sample for setting up selectable products: image.

Thanks for your fast feedback.

How can i initialize this in game scene?

Do I need include to scene ShopManager or same prefams?

using UnityEngine;
using System.Collections;
using SIS;
using Soomla;
public class Equip : MonoBehaviour {

    public GameObject BMP1;
    public GameObject BMP2;
    public GameObject BMP3;
    public GameObject BMP4;

      void Start () {
        BMP1.gameObject.SetActive(true);
        BMP2.gameObject.SetActive(false);
        BMP3.gameObject.SetActive(false);
        BMP4.gameObject.SetActive(false);
    }

    void Update(){
        if(StoreInventory.IsVirtualGoodEquipped("BMP1") > 0){

            killAll();
            BMP1.gameObject.SetActive(true);
        }

        if(StoreInventory.IsVirtualGoodEquipped("BMP2") > 0){

            killAll();
            BMP2.gameObject.SetActive(true);
        }

        if(StoreInventory.IsVirtualGoodEquipped("BMP3") > 0){

            killAll();
            BMP3.gameObject.SetActive(true);
        }
        if(StoreInventory.IsVirtualGoodEquipped("BMP4") > 0){

            killAll();
            BMP4.gameObject.SetActive(true);
        }
    }

    void killAll(){
        BMP1.gameObject.SetActive(false);
        BMP2.gameObject.SetActive(false);
        BMP3.gameObject.SetActive(false);
        BMP4.gameObject.SetActive(false);
    }
}

Now i have error with this sample code

@potkpot
StoreInventory is in the Soomla.Store namespace, not just Soomla. It’ll work with “using Soomla.Store;”. I wouldn’t call that in every frame though, because right now you are disabling and enabling your gameobjects at the same time.

Great! Works well. Thank you, Baroni

using UnityEngine;
using System.Collections;
using SIS;
using Soomla;
using Soomla.Store;
public class Equip : MonoBehaviour {

    public GameObject BMP1;
    public GameObject BMP2;
    public GameObject BMP3;
    public GameObject BMP4;

    // Use this for initialization


    // Update is called once per frame
    void Start(){
        if(StoreInventory.IsVirtualGoodEquipped("BMP1")){

            killAll();
            BMP1.gameObject.SetActive(true);
        }

        if(StoreInventory.IsVirtualGoodEquipped("BMP2")){

            killAll();
            BMP2.gameObject.SetActive(true);
        }

        if(StoreInventory.IsVirtualGoodEquipped("BMP3")){

            killAll();
            BMP3.gameObject.SetActive(true);
        }
        if(StoreInventory.IsVirtualGoodEquipped("BMP4")){

            killAll();
            BMP4.gameObject.SetActive(true);
        }
    }

    void killAll(){
        BMP1.gameObject.SetActive(false);
        BMP2.gameObject.SetActive(false);
        BMP3.gameObject.SetActive(false);
        BMP4.gameObject.SetActive(false);
    }
}
2 Likes