Your Digital Media Has Never Looked So Good

 
bosborne
Topic Author
Posts: 141
Joined: Wed Jun 06, 2012 10:42 am

Products not appearing

Wed Apr 15, 2015 6:46 pm

I'm getting started developing a channel w/ in app purchases. I have a demo private channel that has been published. I have 4 products associated with it, and the Roku UI indicates they have been approved.

The problem is when I go to retrieve the catalog in the app, it appears empty. When I test the channel as a side-loaded channel, the test products appear as expected, so I'm not sure there's an issue with the code.

Again, the channel is published, and all 4 products are also published and approved for sale.

I've attached the relevant code. Can anyone see any problems with it?

Function showDonateScreen()
    port = CreateObject("roMessagePort")
    screen = CreateObject("roParagraphScreen")
    screen.setMessagePort(port)
    screen.setTitle("Donate")
    screen.addButton(0, "Select amount")
    screen.addButton(1, "Cancel")
    screen.setDefaultMenuItem(0)
    screen.show()

    while true
        msg = wait(0, screen.getMessagePort())
        if type(msg) = "roParagraphScreenEvent"
            if msg.isButtonPressed()
                if msg.getIndex() = 0
                    showDonationAmountScreen()
                else
                    screen.close()
                    exit while
                end if
            else if msg.isScreenClosed() then
                print "Poster Screen Closed!"
                exit while
            end if
        end if
    end while
End Function

Function showDonationAmountScreen()
    port = CreateObject("roMessagePort")
    screen = CreateObject("roListScreen")
    screen.setMessagePort(port)
    screen.setTitle("Select Donation Amount")
   
    store = CreateObject("roChannelStore")
    store.setMessagePort(port)

    catalog = getCatalog(store)
    if catalog = invalid
        return -1
    end if

    items = createContentListFromProducts(catalog)
    screen.SetContent(items)
    screen.Show()

    while true
        msg = wait(0, screen.GetMessagePort())
        if type(msg) = "roListScreenEvent" then
            if msg.isListItemSelected() then
                index = msg.GetIndex()
                if makePurchase(store, catalog[index]) = true
                    ' Close screen if completed transaction
                    screen.Close()
                    exit while
                end if
           
            else if msg.isScreenClosed() then
                print "Poster Screen Closed!"
                exit while
            end if
        end If
    end while
End Function

Function getCatalog(store)
    print "***** Catalog *****"
    waitMsg = ShowPleaseWait()
    store.GetCatalog()
    while true
        msg = wait(0, store.getMessagePort())
        waitMsg.close()
        if (type(msg) = "roChannelStoreEvent")
            if (msg.isRequestSucceeded())
                dumpResponse(msg.GetResponse())
                return msg.GetResponse()
                exit while 
            else if (msg.isRequestFailed())
                ShowDialog1Button("Connection Failure", "There was a problem connecting to the server. Please try again lister.", "Ok")
                print "***** Failure: " + msg.GetStatusMessage() + " Status Code: " + stri(msg.GetStatus()) + " *****"
                return invalid
            end if
        end if
    end while
End Function

Function createContentListFromProducts(items)
    i = 0
    list = []
    for each item in items
        i = i+1
        list_item = {
            Title: item.name
            ID: stri(i)
            code: item.code
            cost: item.cost
        }
        list.Push(list_item)
    end for

    return list
End Function

Function makePurchase(store, product)
    order = [{
        code: product.code
        qty: 1       
    }]
    print  "***** Placing Order, item code: " + toStr(order[0].code) + " quantity: " + toStr(order[0].qty)
    val = store.SetOrder(order)
    waitMsg = ShowPleaseWait()
    res = store.DoOrder()
    waitMsg.close()
    if res = true
        ShowDialog1Button("Transaction Complete", "Thank you!", "Continue")
        return true
    else
        ShowDialog1Button("Transaction Failed", "Unable to complete transaction.", "Continue")
        return false
    end if
End Function

Function dumpResponse(list as object)
    for each obj in list
        for each element in obj
            print toStr(element) + " = " + toStr(obj.lookup(element))
        end for
    end for
End Function
 
bosborne
Topic Author
Posts: 141
Joined: Wed Jun 06, 2012 10:42 am

Re: Products not appearing

Wed Apr 15, 2015 6:52 pm

Gah, nevermind. I misunderstood the meaning of "Cleared for sale" vs "pending approval". They are all still pending approval.
 
scorpiontahir02
Posts: 93
Joined: Thu Nov 14, 2013 1:49 pm

Re: Products not appearing

Fri Jun 03, 2016 2:47 am

bosborne wrote:
Gah, nevermind. I misunderstood the meaning of "Cleared for sale" vs "pending approval". They are all still pending approval.

How long it took for the products to appear after approval for you? Mine is approved but still GetCatalog returns nothing.
 
scorpiontahir02
Posts: 93
Joined: Thu Nov 14, 2013 1:49 pm

Re: Products not appearing

Fri Jun 03, 2016 4:30 am

scorpiontahir02 wrote:
How long it took for the products to appear after approval for you? Mine is approved but still GetCatalog returns nothing.


OK, got the products after a little while.
 
EnTerr
** Valued Community Member **
Posts: 3834
Joined: Sun Jan 02, 2011 2:41 am

Re: Products not appearing

Sat Jul 02, 2016 5:59 pm

scorpiontahir02 wrote:
How long it took for the products to appear after approval for you? Mine is approved but still GetCatalog returns nothing.

I am wondering the same, it's not documented or anything - so can someone give me ballpark idea of how long it takes for creation to spread - is it minutes or hours? Same thing for updates to existing product, i presume?
 
shaliniprajesh
Posts: 2
Joined: Thu Jan 04, 2018 2:15 am

Re: Products not appearing

Thu Jan 04, 2018 2:28 am

I've been facing this problem.Waiting for some time to get updated count of products didn't worked for me. getCatalog command always returned 0 product count. But when I tried making ChannelStore node in XML rather than doing it programmatically,
 m.store = CreateObject("roSGNode", "ChannelStore")

It returned the correct count of products.

Who is online

Users browsing this forum: No registered users and 11 guests