Skip to main content
Samsung Developer Program

Purchasing Commercial and Consumable Items

Purchasing Commercial Items


Purchasing Consumable Items

The Buy Gas feature of this application is a consumable item. Once the gas runs out, you will need to repurchase more. Multiple purchases can be done with this type of commercial item. 

Purchasing a consumable item
  1. In the Trivial Drive UI, tap BUY GAS (C).
  2. The button tap invokes the function onBuyGasButtonClicked() of, which calls OpenIabHelper.launchPurchaseFlow(). InAppConfig.SKU_GAS is specified as a parameter.
public void onBuyGasButtonClicked(View arg0) {
    Log.d(TAG, "Buy gas button clicked.");
    if (setupDone == null) {
        complain("Billing Setup is not completed yet");
    if (!setupDone) {
        complain("Billing Setup failed");
    // launch the gas purchase UI flow
    // We will be notified of completion via mPurchaseFinishedListener
    Log.d(TAG, "Launching purchase flow for gas.");
    /* TODO: for security, generate your payload here for verification. 
    See the comments on verifyDeveloperPayload() for more info.
    Since this is a SAMPLE, we just use an empty string, but on a production app you should carefully generate this. */
    String payload = " ";
    mHelper.launchPurchaseFlow(this, InAppConfig.SKU_GAS, RC_REQUEST, mPurchaseFinishedListener, payload);
  1. OpenIabHelper.launchPurchaseFlow() calls the launchPurchaseFlow() function of
public void launchPurchaseFlow(Activity act, @NotNull String sku, int requestCode, 
                        IabHelper.OnIabPurchaseFinishedListener listener, String extraData) {
    Logger.d("Purchase flow for INAPP Item started");
    launchPurchaseFlow(act, sku, ITEM_TYPE_INAPP, requestCode, listener, extraData);
public void launchPurchaseFlow(Activity act, @NotNull String sku, String itemType, int requestCode,
                        IabHelper.OnIabPurchaseFinishedListener listener, String extraData) {
    appStoreBillingService.launchPurchaseFlow(act, SkuManager.getInstance().getStoreSku(appstore.getAppStoreName(), sku), 
  1. AppStoreInAppBillingService.launchPurchaseFlow() is invoked, which starts the billing service for the chosen app store. For Samsung, SamsungAppsBillingService.launchPurchaseFlow() is invoked.
public void launchPurchaseFlow(@NotNull Activity activity, @NotNull String sku, String itemType, int requestCode, 
                        OnIabPurchaseFinishedListener listener, String extraData) {
    String itemGroupId = getItemGroupId(sku);
    String itemId = getItemId(sku);
    Bundle bundle = new Bundle();
    bundle.putString(KEY_NAME_THIRD_PARTY_NAME, activity.getPackageName());
        // If 12-digit itemGroupId is specified in SKU mapping, bundle will include
        // itemGroupId if itemGroupId is not specified, third-party package name
        // will be used. (Samsung IAP v3.0)
    if (!itemGroupId.isEmpty()) {
        bundle.putString(KEY_NAME_ITEM_GROUP_ID, itemGroupId);
    bundle.putString(KEY_NAME_ITEM_ID, itemId);
    Logger.d("launchPurchase: itemGroupId = ", itemGroupId, ", itemId = ", itemId);
    ComponentName cmpName = new ComponentName(SamsungApps.IAP_PACKAGE_NAME, PAYMENT_ACTIVITY_NAME);
    Itent intent = new Intent(Intent.ACTION_MAIN);
    mRequestCode = requestCode;
    mPurchaseListener = listener; 
    purchasingItemType = itemType;
    mItemGroupId = itemGroupId; 
    mExtraData = extraData;
    Logger.d("Request code: ", requestCode);
    activity.startActivityForResult(intent, requestCode);
  1.  After a successful purchase, the result is sent back to via the IabHelper.OnIabPurchaseFinishedListener.
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
    public void onIabPurchaseFinished(IabResult iabResult, Purchase purchase) {
        if (purchase.getSku().equals(InAppConfig.SKU_GAS)) {
                // Bought 1/4 tank of gas. So consume it.
            Log.d(TAG, "Purchase is gas. Starting gas consumption.");
            mHelper.consumeAsync(purchase, mConsumeFinishedListener);
  • Was this article helpful?