2012-07-11 10 views
6

Po raz pierwszy wdrażam rozliczenia w aplikacji w aplikacji na Androida i większość kodu wykonałem prosto z guideline i wszystko zapominam doskonale, dopóki nie pomyślałem o zwrocie kosztów. Przykładowa aplikacja już została zwrócona, ale w dziwny sposób! Zwrot jest odbierany jako aplikacja na zakup, ale z państwa członkowskiego zwrotu, który jest całkowicie zrozumiałe, ale oryginalne źródło wygląda następująco:Zwrot pieniędzy za aplikację w Androidzie

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

jego pozycja dodając nawet jeśli został zwrócony i nie mam pojęcia, dlaczego to jest? Czy zwracany produkt ma specjalny identyfikator lub czego brakuje? Próbowałem tylko tego z testowaniem produktów, więc nie miałem pojęcia.

metoda updatePurchasedItem usuwa wpis z tabeli, jeśli ilość jest 0, co wydaje się całkowicie w porządku, więc zmieniłem kod do tego

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

ale wątpię, nie byłoby źle kod w przykładowej aplikacji, więc jestem całkowicie pewien, jeśli robię to dobrze!

Jak powinienem sobie z tym poradzić? Proszę pomóż mi!

+0

To może być po prostu błąd. Czy zmienna ilościowa mierzy całkowite zakupy typu przedmiotu, czy po prostu wszystkie zakupy (w tym rodzaj "zwrotu")? Nie zdziwiłbym się, gdyby był to błąd, ponieważ przykład subskrypcji, który istnieje w witrynie dla programistów Androida, nie działa bez poprawek. – BDFun

+0

Ilość odpowiada ilości zakupionych w tym czasie przedmiotów (nie sądzę, że można nawet kupić więcej niż jedną sztukę na raz) iz jakiegoś powodu podniosła ilość, nawet jeśli przedmiot został zwrócony. updatePurchasedItem usuwa wpis, jeśli otrzymuje produkt o wartości 0, co ma wskazywać na refundację, o ile wiem, ponieważ nie używa danych stanu w innym miejscu. Możesz sprawdzić przykład tutaj http://developer.android.com/guide/google/play/billing/billing_integrate.html#billing-download – Ruuhkis

Odpowiedz

5

Tabela historii zawiera jeden wpis na zakup. Oznacza to, że zakup, który został później zwrócony, będzie miał po zwrocie jeden rekord historii produktu o statusie "zwrócone".

Podczas liczenia zakupów stan "Zwrócono środki" sugeruje, że przedmiot został zakupiony. To od deweloperów zależy, czy użytkownik powinien mieć dostęp do zwrotów produktów. (Istnieje na tej stronie przykład dewelopera, który chce zwrócić środki dokonane przez osoby, które już przekazały pieniądze i chciałby zezwolić im na dalsze korzystanie z produktu).

Jeśli nie chcesz, aby zwroty się liczyć, powinieneś zmienić swój kod, aby dodać kwotę do zakupu, ale nie rób nic, aby otrzymać zwrot pieniędzy. (Nie ustawiaj ilości na zero).

W produktach aplikacji są w 3 odmianach:

  1. Zarządzane pozycja: Google nie zezwala się na zakup takich produktów więcej niż jeden raz. Całkowita ilość może dodać maksymalnie zero lub tylko jeden.

  2. Przedmiot niezarządzany: użytkownicy mogą kupować takie produkty wiele razy. Całkowita liczba może wynosić zero lub więcej

  3. Subskrypcje: To samo, co zarządzane pozycje.

+0

Dziękujemy za odpowiedź! – Ruuhkis