Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Simple In-App Purchase System (SIS) for SOOMLA

Discussion in 'Assets and Asset Store' started by Baroni, Jan 8, 2015.

  1. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,158
    Hi @kvuik,
    thank you for using SIS for SOOMLA. Creating your own products follows the same workflow shown in our getting started tutorial video. I'm not sure what you are missing, because you can see the things you have to do:
    - create in app purchase in your App Store (Google Play/iTunes Connect)
    - add product id in our IAP Settings editor and assign container and product prefab

    This applies to all types of real in app purchases. Virtual purchases are created in the IAP Settings editor only in the In Game Content tab, where you also specify currency. I suggest playing around with these tabs and adding some products, as the headers above each group about information you need should be self explanatory.

    After an user purchased a product the IAPListener script is called with the product id, so you have to add it and do something game related there (such as displaying the purchased character etc.). You can find out if a product is purchased at all times using SOOMLA methods, please see post #3 on the first page for a code snippet.
     
  2. kvuik

    kvuik

    Joined:
    Feb 23, 2016
    Posts:
    3
    Hello,
    i got a better idea now,
    i am using a remove_ads in my game using in app purchases.
    so i am using this code to check if ths iap was bought.

    if (StoreInventory.GetItemBalance ("no_ads") <= 0) {
    //show ads-my code
    }
    but i am getting this error
    The name `StoreInventory' does not exist in the current context
    In this scene i donot have Iap manager prefab or shop manager prefab,so how can i use this code in this scene without error?
     
  3. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,158
    You can't. Place the IAPManager prefab into your first scene and start the game from there. Then switch to the other scene. The IAPManager persists throughout your whole game and all scenes.

    Also in your script make sure to add this at the top:
    Code (csharp):
    1. using Soomla;
    2. using Soomla.Store;
     
  4. deebor76

    deebor76

    Joined:
    Oct 16, 2014
    Posts:
    4
    I want to change to font of IAP Item. I did added a font field in IAPITem.cs and changed the text font. But it is not getting reflected when I am installing the app on my mobile.
     
  5. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,158
    @deebor76 Not sure why you would need a separate variable for the font. Did you try dragging the prefab into the scene, changing the font on the desired UI element and applying the changes back to the prefab? (Then removing it from your scene again)
     
  6. deebor76

    deebor76

    Joined:
    Oct 16, 2014
    Posts:
    4
    The default fonts are looking to congested. So I wanted a font which looks more clear. I did try what you said but no avail
     
  7. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,158
    @deebor76 could you please post some screenshots of what you did what I've suggested, I'm stumbling a bit in the dark here.
     
  8. deebor76

    deebor76

    Joined:
    Oct 16, 2014
    Posts:
    4
    Here is the screenshot
     

    Attached Files:

  9. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,158
    So? It looks like a screenshot at runtime. You have to drag the IAPItem prefab into your scene in the editor and extend the child gameobjects to locate the text elements. Then do your changes, apply it on the prefab (press Apply button) and remove it from your scene. This is not at runtime.
     
  10. kvuik

    kvuik

    Joined:
    Feb 23, 2016
    Posts:
    3
    Hi @Baroni
    i implemented sis system in my game but while building apk i am getting this error during conversion to dex format.
    it is due to multiple jar files or multiple classes in jar files,so let me know how to resolve this error

    error
    Error building Player: CommandInvokationFailure: Unable to convert classes into dex format. See the Console for details.
    C:\Program Files (x86)\Java\jdk1.8.0_05\bin\java.exe -Xmx1024M -Dcom.android.sdkmanager.toolsdir="C:/gameassets/and\tools" -Dfile.encoding=UTF8 -jar "E:\un\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -

    stderr[
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/android/vending/billing/IInAppBillingService;
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/android/vending/billing/IInAppBillingService$Stub;
    Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/android/vending/billing/IInAppBillingService$Stub$Proxy;
    3 errors; aborting
    ]
    stdout[
    processing archive E:\unity\pro projects\ninja spin\Temp\StagingArea\android-libraries\ChartboostSDK\libs\.\chartboost.jar...
    ignored resource META-INF/MANIFEST.MF
    processing com/chartboost/sdk/CBImpressionActivity.class...
    processing com/chartboost/sdk/CBImpressionActivity$1.class...
    processing com/chartboost/sdk/CBImpressionActivity$2.class...
    processing com/chartboost/sdk/CBLocation.class...
    processing com/chartboost/sdk/Chartboost.class...
    processing com/chartboost/sdk/Chartboost$1.class...
    processing com/chartboost/sdk/Chartboost$10.class...
    processing com/chartboost/sdk/Chartboost$11.class...
    processing com/chartboost/sdk/Chartboost$12.class...
    processing com/chartboost/sdk/Chartboost$13.class...
    processing com/chartboost/sdk/Chartboost$14.class...
    processing com/chartboost/sdk/Chartboost$15.class...
    processing com/chartboost/sdk/Chartboost$16.class...
    processing com/chartboost/sdk/Chartboost$17.class...
    processing com/chartboost/sdk/Chartboost$18.class...
    processing com/chartboost/sdk/Chartboost$19.class...
    processing com/chartboost/sdk/Chartboost$2.class...
    processing com/chartboost/sdk/Chartboost$20.class...
    processing com/chartboost/sdk/Chartboost$21.class...
    processing com/chartboost/sdk/Chartboost$22.class...
    processing com/chartboost/sdk/Chartboost$23.class...
    processing com/chartboost/sdk/Chartboost$24.class...
    processing com/chartboost/sdk/Chartboost$25.class...
    processing com/chartboost/sdk/Chartboost$26.class...
    processing com/chartboost/sdk/Chartboost$27.class...
    processing com/chartboost/sdk/Chartboost$28.class...
    processing com/chartboost/sdk/Chartboost$29.class...
    processing com/chartboost/sdk/Chartboost$3.class...
    processing com/chartboost/sdk/Chartboost$30.class...
    processing com/chartboost/sdk/Chartboost$31.class...
    processing com/chartboost/sdk/Chartboost$32.class...
    processing com/chartboost/sdk/Chartboost$33.class...
    processing com/chartboost/sdk/Chartboost$34.class...
    processing com/chartboost/sdk/Chartboost$4.class...
    processing com/chartboost/sdk/Chartboost$5.class...
    processing com/chartboost/sdk/Chartboost$6.class...
    processing com/chartboost/sdk/Chartboost$7.class...
    processing com/chartboost/sdk/Chartboost$8.class...
    processing com/chartboost/sdk/Chartboost$9.class...
    processing com/chartboost/sdk/Chartboost$CBFramework.class...
    processing com/chartboost/sdk/Chartboost$CBMediation.class...
    processing com/chartboost/sdk/Chartboost$a.class...
    processing com/chartboost/sdk/ChartboostActivity.class...
    processing com/chartboost/sdk/ChartboostDelegate.class...
    processing com/chartboost/sdk/InPlay/CBInPlay.class...
    processing com/chartboost/sdk/InPlay/a.class...
    processing com/chartboost/sdk/InPlay/a$1.class...
    processing com/chartboost/sdk/InPlay/a$2.class...
    processing com/chartboost/sdk/InPlay/a$a.class...
    processing com/chartboost/sdk/InPlay/a$b.class...
    processing com/chartboost/sdk/Libraries/CBLogging.class...
    processing com/chartboost/sdk/Libraries/CBLogging$Level.class...
    processing com/chartboost/sdk/Libraries/CBUtility.class...
    processing com/chartboost/sdk/Libraries/a.class...
    processing com/chartboost/sdk/Libraries/a$1.class...
    processing com/chartboost/sdk/Libraries/b.class...
    processing com/chartboost/sdk/Libraries/c.class...
    processing com/chartboost/sdk/Libraries/c$1.class...
    processing com/chartboost/sdk/Libraries/c$a.class...
    processing com/chartboost/sdk/Libraries/d.class...
    processing com/chartboost/sdk/Libraries/e.class...
    processing com/chartboost/sdk/Libraries/e$1.class...
    processing com/chartboost/sdk/Libraries/e$a.class...
    processing com/chartboost/sdk/Libraries/e$b.class...
    processing com/chartboost/sdk/Libraries/f.class...
    processing com/chartboost/sdk/Libraries/g.class...
    processing com/chartboost/sdk/Libraries/g$1.class...
    processing com/chartboost/sdk/Libraries/g$a.class...
    processing com/chartboost/sdk/Libraries/g$b.class...
    processing com/chartboost/sdk/Libraries/g$c.class...
    processing com/chartboost/sdk/Libraries/g$d.class...
    processing com/chartboost/sdk/Libraries/g$e.class...
    processing com/chartboost/sdk/Libraries/g$f.class...
    processing com/chartboost/sdk/Libraries/g$g.class...
    processing com/chartboost/sdk/Libraries/g$h.class...
    processing com/chartboost/sdk/Libraries/g$i.class...
    processing com/chartboost/sdk/Libraries/g$j.class...
    processing com/chartboost/sdk/Libraries/g$k.class...
    processing com/chartboost/sdk/Libraries/g$l.class...
    processing com/chartboost/sdk/Libraries/g$m.class...
    processing com/chartboost/sdk/Libraries/g$n.class...
    processing com/chartboost/sdk/Libraries/g$o.class...
    processing com/chartboost/sdk/Libraries/g$p.class...
    processing com/chartboost/sdk/Libraries/g$q.class...
    processing com/chartboost/sdk/Libraries/h.class...
    processing com/chartboost/sdk/Libraries/h$a.class...
    processing com/chartboost/sdk/Libraries/i.class...
    processing com/chartboost/sdk/Libraries/j.class...
    processing com/chartboost/sdk/Libraries/j$1.class...
    processing com/chartboost/sdk/Libraries/j$2.class...
    processing com/chartboost/sdk/Libraries/j$a.class...
    processing com/chartboost/sdk/Libraries/k.class...
    processing com/chartboost/sdk/Model/CBError.class...
    processing com/chartboost/sdk/Model/CBError$1.class...
    processing com/chartboost/sdk/Model/CBError$CBClickError.class...
    processing com/chartboost/sdk/Model/CBError$CBImpressionError.class...
    processing com/chartboost/sdk/Model/CBError$a.class...
    processing com/chartboost/sdk/Model/a.class...
    processing com/chartboost/sdk/Model/a$1.class...
    processing com/chartboost/sdk/Model/a$a.class...
    processing com/chartboost/sdk/Model/a$b.class...
    processing com/chartboost/sdk/Model/a$c.class...
    processing com/chartboost/sdk/Model/a$d.class...
    processing com/chartboost/sdk/Model/a$e.class...
    processing com/chartboost/sdk/Model/b.class...
    processing com/chartboost/sdk/Tracking/CBAnalytics.class...
    processing com/chartboost/sdk/Tracking/CBAnalytics$1.class...
    processing com/chartboost/sdk/Tracking/CBAnalytics$CBIAPPurchaseInfo.class...
    processing com/chartboost/sdk/Tracking/CBAnalytics$CBIAPType.class...
    processing com/chartboost/sdk/Tracking/CBAnalytics$CBLevelType.class...
    processing com/chartboost/sdk/Tracking/a.class...
    processing com/chartboost/sdk/a.class...
    processing com/chartboost/sdk/b.class...
    processing com/chartboost/sdk/b$1.class...
    processing com/chartboost/sdk/b$2.class...
    processing com/chartboost/sdk/b$3.class...
    processing com/chartboost/sdk/b$a.class...
    processing com/chartboost/sdk/b$b.class...
    processing com/chartboost/sdk/b$c.class...
    processing com/chartboost/sdk/b$d.class...
    processing com/chartboost/sdk/b$e.class...
    processing com/chartboost/sdk/c.class...
    processing com/chartboost/sdk/c$1.class...
    processing com/chartboost/sdk/c$a.class...
    processing com/chartboost/sdk/d.class...
    processing com/chartboost/sdk/d$1.class...
    processing com/chartboost/sdk/d$1$1.class...
    processing com/chartboost/sdk/d$2.class...
    processing com/chartboost/sdk/d$3.class...
    processing com/chartboost/sdk/d$4.class...
    processing com/chartboost/sdk/d$a.class...
    processing com/chartboost/sdk/d$b.class...
    processing com/chartboost/sdk/e.class...
    processing com/chartboost/sdk/e$1.class...
    processing com/chartboost/sdk/e$2.class...
    processing com/chartboost/sdk/e$3.class...
    processing com/chartboost/sdk/e$4.class...
    processing com/chartboost/sdk/e$4$1.class...
    processing com/chartboost/sdk/e$4$2.class...
    processing com/chartboost/sdk/e$a.class...
    processing com/chartboost/sdk/f.class...
    processing com/chartboost/sdk/f$1.class...
    processing com/chartboost/sdk/f$2.class...
    processing com/chartboost/sdk/f$2$1.class...
    processing com/chartboost/sdk/f$2$1$1.class...
    processing com/chartboost/sdk/f$3.class...
    processing com/chartboost/sdk/g.class...
    processing com/chartboost/sdk/g$1.class...
    processing com/chartboost/sdk/g$a.class...
    processing com/chartboost/sdk/g$a$1.class...
    processing com/chartboost/sdk/g$b.class...
    processing com/chartboost/sdk/h.class...
    processing com/chartboost/sdk/h$1.class...
    processing com/chartboost/sdk/h$2.class...
    processing com/chartboost/sdk/h$a.class...
    processing com/chartboost/sdk/h$b.class...
    processing com/chartboost/sdk/h$c.class...
    processing com/chartboost/sdk/impl/a.class...
    processing com/chartboost/sdk/impl/aa.class...
    processing com/chartboost/sdk/impl/ab.class...
    processing com/chartboost/sdk/impl/ab$1.class...
    processing com/chartboost/sdk/impl/ac.class...
    processing com/chartboost/sdk/impl/ac$1.class...
    processing com/chartboost/sdk/impl/ac$1$1.class...
    processing com/chartboost/sdk/impl/ac$2.class...
    processing com/chartboost/sdk/impl/ac$2$1.class...
    processing com/chartboost/sdk/impl/ac$3.class...
    processing com/chartboost/sdk/impl/ad.class...
    processing com/chartboost/sdk/impl/ad$1.class...
    processing com/chartboost/sdk/impl/ae.class...
    processing com/chartboost/sdk/impl/ae$a.class...
    processing com/chartboost/sdk/impl/ae$a$1.class...
    processing com/chartboost/sdk/impl/ae$a$2.class...
    processing com/chartboost/sdk/impl/af.class...
    processing com/chartboost/sdk/impl/af$1.class...
    processing com/chartboost/sdk/impl/af$2.class...
    processing com/chartboost/sdk/impl/af$a.class...
    processing com/chartboost/sdk/impl/af$a$1.class...
    processing com/chartboost/sdk/impl/af$a$2.class...
    processing com/chartboost/sdk/impl/af$a$3.class...
    processing com/chartboost/sdk/impl/af$a$4.class...
    processing com/chartboost/sdk/impl/af$a$5.class...
    processing com/chartboost/sdk/impl/af$b.class...
    processing com/chartboost/sdk/impl/ag.class...
    processing com/chartboost/sdk/impl/ah.class...
    processing com/chartboost/sdk/impl/ai.class...
    processing com/chartboost/sdk/impl/ai$1.class...
    processing com/chartboost/sdk/impl/aj.class...
    processing com/chartboost/sdk/impl/aj$1.class...
    processing com/chartboost/sdk/impl/aj$2.class...
    processing com/chartboost/sdk/impl/aj$a.class...
    processing com/chartboost/sdk/impl/ak.class...
    processing com/chartboost/sdk/impl/al.class...
    processing com/chartboost/sdk/impl/al$1.class...
    processing com/chartboost/sdk/impl/al$2.class...
    processing com/chartboost/sdk/impl/al$3.class...
    processing com/chartboost/sdk/impl/al$4.class...
    processing com/chartboost/sdk/impl/al$5.class...
    processing com/chartboost/sdk/impl/am.class...
    processing com/chartboost/sdk/impl/an.class...
    processing com/chartboost/sdk/impl/ao.class...
    processing com/chartboost/sdk/impl/ao$1.class...
    processing com/chartboost/sdk/impl/ap.class...
    processing com/chartboost/sdk/impl/ap$1.class...
    processing com/chartboost/sdk/impl/ap$2.class...
    processing com/chartboost/sdk/impl/aq.class...
    processing com/chartboost/sdk/impl/aq$1.class...
    processing com/chartboost/sdk/impl/ar.class...
    processing com/chartboost/sdk/impl/as.class...
    processing com/chartboost/sdk/impl/as$1.class...
    processing com/chartboost/sdk/impl/at.class...
    processing com/chartboost/sdk/impl/at$1.class...
    processing com/chartboost/sdk/impl/at$a.class...
    processing com/chartboost/sdk/impl/at$a$1.class...
    processing com/chartboost/sdk/impl/at$a$a.class...
    processing com/chartboost/sdk/impl/at$a$a$1.class...
    processing com/chartboost/sdk/impl/at$b.class...
    processing com/chartboost/sdk/impl/au.class...
    processing com/chartboost/sdk/impl/au$1.class...
    processing com/chartboost/sdk/impl/av.class...
    processing com/chartboost/sdk/impl/av$a.class...
    processing com/chartboost/sdk/impl/av$b.class...
    processing com/chartboost/sdk/impl/aw.class...
    processing com/chartboost/sdk/impl/aw$a.class...
    processing com/chartboost/sdk/impl/aw$b.class...
    processing com/chartboost/sdk/impl/aw$c.class...
    processing com/chartboost/sdk/impl/aw$d.class...
    processing com/chartboost/sdk/impl/aw$e.class...
    processing com/chartboost/sdk/impl/ax.class...
    processing com/chartboost/sdk/impl/ax$1.class...
    processing com/chartboost/sdk/impl/ax$a.class...
    processing com/chartboost/sdk/impl/ax$b.class...
    processing com/chartboost/sdk/impl/ax$c.class...
    processing com/chartboost/sdk/impl/ax$d.class...
    processing com/chartboost/sdk/impl/ax$e.class...
    processing com/chartboost/sdk/impl/ax$e$a.class...
    processing com/chartboost/sdk/impl/ay.class...
    processing com/chartboost/sdk/impl/ay$1.class...
    processing com/chartboost/sdk/impl/ay$1$1.class...
    processing com/chartboost/sdk/impl/ay$a.class...
    processing com/chartboost/sdk/impl/az.class...
    processing com/chartboost/sdk/impl/az$a.class...
    processing com/chartboost/sdk/impl/az$a$1.class...
    processing com/chartboost/sdk/impl/az$a$2.class...
    processing com/chartboost/sdk/impl/az$a$3.class...
    processing com/chartboost/sdk/impl/az$b.class...
    processing com/chartboost/sdk/impl/az$c.class...
    processing com/chartboost/sdk/impl/b.class...
    processing com/chartboost/sdk/impl/b$a.class...
    processing com/chartboost/sdk/impl/ba.class...
    processing com/chartboost/sdk/impl/ba$1.class...
    processing com/chartboost/sdk/impl/ba$a.class...
    processing com/chartboost/sdk/impl/bb.class...
    processing com/chartboost/sdk/impl/bb$1.class...
    processing com/chartboost/sdk/impl/bb$2.class...
    processing com/chartboost/sdk/impl/bb$3.class...
    processing com/chartboost/sdk/impl/bb$4.class...
    processing com/chartboost/sdk/impl/bb$5.class...
    processing com/chartboost/sdk/impl/bb$6.class...
    processing com/chartboost/sdk/impl/bc.class...
    processing com/chartboost/sdk/impl/bc$1.class...
    processing com/chartboost/sdk/impl/bc$2.class...
    processing com/chartboost/sdk/impl/bc$3.class...
    processing com/chartboost/sdk/impl/bc$4.class...
    processing com/chartboost/sdk/impl/bc$5.class...
    processing com/chartboost/sdk/impl/bd.class...
    processing com/chartboost/sdk/impl/bd$a.class...
    processing com/chartboost/sdk/impl/be.class...
    processing com/chartboost/sdk/impl/be$1.class...
    processing com/chartboost/sdk/impl/be$2.class...
    processing com/chartboost/sdk/impl/be$3.class...
    processing com/chartboost/sdk/impl/be$a.class...
    processing com/chartboost/sdk/impl/be$b.class...
    processing com/chartboost/sdk/impl/bf.class...
    processing com/chartboost/sdk/impl/bg.class...
    processing com/chartboost/sdk/impl/bh.class...
    processing com/chartboost/sdk/impl/bh$1.class...
    processing com/chartboost/sdk/impl/bh$2.class...
    processing com/chartboost/sdk/impl/bh$a.class...
    processing com/chartboost/sdk/impl/bi.class...
    processing com/chartboost/sdk/impl/bi$1.class...
    processing com/chartboost/sdk/impl/bi$1$1.class...
    processing com/chartboost/sdk/impl/bi$2.class...
    processing com/chartboost/sdk/impl/bi$a.class...
    processing com/chartboost/sdk/impl/bi$b.class...
    processing com/chartboost/sdk/impl/bj.class...
    processing com/chartboost/sdk/impl/bk.class...
    processing com/chartboost/sdk/impl/bl.class...
    processing com/chartboost/sdk/impl/bm.class...
    processing com/chartboost/sdk/impl/bn.class...
    processing com/chartboost/sdk/impl/bn$1.class...
    processing com/chartboost/sdk/impl/bo.class...
    processing com/chartboost/sdk/impl/bo$1.class...
    processing com/chartboost/sdk/impl/bo$10.class...
    processing com/chartboost/sdk/impl/bo$11.class...
    processing com/chartboost/sdk/impl/bo$12.class...
    processing com/chartboost/sdk/impl/bo$2.class...
    processing com/chartboost/sdk/impl/bo$3.class...
    processing com/chartboost/sdk/impl/bo$4.class...
    processing com/chartboost/sdk/impl/bo$5.class...
    processing com/chartboost/sdk/impl/bo$6.class...
    processing com/chartboost/sdk/impl/bo$7.class...
    processing com/chartboost/sdk/impl/bo$8.class...
    processing com/chartboost/sdk/impl/bo$9.class...
    processing com/chartboost/sdk/impl/bo$a.class...
    processing com/chartboost/sdk/impl/bp.class...
    processing com/chartboost/sdk/impl/bq.class...
    processing com/chartboost/sdk/impl/bq$1.class...
    processing com/chartboost/sdk/impl/bq$2.class...<message truncated>
     
  11. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,158
    Hi @kvuik, you have to locate the jar file with the duplicated contents, open it with a zip file browser and delete the folders in there containing the duplicates. It looks like you are having plugins in your project which are using Google's billing jar multiple times, so I would look out for that.
     
  12. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,158
    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.