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);
}