Facturación en la aplicación de Android, compras perdidas

Estoy utilizando la facturación en aplicaciones de Google para mi aplicación de Android.

Utilicé la clase IabHelper de Google como, ya que su facturación parece extremadamente complicada.

Mi problema es que quiero saber si la compra es exitosa o no. Creo que estoy siguiendo el proceso correctamente, pero en mis registros veo a muchos usuarios que reciben la actualización, pero cuya compra nunca aparece en mi cuenta de pagos de Google Play. (Es decir, conseguir la actualización gratis).

Estoy registrando los ids de la orden del GP, a veces su un número como,

GPA.1234-5678-9123-1234

Pero a veces es como,

1234567891234.1234567891234

Normalmente, creo que es el no GPA órdenes que no cobran.

También creo que puede poner un pedido a través, a continuación, cancelarlo, y todavía obtener la actualización?

¿Cómo se asegura que el usuario pagó realmente?

Código:

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { public void onIabPurchaseFinished(IabResult result, final Purchase purchase) { if (result.isFailure()) { showMessage("Google Billing Purchase Error"); return; } else if (purchase.getSku().equals(sku)) { IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener = new IabHelper.QueryInventoryFinishedListener() { public void onQueryInventoryFinished(IabResult result, Inventory inventory) { if (result.isFailure()) { showMessage("Google Billing Error"); return; } else { if (inventory.hasPurchase(sku)) { showMessage("Thank you for upgrading"); grantUpgrade(); // ** This line gets call, but no payment occurs. } } } }; mHelper.queryInventoryAsync(mReceivedInventoryListener); } } }; mHelper.launchPurchaseFlow(this, sku, 10001, mPurchaseFinishedListener, ""); 

*** actualizado para comprobar "inventory.hasPurchase (sku)", pero aún así ver los usuarios que reciben la actualización, pero no pagan.

** tal vez los usuarios están utilizando Freedom hack? ¿Alguna manera de prevenir esto?

  if (result.isFailure()) { //If the user aborts or any other problems it will jump here } else { //The user purchased some item, check out which it is mIsPremium = inventory.hasPurchase(SKU_ANY_ITEM); } 

Por lo que respecta a su pregunta, este código ya verifica si el usuario realmente compró el artículo!

Compra premiumPurchase = inventory.getPurchase (SKU);

Boolean mIsPremium = (premiumPurchase! = Null && verifyDeveloperPayload (premiumPurchase));

If (mIsPremium) {

}

Google Play Store realiza un seguimiento de las compras para usted, por lo que no debe asumir que sólo porque la compra se realizó correctamente, el artículo permanecerá comprado. Es posible que un usuario obtenga un reembolso por una compra. Por esta razón, debe consultar el inventario del usuario cada vez que inicie y ajuste adecuadamente sus donaciones. De todos modos, tendría que hacer esta comprobación para poder admitir a los usuarios que esperan obtener la subvención cuando cambien a un nuevo dispositivo o desinstalen o vuelvan a instalar la aplicación.

  • ¿Cómo probar fácilmente las compras en la aplicación sin publicarlas o firmarlas primero?
  • La opción UnManaged no está disponible en la consola de Google Play para desarrolladores
  • ¿Son reembolsables para Android en la compra de consumibles compatibles con aplicaciones? - En API de facturación de aplicaciones V3
  • El elemento que ha solicitado no está disponible para su compra: facturación en la aplicación
  • Cómo corregir los errores en el archivo autogenerado IMarketBillingService.java?
  • Facturación en la aplicación: agregar facturación a una aplicación publicada existente
  • Determinar la fecha de compra original de una aplicación de Android
  • Usuario no es elegible para esta compra para la compra de la aplicación in Android
  • ¿En la facturación de la aplicación admite varias cuentas?
  • El artículo que usted pidió no está disponible para la compra
  • ClassNotFoundException: com.google.android.finsky.billing.lightpurchase.PurchaseParams
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.