2013-04-18 13 views
24

Pomyślałem, że rozumiem, jak działa rozliczanie w aplikacji i weryfikacja po stronie serwera dzięki odpowiedzi na previous question of mine, ale teraz, gdy o tym myślę jestem wciąż zagubiony ...Weryfikacja po stronie serwera zakupu w Google Play w aplikacji w wersji 3 (część 2)

to jest to, co mam i co chcę zrobić:

mam app gdzie użytkownicy mogą zakupić kilka „rzeczy”. Każda pozycja jest przechowywana na serwerze, a element powinien być dostępny do pobrania w aplikacji przy zakupie. Pozycje są produktami zarządzanymi, które można kupić tylko raz (tzn. Nie są zużywalne). Nie mam problemu z definiowaniem elementów w konsoli programisty Google Play i mogę wykonać udany zakup.

Czego nie rozumiem, to w jaki sposób mogę sprawić, aby mój serwer nie tylko sprawdzał zakup (za pomocą symbolu zakupu i podpisu), ale również wiedział, że jest to przedmiot X, a nie przedmiot Y, który został zakupiony? Czy istnieje jakiś interfejs API Google, w którym serwer może komunikować się z Google i zapytać, do którego elementu należy dany kupon, który należy? Czy jest jakiś inny sposób na zrobienie tego?

Odpowiedz

42

Nienawidzę odpowiadać na moje własne pytanie, ale hej, nikt inny nie zrobił! Ja i moi koledzy jeszcze raz temu spojrzeliśmy na problem. Rozwiązanie mojego problemu w końcu przyszło mi do głowy po ponownym sprawdzeniu, jak działa weryfikacja po stronie klienta w przykładzie z TrivialDrive. Człowieku, czy miałem ochotę założyć mój "głupi kapelusz", kiedy zrozumiałem, co jest nie tak.

Pomyślałem, że to kupon i podpis, który został użyty do zweryfikowania zakupu, ale w ten sposób nie było możliwości sprawdzenia, czy zakupiony przedmiot A lub element B został zakupiony.

Jeśli chcesz dokonać weryfikacji po stronie serwera (lub jakiejkolwiek weryfikacji w tej sprawie) przed udostępnieniem zawartości dla kupującego, to faktycznie oryginalne dane JSON (jeśli używasz klas IabHelper, otrzymasz oryginalny JSON z klasa Zakupu), której powinieneś używać razem z podpisem i kluczem publicznym. A ponieważ jest to oryginalne dane JSON przekazywane do serwera, zawiera ono również wszystkie informacje o zakupie (takie jak identyfikator SKU itp.).

Należy również ustawić ładunek programisty na coś, co jednoznacznie identyfikuje użytkownika (a nie urządzenie!). W naszym przypadku każdy użytkownik ma konto na serwerze i używam unikalnego identyfikatora użytkownika jako ładunku programisty.

/Mr.Grupy podpisania!

+0

Dzięki za informacje! Spędziłem 2 dni na ten problem. –

+9

Udzielanie odpowiedzi na własne pytanie jest wspierane przez StackOverflow, więc nie martw się. – Oliver

+0

Dziękuję za uwagę na IabHelper, aby użyć getOriginalJson – ilovett

Powiązane problemy