2016-08-08 31 views
24

Do czerwca 20 2016 r. Mogłem anulować zakupy testowe zrobione w mojej aplikacji. Wykonanie wielu zakupów w aplikacji (nie można ich użyć) z tego samego konta testowego ułatwiło opracowanie i przetestowanie kodu bez nadmiernego ryzyka.Jak anulować zakup zakupu w aplikacji na Androida?

Po 20 czerwca 2016 r. Zakupy nie zostały pokazane na moim koncie handlowym i . Nie mogłem wykonać więcej niż jednego zakupu z mojego konta testowego. Otrzymałem tylko wiadomość: "już jesteś właścicielem tego przedmiotu".

Zalogowałem wniosek do grupy wsparcia deweloper google i odpowiedź brzmiała:

Począwszy od 20 czerwca 2016, zmieniliśmy zakupów testowych na jednorazowe zakupy w aplikacji (IAP). Poprzednio testuj zakupy dla jednorazowych identyfikatorów zamówień generowanych przez IAP. Od 20 czerwca 2016 r. Jednorazowe IAP nie generują oficjalnych identyfikatorów zamówień (jeśli w ogóle) i nie będą wyświetlane w Merchant Center. To zachowanie dotyczy już subskrypcji IAP. Możesz dowiedzieć się więcej na temat testów rozliczeniach w aplikacji w Android Developers Centrum pomocy: https://developer.android.com/google/play/billing/billing_testing.html#testing-purchases

porządku .. więc idę do wspomnianego linku i tam sekcja tam: Anulowanie zakończone zakupów testowych który stanowi :

Google Play gromadzi zrealizowane zakupy testowe dla każdego użytkownika, ale nie przekazuje ich do przetwarzania finansowego. W niektórych przypadkach możesz ręcznie anulować zakup testowy, aby kontynuować testowanie. Aby to zrobić, otwórz stronę aplikacji w Sklepie Play. Jeśli zakup testowy, który chcesz anulować, jest subskrypcją, możesz również użyć metody cancel() funkcji API Purchases.subscriptions. Ważne: Metody refundacji() i odwołania() funkcji API Purchases.subscriptions nie obsługują zakupów testowych.

Więc idę na stronę aplikacji w sklepie Play ... i co dokładnie? strona nie podaje, co mam tam zrobić. ktoś wie?

mówi: można również użyć metody cancel() funkcji API Purchases.subscriptions.

co oznacza, że ​​używanie metody cancel() nie jest jedyną metodą.

Jak rozwiązać ten problem bez dodawania dodatkowego kodu w mojej aplikacji?

+1

Witam, rozwiązałeś to ?. Mam również do czynienia z tym samym scenariuszem po wykonaniu zakupu testowego. –

+1

można otworzyć cały zakup testowy za pomocą następującego linku: https: //play.google.com/store/account? Feature = gp_receipt, na tej stronie znalazłem tylko sposób anulowania za pomocą przycisku "Zgłoś problem". –

+0

@Ramesh_D Zgłoszenie problemu daje mi: "Wystąpił nieoczekiwany błąd. Spróbuj ponownie później." Jakieś inne pomysły? – galgo

Odpowiedz

3

Znalazłem rozwiązanie, które nie jest bardzo wygodne, ale działa. Wygląda na to, że możesz spożywać produkty, których nie można kupić, iw ten sposób możesz je kupić ponownie. Pracuję z PhoneGap więc mam tylko przykładowy kod dla plugin Cordova-plugin-zakupu:

store.when("your.product.id").updated(product => { 
    if(product.owned) { 
     var transaction = product.transaction; 
     product.transaction = null; 
     store.inappbilling.consumePurchase(
      function() { // success 
       alert("consume success"); 
      }, 
      function(err, code) { // error 
       alert("consume error " + err) 
      }, 
      product.id, 
      transaction.id 
     ); 
    } 
}); 

Zaktualizowana zwrotna jest wywoływana podczas wywoływania store.refresh() lub zakupu produktu. Tak więc, w zależności od przypadku użycia, chcesz zaimplementować dodatkową metodę sprawdzania, kiedy konsumować produkt.

Nie mam doświadczenia w zakresie natywnych płatności w aplikacjach na Androida, ale oczywiście można tam również konsumować produkty.

Edycja: Przepraszam, właśnie przeczytałem, że nie chcesz dodawać dodatkowego kodu do swojego projektu.Nie sądzę, aby było to możliwe w tej chwili, ale chciałbym zachować tutaj odpowiedź, ponieważ mogłoby to pomóc innym osobom próbującym przetestować płatności w aplikacji.

+0

Co to jest "store.inappbilling.consumePurchase' odpowiednik w Javie? –

+0

Drugie rozwiązanie cordova. Po prostu zmieniam typ na CONSUMABLE, uruchamiam aplikację, pozwalam jej to konsumować, zamykać, zmieniać i ponownie uruchamiać. – trueicecold

0

Nie znaleziono rozwiązania problemu. Moim obejściem jest po prostu usunięcie bieżącego użytkownika testu z listy użytkowników testowych, dokonanie prawdziwego zakupu, a następnie anulowanie go przy użyciu konsoli sprzedawcy.

+0

Gdzie jeszcze jesteś w Beta/Alpha? – powder366

+0

Nie, produkcja. – Eli

+0

Tylko FYI, możesz dokonać prawdziwego zakupu w wersji alfa lub beta. Nie jestem pewien, jakie są zasady Google dotyczące dokonywania prawdziwych zakupów, a następnie anulowania ich w celu testowania, więc nie mogę tego zalecić. –

9

Wszystkie zarządzane produkty w aplikacji są konsumpcyjne.

zgodnie z docs.

Oznacza to, że można konsumować przedmiot będący własnością zamiast anulować zakup i kupić go od nowa. Proponuję zapytań inwentaryzacji w momencie uruchamiania aplikacji:

mIabHelper.queryInventoryAsync(this);

Następnie można spożywać na własność przedmiot w callback:

@Override 
public void onQueryInventoryFinished(IabResult result, Inventory inventory) { 
    Purchase purchase = inventory.getPurchase(MY_SKU); 
    boolean isBought = (purchase != null && verifyDeveloperPayload(purchase)); 
    if (isBought) { 
     mIabHelper.consumeAsync(purchase, new OnConsumeFinishedListener() { 
      @Override 
      public void onConsumeFinished(Purchase purchase, IabResult result) { 
       //Clear the purchase info from persistent storage 
      } 
     }); 
    } 
} 

to jest ok do testowania przepływu IAB ale upewnij się, aby usunąć ten kod z wersji Release.

+0

to pomogło! dziękuję –

+0

Co masz na myśli przez ** // Czy usunąć informacje o zakupie z magazynu trwałego **? –

+1

To zależy od twojej implementacji. W moim przypadku dane dotyczące zakupów były przechowywane we wspólnych preferencjach, więc mogę sprawdzić inne działania. –

4

Poszedłem na główną stronę Konsoli Google Play i kliknąłem Zarządzanie zamówieniami. Dzięki temu mogłem wybrać wszystkie zakupy testowe i zwrócić je. Jestem głównym programistą aplikacji, więc mam dostęp. Jeśli jesteś testerem, prawdopodobnie będziesz musiał skontaktować się z zespołem pomocy technicznej i poprosić o zwrot pieniędzy za zamówienie.

+1

Genialna, genialna odpowiedź! Działa świetnie. Gdy transakcja została oznaczona jako "Zwrócono środki", wycofałem się z gry i wycofałem dane z pamięci podręcznej i aplikacji. Następnie zostałem wyłączony z subskrypcji i mogłem ponownie zakupić subskrypcję. –