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