Как я могу купить товар в Google Play несколько раз?

Я могу купить только один предмет ("productitem1"). Если бы я приобрел этот предмет, я не могу купить его снова. Но мне нужно купить его несколько раз. В консоли Google Play я могу выбирать только между "Управляемыми внутриигровыми продуктами" и "подпрограммами". Я настроил его на "Управляемые продукты в приложении".

@Override
protected void onActivityResult(int request, int response, Intent data) {
    if (request == 42) {
        int responseCode = data.getIntExtra("RESPONSE_CODE", 0);
        String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
        String dataSignature = data.getStringExtra("INAPP_DATE_SIGNATURE");
        if (response == RESULT_OK) {
            try {
                JSONObject jo = new JSONObject(purchaseData);
                String productId = jo.getString("productId");
                Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();
            } catch (JSONException e) {
                Log.e(getClass().getSimpleName(), "JSONException", e);
            }
        }
    }
}

btnBuy.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            final String name = "productitem1";
            try {
                Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(), name, "inapp", "");
                if(buyIntentBundle.getInt("RESPONSE_CODE")==0) {
                    PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
                    startIntentSenderForResult(
                            pendingIntent.getIntentSender(), 42, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
                }
            } catch (Exception e) {
                Log.e(Start.this.getClass().getSimpleName(),"Exception:",e);
            }

        }
    });

2 ответа

Прежде чем вы сможете купить другой товар с таким же SKU, вам нужно использовать его, используя один из методов, доступных в API биллинга в приложении, например IabHelper.consumeAsync()

mHelper.consumeAsync(inventory.getPurchase(SKU_ITEM), mConsumeFinishedListener);

IabHelper.OnConsumeFinishedListener mConsumeFinishedListener =
           new IabHelper.OnConsumeFinishedListener() {
    public void onConsumeFinished(Purchase purchase, IabResult result) {
        if (result.isSuccess()) {
            // provision the in-app purchase to the user
            // (for example, credit 50 gold coins to player's character)
        } else {
            // handle error
        }
    }
};

Более подробная информация здесь: https://developer.android.com/training/in-app-billing/purchase-iab-products.html

      IabHelper.OnConsumeFinishedListener onConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
        @Override
        public void onConsumeFinished(Purchase purchase, IabResult result) {
            try {
                Log.d("Tag", "this is onConsumeFinished - "+result.toString()+" and purchased"+purchase.toString());
                mHelper.consumeAsync(purchase,onConsumeFinishedListener);
            } catch (IabHelper.IabAsyncInProgressException e) {

                Log.d("Tag", "this is onConsumeFinished Error -  "+e.toString());
                e.printStackTrace();
            }
        }
    };
Другие вопросы по тегам