Ta wersja aplikacji nie jest skonfigurowana do rozliczeń za pośrednictwem Google Play

269

Kiedy próbuję uruchomić aplikację z rozliczeniami w aplikacji, pojawia się błąd: „Ta wersja aplikacji nie jest skonfigurowana do fakturowania w Google Play. Więcej informacji znajdziesz w Centrum pomocy”.

Mam pozwolenie na rozliczanie już w pliku manifestu i mam podpisany plik .apk przesłany jako wersja robocza do Google Play, a także zainstalowałem ten sam podpisany plik APK na moim telefonie.

Czy jest jakaś pomoc w rozwiązaniu tego problemu?

Portier
źródło

Odpowiedzi:

339

Ten błąd może być spowodowany kilkoma przyczynami.

Oto lista wymagań dotyczących testowania Google IAB.

Wymagania wstępne:

  1. AndroidManifest musi zawierać uprawnienie „com.android.vending.BILLING” .
  2. APK jest wbudowany w tryb wydania .
  3. APK jest podpisany przy użyciu certyfikatu (certyfikatów) wydania . (Ważne: „Podpisywanie aplikacji przez Google Play” działa tylko wtedy, gdy pobierasz bezpośrednio z Google Play Play!)
  4. APK jest przesyłany do kanału dystrybucji alfa / beta (wcześniej - jako wersja robocza) do konsoli programisty co najmniej raz. (zajmuje to trochę czasu ~ 2h-24h ).
  5. Produkty IAB są publikowane, a ich status jest ustawiony na aktywny .
  6. Konta testowe są dodawane w konsoli programisty.

Wymagania testowe:

  1. Testowy plik APK ma tę samą wersjęKod przesłany do konsoli programisty.
  2. Testowy plik APK jest podpisany za pomocą tego samego certyfikatu (certyfikatów), co ten przesłany do dev.console.
  3. Konto testowe (nie programista) - jest kontem głównym na urządzeniu. (Konto główne może nie być konieczne - zgodnie z komentarzem @MinosL )
  4. Konto testowe jest włączone jako tester i jest powiązane z prawidłową metodą płatności . ( @Kyone )

PS: Debugowanie za pomocą certyfikatu wydania : https://stackoverflow.com/a/15754187/1321401 (Thnx @dipp dla łącza)

PPS: Chciałem tworzyć tę listę już od dawna.

Thnx @zlgdev , @Kyone , @MinosL dla aktualizacji

Luten
źródło
5
Nie zapomnij upewnić się, że konto używane do testowania IAB jest włączone jako tester przy użyciu „opcjonalnego adresu URL” wygenerowanego po przesłaniu kompilacji; I że jest to powiązane z prawidłową metodą płatności .
Kyone
3
Czy nie powinno być łatwiej po prostu przetestować IAP? Lub ogólnie sprawdzić rzeczy
Juan
1
również warte odnotowania; konto testowe nie powinno być powiązane z kontem programisty (nie powinno mieć dostępu do przesyłania APK)
guness
2
również warte odnotowania; jeśli włączona jest opcja „Certyfikat podpisywania aplikacji”, nie możemy używać naszego lokalnego pakietu APK do testowania rzeczywistych zakupów, ponieważ nie możemy podpisywać przy użyciu certyfikatu podpisywania. (zajęło mi to 3 godziny, żeby się dowiedzieć)
gunessa
1
Z powodzeniem testowałem z 1) podpisaną aplikacją do debugowania, która 2) nie jest głównym kontem na urządzeniu , więc proces testowania Google IAB wydaje się nie być tak rygorystyczny, jak wspomniano powyżej.
MinosL,
194

Ahh znalazł rozwiązanie po kilku godzinach prób.

  1. Google zajmuje trochę czasu, aby przetwarzać aplikacje i aktualizować je na swoich serwerach, dla mnie zajmuje to około pół dnia. Po zapisaniu pliku APK jako wersji roboczej w Google Play musisz poczekać kilka godzin, aż produkty w aplikacji zareagują normalnie i umożliwią regularne zakupy.
  2. Wyeksportuj i podpisz APK. Niepodpisany plik APK próbuje dokonać zakupów, pojawi się błąd.
Portier
źródło
71
Wow, czy to poważne? Właśnie wpadłem na ten sam problem. Czy zrobiłem wszystko, o co poprosił mnie Google, aby przetestować rozliczenia w aplikacji, ale wciąż otrzymuję ten sam komunikat o uchyleniu się od błędu. Chyba będę musiał poczekać i zobaczyć. Ale czy Google naprawdę oczekuje, że nasi programiści będą czekać godziny za każdym razem, gdy będziemy musieli zaktualizować naszą aplikację w celu wdrożenia rozliczeń w aplikacji? Mówiąc delikatnie, wydaje mi się to niewłaściwe.
Simon
6
Czy możesz testować podczas połączenia z Android Studio / działaniem podczas połączenia z debuggerem? A może musisz zainstalować wersję apk przez USB?
Alfie Hanssen,
3
Czy istnieje łatwiejszy sposób na przetestowanie procesu zakupu niż: Narzędzia Android> Eksportuj podpisany projekt ... itd., A następnie ręcznie skopiuj plik APK na urządzenie, Testuj ... powtórz? Coś mi brakuje?
przewodowy 00
4
Poważnie, nie mogę używać aplikacji z certyfikatem debugowania i testować rozliczeń w aplikacji?
TacB0sS
8
Zauważ, że MOŻESZ używać kompilacji debugowania, bezpośrednio z IDE podczas pracy. Wystarczy zmienić plik kluczy debugowania na taki, który pasuje do sklepu z wersjami. Zobacz ten post, aby uzyskać więcej informacji na temat: stackoverflow.com/questions/10886814/...
cottonBallPaws
137

To samo stanie się, jeśli opublikowana wersja nie jest taka sama jak wersja testowana na telefonie.

Na przykład przesłana wersja to android:versionCode="1", a wersja, którą testujesz na telefonie, toandroid:versionCode="2"

sandalone
źródło
3
czy możesz mi powiedzieć, co jeśli przesłana wersja jest, android:versionCode="1"a telefon jest android:versionCode="2"dozowany, jest w porządku, czy muszę zmienić moją aplikację Google Play?
Youddh,
1
Musisz tylko obniżyć wersję lokalną do „1”, aby pasowała do bieżącej wersji na żywo, przynajmniej tymczasowo w celu przetestowania.
Romain,
2
Wygląda na to, że istnieją 2 typowe poprawki tego błędu w zależności od sytuacji. W moim przypadku to był ten.
Matt
Dziękuję, to był problem. Debugowanie przebiegło dobrze z wydaniem podpisanej apk na moim podłączonym urządzeniu. Następnie zmieniłem kod wersji i zaczął pojawiać się błąd 1005. uff!
Anna Billstrom
@ Anna pamiętaj, że -1005 jest również USER_CANCELLED, jeśli używasz iabHelper
JacksOnF1re
47

Musisz podpisać swój APK za pomocą certyfikatu na żywo. Następnie zainstaluj to na swoim urządzeniu testowym. Następnie możesz przetestować InAppBilling. Jeśli testujesz aplikację przez bezpośrednie uruchomienie zaćmienia urządzenia (w trybie debugowania), pojawi się ten błąd.

Jeśli używasz android.test.purchasedjako jednostki SKU, będzie działać przez cały czas, ale nie będziesz mieć dewelopera Payload w ostatecznej odpowiedzi.

Jeśli korzystasz z własnego szkicu w elemencie aplikacji, możesz go przetestować do końca, ale zostaniesz obciążony opłatą, więc będziesz musiał go później zwrócić.

Nie można kupować przedmiotów za pomocą tego samego konta Gmail, którego używasz w konsoli programistycznej Google Play.

Chirag Patel
źródło
1
+1 Uruchamianie z debugera używa certyfikatu debugowania. Po wyeksportowaniu aplikacji i utworzeniu nowego klucza publicznego (i zainstalowaniu go w konsoli programisty), po prostu wyślij do siebie apk i zainstaluj go ze skrzynki odbiorczej Gmail.
cdavidyoung
Jeśli chcę wypróbować „android.test.purchurch”, czy zmienię SKU zarówno w moim kodzie, jak i w konsoli programisty?
Rocologo
26

W konsoli programisty:

Settings-> Account details-> License Testing-> Konta Gmail z dostępem testowym

i wpisz tutaj swoje konta

Pablo Cegarra
źródło
Działa jak marzenie.
Jordan
17

Jeśli jesteś tutaj od 2018 roku, musisz pobrać APK bezpośrednio ze Sklepu Play i zainstalować „pochodną” APK. Może to dlatego, że Google Play Store ma funkcję „Podpisywanie aplikacji przez Google Play”.

Law Gimenez
źródło
1
Który APK? Korzystam z AIDL, czy nadal muszę to robić?
Zhen Liu,
@ZhenLiu Chyba nie potrzebne
Law Gimenez,
Ponadto aplikacji nie można już zainstalować na urządzeniu w inny sposób (np. Android Studio). Instalacja / aktualizacja ze Sklepu Play będzie działać, ale IAP nie będzie - dostaniesz błąd OP.
JDune,
Jak to debugujemy?
Oliver Dixon
3

Stanie się tak, jeśli użyjesz innej wersji APK niż ta w Google Play.

Amalka
źródło
3

Pozwól mi dodać, co się ze mną stało, może komuś pomóc.

Było to głównie spowodowane podpisaniem umowy.

Ponieważ dodałem szczegóły podpisywania w strukturze projektu, myślałem, że za każdym razem, gdy uruchamiam, instaluje się oczekiwany podpisany apk. Ale wybrano typ kompilacji „debugowanie”.

Poniższa poprawka rozwiązała problem dla mnie.

  • Wygenerowano podpisany plik APK typu „release”.
  • Ręcznie zainstaluj apk.
Shree Harsha S.
źródło
2

W moim przypadku zobaczyłem tę samą wiadomość z powodu różnych podpisów zainstalowanej aplikacji i przesłanej na apk rynku.

gorgona
źródło
2

W przeciwieństwie do wielu odpowiedzi i komentarzy na temat SO i innych witryn NIE musisz przeprowadzać wstępnych testów wersji alfa / beta produktu, który został pobrany z Google Play na urządzenie testowe (proces publikacji alfa / beta często zjada połowa dnia). Nie musisz też ładować i ponownie ładować podpisanego pakietu APK ze studia programisty na urządzenie testowe.

Możesz debugować wstępną wersję Google Play w usługach rozliczeniowych aplikacji za pomocą aplikacji do debugowania załadowanej ze studia programisty bezpośrednio na urządzenie testowe za pośrednictwem ADB. Jeśli występują błędy, które temu zapobiegają, prawdopodobnie zrobiłeś coś złego w kodzie. Zwróć szczególną uwagę na CASE swojego kodu SKU (identyfikatory produktu) i ich format (na przykład, jeśli ładujesz pakiet APK jako com.mydomain.my_product_id, upewnij się, że próbujesz go kupić w ten sposób - podając tę ​​samą obudowę i domenę) . Zwróć również szczególną uwagę na swój itemType - powinien to być odpowiednio „inapp” lub „subs” w przypadku odpowiednio zarządzanych / niezarządzanych zakupów lub subskrypcji aplikacji.

Zgodnie z sugestią Chirag Patel, pod warunkiem, że masz poprawnie ustalony kod bilingowy, przeprowadź wszystkie testy przy użyciu Sku android.test.purchased (ID produktu) podczas wstępnych testów. Sprawdź ten identyfikator podczas operacji rozliczeniowych, aby przekazać go przez kontrolę podpisu, tokena i ładunku, ponieważ dane te nie są dostarczane przez system testowy Google. Dodatkowo podaj jeden z produktów testowych ten identyfikator, aby przetestować jego zakup, odblokowanie / załadowanie i prezentację przez cały schemat. Aby WYCZYŚĆ zakup, po prostu go zużyj, przekazując ten sam SKU ORAZ sformatowany w ten sposób ciąg tokenów - żadne inne pola nie są istotne:

    "inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";

Po zakończeniu tej fazy testowania przejdź do testów pół-na żywo z produktem alfa / beta. Utwórz grupę Google (zasadniczo listę mailingową), dodaj do niej wiadomości e-mail użytkowników testowych i dodaj / zaproś tę grupę do przetestowania urządzenia na tym etapie (wykonywane w części „APK” na liście deweloperów aplikacji Google). Zakupy będą symulowane, ale nie będą faktycznie obciążane - jednak w celu wyczyszczenia i ponownego przetestowania zakupów Google wskazuje, że musisz je zwrócić z portfela Google. TO jest jedyna faza testów, która wymaga czasochłonnego procesu korzystania z obciążeń alfa / beta i użytkowników testowych.

Epsilon3
źródło
1

Miałem ten sam problem i nie został rozwiązany, zanim przeczytałem post z DZDomi. Nagle okazało się, że w Konsoli programisty Google jest ustawienie, które należy włączyć. W sekcji „Zakupy w aplikacjach” znajduje się wiersz dotyczący Twojego produktu, a po prawej stronie znajduje się jego status. Powinno być AKTYWNE!

Søren
źródło
0

mój problem polegał na tym, że próbowałem to sprawdzić za pomocą debug.keystore, mam na myśli uruchomienie go za pomocą eclipse. mój telefon i wtedy mogłem przetestować go normalnie.

Gal Rom
źródło
0

Problem występuje również wtedy, gdy dodałeś zakup w aplikacji po przesłaniu apk, ale nie opublikowałeś aplikacji w sklepie Play (wersja alfa, beta i produkcja).

Co w zasadzie oznacza, że ​​musisz dodać zakup w aplikacji PO opublikowaniu apka w sklepie Play (wersja alfa, beta i produkcja). W przeciwnym razie nie będzie można kupić ani zapytać o zakup w aplikacji.

DZDomi
źródło
0

Innym powodem nie wymienionym tutaj jest to, że musisz testować na prawdziwym urządzeniu. Emulator staje się naprawdę dobry, więc łatwo popełnić błąd.

JDenais
źródło
0

Ostatnio Google wprowadziło zmianę w swoich systemach, a ponieważ przesłałeś co najmniej jeden pakiet APK do konsoli, możesz przetestować swoje żądania w aplikacji za pomocą aplikacji z dowolnym kodem / numerem wersji.

Odsyłacz LINK

Skonfiguruj, gradleaby podpisać kompilację debugowania do debugowania.

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file("my-release-key.jks")
            storePassword "password"
            keyAlias "my-alias"
            keyPassword "password"
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
            ...
        }
    }
}
Anoop M.
źródło
0

ROZWIĄZANIE

Poczekaj chwilę po przesłaniu aplikacji do sklepu Play, ponieważ Google potrzebuje trochę czasu na aktualizację wersji aplikacji. To zadziała!

Ali Akram
źródło
0

Mam ten sam problem w moto c2 + w moim przypadku jest to problem z urządzeniem po ponownym uruchomieniu, a następnie rune idealnie ...

Sagar Pithiya
źródło