The BlackBerry 10 SDK enables you to use the same Payment Service that processes all purchases that users make in the BlackBerry World storefront. You can use the classes in the net.rim.blackberry.payment package to create a highly secure and consistent purchase experience that allows users to buy digital goods without leaving your application. The net.rim.blackberry.events package contains events that allow your application to listen for successful or unsuccessful purchases.
To sell digital goods from your application you must be a registered vendor with BlackBerry World and your application containing digital goods must be distributed exclusively through BlackBerry World. Digital goods go through a vetting process along with your applications. To sign up as a vendor, visit appworld.blackberry.com/isvportal.
Users can purchase digital goods using any of the payment types supported by BlackBerry World. Payment types can include billing to the wireless service provider (if available), credit card, or PayPal.
You can distribute digital goods in your application by using a number of different license models (some of which are supported by the Payment Service). Depending on the license models that your application uses, you might want to customize the way you present purchase options to reflect which digital goods were purchased already.
Digital goods that are registered as consumable must be purchased by a user for each use. For example, in a virtual world simulation, you could sell tickets to a virtual attraction or feed for a virtual animal. The Payment Service does not set any controls on the number of times that a user can purchase these goods.
Digital goods that are registered as non-consumable are purchased only once by a user. The Payment Service server blocks subsequent purchases by the user. In this scenario, you might want to provide a way for users to see their purchase history. By invoking the PaymentSystem.getExistingPurchases function, you can retrieve a record of a user's past purchases.
When you offer a non-consumable digital good, you must ensure that the digital goods are available through your application for a specific period of time after the user downloads the application. To view the required minimum time period in the Research In Motion SDK License agreement, visit http://us.blackberry.com/developers/legal.jsp.
You must also make sure that digital goods are still available if the user reinstalls the application or switches devices. Digital goods are not automatically restored, so it is up to you to make sure that users can download these digital goods again.
Digital goods that are registered as a subscription are purchased initially by a user, and the user is charged at regular intervals for continued use of the goods. When you register subscription-based digital goods, you must specify an initial fee and usage period, as well as a renewal fee and usage period. Users are charged the initial fee when they purchase the digital goods and can use the digital goods for the initial period of time. Users are then charged the renewal fee each time the usage period elapses so that they can continue to use the digital goods.
You can implement a trial period for your subscription-based digital goods by not specifying an initial fee. Users can download your digital goods and use them free of charge for the trial period and are charged after the trial period ends.
To purchase subscription-based digital goods in your application, users must be running BlackBerry World storefront 3.1.
The Payment Service doesn't provide support for free digital goods. Your application can distribute free digital goods, but you cannot use the Payment Service to process transactions for goods with no monetary value.
Registering digital goods with BlackBerry World
When you submit an application for review in the BlackBerry World vendor portal, you must also add the details about the digital goods that your application offers. You must provide the name, the SKU (the unique identifier for the digital goods), the license model (consumable or one-time payment), the pricing tier, and a description of the digital goods in each language that your application is available in.
If it is impractical to create a separate name and SKU for each of your digital goods, you can use the same name and SKU for multiple digital goods. For example, if you sell streaming video through your application, you could use one name and SKU for the digital goods that you sell at a particular price tier. In this scenario, you might register digital goods with the name "Video $4.99" and use the same SKU for every streaming video that you sell at the $4.99 pricing tier. This way you can update the purchase options without submitting a new version of your application. When you invoke the PaymentSystem.purchase() function, you can pass a metadata argument that allows you to differentiate between digital goods that reference the same SKU.
For more information about submitting applications and digital goods, see the BlackBerry World vendor documentation at www.blackberry.com/go/appworld/vendordocs/.