Dynamic License Flow
In the Blackberry App World Vendor Portal there is a new tab under an application called "Licensing". From there the developer is able to choose the license type from either "Free", "Paid" or "Try & Buy".
If the developer does not select free, they will see some additional fields appear. The first field is the "License Key Model", choices are Static, Single, Pool or Dynamic. Static means that there is no license key needed to run the app, for trials there is a checkbox on the release to indicate it is a trial version. Single means there is a single key the developer enters into the portal to unlock the application. Pool means that the developer sends RIM a pool of serial numbers that are handed out one at a time to each customer.
The last model, Dynamic, means that the App Store server will perform an HTTP connection to the developers website when it is time to generate a license key, the developer website will generate a dynamic license key based on their own pre-determined algorithm, for example based on the device PIN number, phone number or email address.
1. Vendor uploads an application with a dynamic license model, providing an HTTP URL where this license will be generated
2. User purchases an application
3. App Store collects info from end user
4. App Store server contacts vendor server to obtain License Key
5. License Key is generated
6. License Key stored in the App Store server
7. User downloads the application via the App Store Client
8. Application is registered based on Key from App Store server
Details:
On a purchase request the vendor portal will do an HTTP post to the indicated URL:
http://www.webpage.com/xxx.php
The request is as follows:
POST /pathfromdeveloper HTTP/1.1
Content-Type: application/www-url-encoded
Content-Length: 120
Host: hostfromdeveloper
PIN=12341234&email=customeremail@email.com&product=product&version=1.2&transactionid=123&test=false
The vendor portal expects the following response:
HTTP/1.1 200 OK
Content-Type: application/www-url-encoded
Content-Length: 20
key=ABCDEFGHIJK
Note that the PIN is passed in hexadecimal format.