2012-07-11 15 views
6

Esta es la primera vez que implemento la facturación en la aplicación de Android y tomé la mayor parte del código directamente desde guideline y todo se olvida perfectamente hasta que pensé en la devolución. La aplicación de ejemplo ya ha implementado un reembolso, ¡pero de una manera extraña! El reembolso se recibe en la aplicación como la compra, pero con el estado de la restitución que es totalmente comprensible, pero la fuente original es el siguiente:Reembolso de facturación en la aplicación de Android

 // Count the number of times the product was purchased 
     while (cursor.moveToNext()) { 
      int stateIndex = cursor.getInt(2); 
      PurchaseState state = PurchaseState.valueOf(stateIndex); 
      // Note that a refunded purchase is treated as a purchase. Such 
      // a friendly refund policy is nice for the user. 
      if (state == PurchaseState.PURCHASED || state == PurchaseState.REFUNDED) { 
       quantity += 1; 
      } 
     } 

     // Update the "purchased items" table 
     updatePurchasedItem(productId, quantity); 

su artículo añadiendo incluso si era devuelto y no tengo idea de por qué es esto? ¿El artículo devuelto tiene una identificación especial o lo que me falta? Solo he intentado esto con los productos de prueba, así que no tengo idea.

método updatePurchasedItem elimina la entrada de la mesa si la cantidad es 0, lo que parece totalmente correcto, así que cambió mi código a este

 while (cursor.moveToNext()) { 
      int stateIndex = cursor.getInt(2); 
      PurchaseState state = PurchaseState.valueOf(stateIndex); 
      // Note that a refunded purchase is treated as a purchase. Such 
      // a friendly refund policy is nice for the user. 
      if(Consts.DEBUG) 
       Log.v(TAG, state == PurchaseState.PURCHASED ? "purchase" : "refund"); 

      if (state == PurchaseState.PURCHASED) { 
       quantity += 1; 
      } else if(state == PurchaseState.REFUNDED) { 
       quantity = 0; 
      } 
     } 

     // Update the "purchased items" table 
     updatePurchasedItem(productId, quantity); 

pero dudo que habría un código incorrecto en el ejemplo de aplicación, así que estoy totalmente seguro si lo estoy haciendo bien!

¿Cómo debo manejar esto? ¡Por favor, ayúdame!

+0

Podría ser solo un error. ¿La variable de cantidad mide las compras totales de un tipo de artículo, o solo todas las compras (incluido el tipo de "reembolso")? No me sorprendería si fuera un error, ya que el ejemplo de suscripción que existe en el sitio para desarrolladores de Android no funciona sin una modificación. – BDFun

+0

La cantidad es por la cantidad de artículos comprados en ese momento (no creo que sea posible comprar más de un artículo a la vez), y por alguna razón está aumentando la cantidad incluso si el artículo fue reembolsado. updatePurchasedItem elimina la entrada si recibe un producto con una cantidad de 0, que se supone que indica un reembolso por lo que sé, ya que no usa los datos de estado en ningún otro lado. Puede consultar el ejemplo aquí http://developer.android.com/guide/google/play/billing/billing_integrate.html#billing-download – Ruuhkis

Respuesta

5

La tabla de historial tiene una sola entrada por compra. Esto significa que una compra que fue reembolsada posteriormente tendrá, después del reembolso, un único registro de historial del producto con un estado de "reembolso".

Al contar las compras, un estado "Reembolsado" sugiere que el artículo ha sido comprado. Depende entonces del desarrollador decidir si el usuario debería tener acceso a productos reembolsados. (Hay un ejemplo en este sitio de un desarrollador que desea reembolsar las compras realizadas por personas que ya han donado dinero, y desea permitirles seguir usando el producto).

Si no desea que los reembolsos cuenten, debe cambiar el código para agregar la cantidad de una compra, pero no hacer nada para obtener un reembolso. (No ajuste la cantidad a cero).

En los productos de aplicaciones vienen en 3 variedades:

  1. elemento gestionado: Google no permite comprar estos productos más de una vez. La cantidad total puede agregar hasta cero o solo uno.

  2. Artículo no administrado: los usuarios pueden comprar dichos productos muchas veces. La cantidad total puede ser cero o más

  3. Suscripciones: Igual que los artículos gestionados.

+0

¡Gracias por su respuesta clara! – Ruuhkis

Cuestiones relacionadas