Revision as of 15:33, 12 March 2012 by izinin (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

How to implement product subscription bussiness model with Nokia In-application Purchase API

From Nokia Developer Wiki
Jump to: navigation, search

This article explains how to ... 'Nokia In-application Purchase API SDK flexibility allows developer to create different business models to monetize applications. In-application Purchase SDK for Qt contains example application project BookStore that demonstrates use of third-party product resource server. This example application allows user to buy a product and use it forever. How with minimal efforts to turn the project to subscription business model when user rights to download product may expire and user have to re-new his subscription?

Article Metadata
Tested with
Devices(s): N8
Platform(s): Symbian^3 and later
Platform Security
Signing Required: can be self-signed
Capabilities: Networking
Keywords: In-app Purchase API, IAP, non-DRM protection model
Created: User:username ()
Last edited: izinin (12 Mar 2012)



Book store example application can be found in In-app Purchase for Qt by the path after installation \iap_qt_sdk_0.3.1_24.01.12\Examples\InApplicationPurchase\BuyAndDownloadExample This application project demonstrates how to implement In-application Purchase with your own access control to protected resources that are stored on third party server. Third party server can validate user requests for a product with OVI Store via Purchase Ticket Verification API. Book store example application functionality allows user to buy a product and use it forever. How with minimal efforts to implement subscription model on top of Book store example application?

Implementation approach


When user requests server for a product, server checks whether this product has already been bought by this user. To do this checking server implementation dbaseManager has function
 public function getTicket($var_account, $var_prodid)
that returns purchase ticket or empty string.

Before the ticket existence check we are going to introduce Subscription expiration check. Upon the Subscription expiration checking result existed ticked for the requested product belongs to this user may be deleted if it is found that this purchase expired. Then if the ticked record has been deleted in Subscription expiration check, dbaseManager.getTicket will return empty string indicating user has to buy that product.

The rest of Book store example application business logic will remain unchanged.

performance consideration

Subscription expiration check for a product will be performed only for user who request this product for performance reason -- i.e. we don't scan the whole purchase list for purchase expiration.


  1. We need introduce expiration timer to the product catalog database implementation
  2. We need to check whether subscription is expired in the server code


Add categories below. Remove Category:Draft when the page is complete or near complete

122 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.


Thank you!

We appreciate your feedback.