Fengist's Forum Posts

  • Problem Description

    The IAP for Google Play and Chrome Web store and Amazon packaged web app are not working as they should (or as I understand they should). The IAP returns false for 'is store available' in the Chrome Web store and Amazon web app and 'Has Product' is always returning false on Google Play. I've tried with iap testing true and false.

    Attach a Capx

    http://www.datainterlock.com/ConstructBugs/iapTest.capx

    Description of Capx

    Simply attempts to connect to the IAP store and retrieve information and 'has product' status. A button is to allow the product to be purchased and a text object displays the results of the IAP connection.

    .apx was compiled as webview using XDK.

    Observed Result

    Amazon Mobile Web

    • The result for 'is store available' = false.

    Chrome Web Store

    • The result for 'is store available' = false.

    Google Play prior to purchase

    • The result for 'is store available' = true.
    • On store listing success - all the the IAP fields return nothing.
    • Has product returns false.

    Google Play after purchase

    • The result for 'is store available' = true.
    • On store listing success - iap.productName and iap.productPrice will have the correct product name and price. iap.appName and iap.appPrice return nothing.
    • Has product returns false.

    Expected Result

    Amazon store should be available.

    Chrome Web store should be avaialble.

    IAP should return true for hasProduct if the product has been purchased.

    Operating System and Service Pack

    Win 10 / Android Lolipop

    Construct 2 Version ID

    r219 / 64

  • I would but, the available menu items are based on whether it's purchased or not.

  • Finally, someone looked and can't find anything wrong. Thanks newt

    I know that it's getting the store listing. This is in a 'loader' layout. It won't even switch to the next layout (which it it doing) until one of these conditions are true. I even know that it's finding the product as the ProductName('fullversion') comes back with the appropriate product name. And yes, I learned about the restorePurchases. It's doing that now. And I know it's realizing the product is purchased because I'm getting a 'purchase failed' error from the IAP if I try to purchase it again.

    I just wanted someone else to confirm that this code looked good before I went to the headache of tracking down a bug that isn't one I created. Everyone else seems to think that the IAP is working fine yet I'm completely stuck.

  • Pretty sad when you spend 3 weeks trying to get IAP working on a finished project and still can't.

  • Sorry, misread. the 16,400 is texture size and is video dependent. Some, apparently, can only do 4k.

  • With WebGL turned on the limitation is somewhere around 16,400px (confirmed by Ashley). Without it, I haven't found a limit. I loaded the entire Kings James bible into a text object at 20 px font height and, it displayed it, if that's any indication of size.

  • I guess I've asked too many questions or they're getting too difficult. I can't seem to get an answer any more.

  • On startup I do an isStoreAvailable>>requestStoreListing. And then run this code:

    and hasProduct keeps coming back false even though the product was purchased. The purchase product part of my code worked perfect and the Google Play transaction is showing it purchased. I've checked the spelling and case of the 'fullversion' numerous times, it is correct.

    What I'm trying to accomplish is to first check to see if the app is paid for by checking against the store and if that fails and the user is offline, it falls back to a stored setting. ButtonCount is a dictionary entry that records whether the product is purchased or not and saves it to local storage. When it's loaded, it sets the global DemoVersion to 1 or 0 based on 'ButtonCount' if the store is unavailable.

    DebugDict is so I can figure out what it's doing.

    Also, what does 'restorePurchases' do? It's not explained terribly well in the manual.

  • Ya well, this thing has over 200 events and 1000+ actions.

    Here's what I was basing that on, the export to cordova's xdk additions.xml

    <intelxdk:plugin intelxdk:name="cc.fovea.plugins.inapppurchase" intelxdk:value="cc.fovea.plugins.inapppurchase" />

    <intelxdk:plugin intelxdk:name="com.mcm.plugins.androidinappbilling" intelxdk:value="https://github.com/maxmoore14/AndroidInAppBilling.git" />

    I'm pretty sure the fovea gets added in anyway because of the xml.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Thanks KYATRIC.

    I've got com.mcm.plugins.androidinappbilling which is the one you suggested in the tutorial and cc.fovea.plugins.inapppurchase which is in the .XML export. It works in the build but debug lines it out for some reason (XDK).

    Purchasing seems to work fine. The merchant account verifies the purchase. I just haven't figured out how to detect the purchase when the app is reloaded. I've been trying IAP.isStoreAvailable>>IAP.requestStoreListing & IAP.onStoreListingSuccess>>IAP.hasProduct. Success is being called but, hasProduct it comes back false every time.

    I've checked the spelling and case like a dozen times now. It's the same as the IAP.purchaseProduct

  • Ok, just discovering that I guess I'm using Has.Product impoperly...

    I'm using has.product to check and see if the customer has purchased the product. I assume that's the correct usage. However, even when the product has been purchased, it's coming back false.

    Is there any way on startup to determine if a user has purchased an IAP other than setting a vairable? I see there's the restore purchases but it doesn't make a lot of sense unless, it triggers on purchase success.

  • Thanks Kyatric, so does this mean that Has.Product "" doesn't respond properly? That's the issue I'm having. The user can purchase but when it checks for Has.Product it comes back false.

  • I'm curious, have you tried this?

    In your browser invoke download, instead of a file name, try dictionary.asJSON.

    I know it'll allow it, whether it works or not...

  • Kyatric

    What exactly is and isn't working in the IAP. This may be directly related to issues I'm having?

  • I'm noob at C2 this but 2 things come to mind that I'd try.

    If you have the local file name from the browser download and you can figure out how to turn that into a url, you can pass that to an Ajax Request and then, load it into a dictionary as a json. I'm using the Ajax request to load file chooser selections into a textbox.

    If Twitch allows Ajax connections (it'll throw an Ajax on error if it doesn't) you could bypass the browser and load the ajax results of get or post straight into a dictionary as json.