Não é possível descobrir como restaurar transações em compras no aplicativo no Android

Estou muito confuso com o faturamento no aplicativo do Android em relação a RESTORE_TRANSACTIONS.

Eu tenho este snippet para fazer uma doação no meu app:

BillingHelper.requestPurchase(mContext, "donation");

Funciona muito bem, sem problemas. O problema é aqui, quando a compra é concluída, defino um valor booleano:

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

O aplicativo funciona como planejado depois disso, a menos que o usuário desinstale o aplicativo. Eu armazeno o DONATE_VERSION dentro das preferências compartilhadas. Armazenar as informações de compra em um banco de dados pessoal na internet não é uma opção.

Quando o usuário reinstala o aplicativo, a única maneira de remover os anúncios da doação é doando novamente. Eu não quero que seja esse o caso. Quero poder consultar o Google sobre os resultados de quais itens (neste caso, o item "doação") foram comprados. Eu chamo isso de onCreate ():

BillingHelper.restoreTransactionInformation(BillingSecurity.generateNonce());

Mas agora o que? Se o usuário comprou anteriormente a compra gerenciada por aplicativo de "doação", como posso consultar o google para obter as informações sobre quais itens foram comprados do faturamento no aplicativo, para que eu possa definir meu boleano novamente? Por favor, seja o mais claro possível, já que estou mexendo com isso, conversando no IRC e vasculhando as APIs por cerca de 6 horas agora e não consigo entender isso.

EDITAR:

Meu método 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