Print
Table of Contents

This documentation provides technical reference information for using the In-app Billing Version 3 API.

Server Response Codes


The following table lists all of the server response codes that are sent from Bazaar to your application. Bazaar sends the response code synchronously as an integer mapped to the RESPONSE_CODE key in the response Bundle. Your application must handle all of these response codes.

Table 1. Summary of response codes for In-app Billing Version 3 API calls.

Response CodeValueDescription
BILLING_RESPONSE_RESULT_OK0Success
BILLING_RESPONSE_RESULT_USER_CANCELED1User pressed back or canceled a dialog
BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE3Billing API version is not supported for the type requested
BILLING_RESPONSE_RESULT_ITEM_UNAVAILABLE4Requested product is not available for purchase
BILLING_RESPONSE_RESULT_DEVELOPER_ERROR5Invalid arguments provided to the API. This error can also indicate that the application was not correctly signed or properly set up for In-app Billing in Bazaar, or does not have the necessary permissions in its manifest
BILLING_RESPONSE_RESULT_ERROR6Fatal error during the API action
BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED7Failure to purchase since item is already owned
BILLING_RESPONSE_RESULT_ITEM_NOT_OWNED8Failure to consume since item is not owned

API Reference


The In-app Billing Version 3 API is defined in the IInAppBillingService.aidl file, which is included with the Version 3 sample application.

The getSkuDetails() method

This method returns product details for a list of product IDs. In the response Bundle sent by Bazaar, the query results are stored in a String ArrayList mapped to the DETAILS_LIST key. Each String in the details list contains product details for a single product in JSON format. The fields in the JSON string with the product details are summarized in table 2.

Table 2. Description of JSON fields with product item details returned from a getSkuDetails request.

KeyDescription
productIdThe product ID for the product.
typeValue must be “inapp” for an in-app purchase type.
priceFormatted price of the item, including its currency sign. The price does not include tax.
titleTitle of the product.
descriptionDescription of the product.

The getBuyIntent() method

This method returns a response code integer mapped to the RESPONSE_CODE key, and a PendingIntent to launch the puchase flow for the in-app item mapped to the BUY_INTENT key. When it receives the PendingIntent, Bazaar sends a response Intent with the data for that purchase order. The data that is returned in the response Intent is summarized in table 3.

Table 3. Response data from an In-app Billing Version 3 purchase request.

KeyDescription
RESPONSE_CODE0 if the purchase was success, error otherwise.
INAPP_PURCHASE_DATAA String in JSON format that contains details about the purchase order. See table 4 for a description of the JSON fields.
INAPP_DATA_SIGNATUREString containing the signature of the purchase data that was signed with the private key of the developer.

Table 4 describes the JSON fields that are returned in the response data for a purchase order.

Table 4. Descriptions of the JSON fields for INAPP_PURCHASE_DATA.

FieldDescription
orderIdA unique order identifier for the transaction.
packageNameThe application package from which the purchase originated.
productIdThe item's product identifier. Every item has a product ID, which you must specify in the application's product list on the Bazaar publisher site.
purchaseTimeThe time the product was purchased, in milliseconds since the epoch (Jan 1, 1970).
purchaseStateThe purchase state of the order. Possible values are 0 (purchased), 1 (canceled), or 2 (refunded).
developerPayloadA developer-specified string that contains supplemental information about an order. You can specify a value for this field when you make a getBuyIntent request.
purchaseTokenA token that uniquely identifies a purchase for a given item and user pair.

The getPurchases() method

This method returns the current un-consumed products owned by the user. Table 5 lists the response data that is returned in the Bundle.

Table 5. Response data from a getPurchases request.

KeyDescription
RESPONSE_CODE0 if the request was successful, error otherwise.
INAPP_PURCHASE_ITEM_LISTStringArrayList containing the list of productIds of purchases from this app.
INAPP_PURCHASE_DATA_LISTStringArrayList containing the details for purchases from this app. See table 4 for the list of detail information stored in each INAPP_PURCHASE_DATA item in the list.
INAPP_DATA_SIGNATURE_LISTStringArrayList containing the signatures of purchases from this app.
INAPP_CONTINUATION_TOKENString containing a continuation token to retrieve the next set of in-app products owned by the user. This is only set by the Bazaar service if the number of products owned by the user is very large. When a continuation token is present in the response, you must make another call to getPurchases and pass in the continuation token that you received. The subsequent getPurchases call returns more purchases and possibly another continuation token.
Was this content helpful?
Write your comment here...

If you have any comment on this content or any idea to make it better, use this form to send us your comment.

Publish Date: ۱۴۰۰-۰۳-۲۹ ۰۷:۳۵

Latest Update: ۱۴۰۰-۰۴-۱۱ ۱۲:۳۲