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.
- Expiración de facturación dentro de la aplicación
- Android IAB. Error - Se requiere autenticación. Debes iniciar sesión en tu cuenta de Google.
- IAB Error Ya poseiste este artículo
- Eliminar el registro de facturación en la aplicación de la cuenta de prueba de Google para la prueba de nuevo
- Error de facturación en la aplicación de Android InvalidKeySpecException
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?
- ID de pedido de Google Play actualizado a un nuevo formato
- ¿Cómo podría comprobar mediante programación si el usuario que está tratando de comprar en el elemento de facturación de la aplicación es su editor?
- Compruebe el estado de compra de Android pero devuelva el token de compra no se encontró
- Lista oficial de países para la aplicación de facturación Android?
- Cambiar el idioma predeterminado de los productos integrados en Android
- Android inapp-billing - averiguar la versión de la API
- No se puede cambiar la moneda predeterminada para la facturación en la aplicación
- En la facturación de aplicaciones getPrice () Android
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.
- HttpPost falló debido a "No se puede reintentar solicitud con una entidad de solicitud no repetible"
- Detección de colisiones y respuesta a colisiones