Nie można dowiedzieć się, jak przywrócić transakcje zakupów w aplikacji w systemie Android

Bardzo mylę się z fakturowaniem aplikacji na Androida w odniesieniu do RESTORE_TRANSACTIONS.

Mam ten fragment do przekazania darowizny w mojej aplikacji:

BillingHelper.requestPurchase(mContext, "donation");

Działa świetnie, nie ma tam żadnych problemów. Problem jest tutaj, po zakończeniu zakupu ustawiam wartość logiczną:

if (BillingHelper.latestPurchase.isPurchased()) {
          DONATE_VERSION = true;
}

Po tym aplikacja działa zgodnie z przeznaczeniem, chyba że użytkownik odinstaluje aplikację. Przechowuję DONATE_VERSION wewnątrz wspólnych preferencji. Przechowywanie informacji o zakupie w osobistej bazie danych w Internecie nie jest opcją.

Gdy użytkownik ponownie zainstaluje aplikację, jedynym sposobem na usunięcie reklam z dotacji jest ponowne przekazanie darowizny! Nie chcę, żeby tak było. Chcę móc wysyłać zapytania do Google o wyniki, które zostały zakupione (w tym przypadku jut jutro przedmiot „darowizny”). Nazywam to w onCreate ():

BillingHelper.restoreTransactionInformation(BillingSecurity.generateNonce());

Ale co teraz? Jeśli użytkownik wcześniej zakupił zakupiony „darowiznę” zarządzaną w aplikacji, w jaki sposób mogę wysłać zapytanie do Google, aby uzyskać informacje o tym, które przedmioty zostały zakupione w ramach płatności w aplikacji, dzięki czemu mogę ponownie ustawić wartość logiczną? Bądź tak jasny, jak to tylko możliwe, ponieważ mam z tym kłopoty, czatuję na IRC i przeszukuję API przez około 6 godzin i nie mogę tego rozgryźć.

EDYTOWAĆ:

Moja metoda onReceive ():

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    Log.i(TAG, "Received action: " + action);
    if (ACTION_PURCHASE_STATE_CHANGED.equals(action)) {
        String signedData = intent.getStringExtra(INAPP_SIGNED_DATA);
        String signature = intent.getStringExtra(INAPP_SIGNATURE);
        purchaseStateChanged(context, signedData, signature);
    } else if (ACTION_NOTIFY.equals(action)) {
        String notifyId = intent.getStringExtra(NOTIFICATION_ID);
        notify(context, notifyId);
    } else if (ACTION_RESPONSE_CODE.equals(action)) {
        long requestId = intent.getLongExtra(INAPP_REQUEST_ID, -1);
        int responseCodeIndex = intent.getIntExtra(INAPP_RESPONSE_CODE, C.ResponseCode.RESULT_ERROR.ordinal());
        checkResponseCode(context, requestId, responseCodeIndex);
    } else {
       Log.e(TAG, "unexpected action: " + action);
    }

questionAnswers(2)

yourAnswerToTheQuestion