Ursprünglich hatte ich den Code nur einmal für den Kauf implementiert.Möchten Sie die Geschichte des gekauften Artikels kennen
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
// if we were disposed of in the meantime, quit.
if (mHelper == null) return;
if (result.isFailure()) {
Log.e(TAG,"Error purchasing: " + result);
return;
}
if (!verifyDeveloperPayload(purchase)) {
Log.e(TAG,"Error purchasing. Authenticity verification failed.");
return;
}
Log.d(TAG, "Purchase successful.");
if (purchase.getSku().equals(ITEM_SKU)) {
// bought 1/4 tank of gas. So consume it.
Log.d(TAG, "Purchase is gas. Starting gas consumption.");
Log.e("Successful","prrrrrrr");
GlobalClass.savePreferences2("isPremiumUser",1,context);
mHelper.consumeAsync(purchase, mConsumeFinishedListener);
}
}
};
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
public void onConsumeFinished(Purchase purchase, IabResult result) {
Log.d(TAG, "Consumption finished. Purchase: " + purchase + ", result: " + result);
// if we were disposed of in the meantime, quit.
if (mHelper == null) return;
// We know this is the "gas" sku because it's the only one we consume,
// so we don't check which sku was consumed. If you have more than one
// sku, you probably should check...
if (result.isSuccess()) {
// successfully consumed, so we apply the effects of the item in our
// game world's logic, which in our case means filling the gas tank a bit
Log.d(TAG, "Consumption successful. Provisioning.");
Log.e("Consume ","Successful");
start_Activity();
}
else {
Log.e("Purchase ","failed"+result);
}
Log.d(TAG, "End consumption flow.");
}
};
Dies funktioniert nur, bis der Benutzer die App deinstalliert. Jetzt möchte ich es in einen einmaligen Kauf umwandeln. Ich habe
IabHelper.OnConsumeFinishedListener and mHelper.consumeAsync(purchase, mConsumeFinishedListener);
aus meinem Code entfernt. Es funktioniert gut für die zukünftigen Zahlungen. Aber ich möchte, dass die Zahlungen, die vor den Änderungen vorgenommen wurden, auch nach der Neuinstallation der App keine Bezahlung erfordern. Ist es möglich, das zu tun?