{"id":137902,"date":"2022-12-15T00:00:00","date_gmt":"2022-12-15T00:00:00","guid":{"rendered":"https:\/\/adapty.io\/pl-android-in-app-purchases-part-5-server-side-purchase-validation\/"},"modified":"2022-12-15T00:00:00","modified_gmt":"2022-12-15T00:00:00","slug":"android-in-app-purchases-part-5-server-side-purchase-validation","status":"publish","type":"post","link":"https:\/\/adapty.io\/pl\/blog\/android-in-app-purchases-part-5-server-side-purchase-validation\/","title":{"rendered":"Zakupy w aplikacji na Androida, cz\u0119\u015b\u0107 5: walidacja zakup\u00f3w po stronie serwera"},"content":{"rendered":"\n
Walidacja po stronie serwera (server-side validation) mo\u017ce pom\u00f3c w weryfikacji autentyczno\u015bci zakupu. Urz\u0105dzenie wy\u015ble \u017c\u0105danie do serwer\u00f3w Google, aby dowiedzie\u0107 si\u0119, czy zakup rzeczywi\u015bcie mia\u0142 miejsce i czy jest poprawny.<\/p>\n\n\n\n
W tym przewodniku om\u00f3wimy, jak skonfigurowa\u0107 walidacj\u0119 po stronie serwera dla aplikacji na Androida. <\/p>\n\n\n\n
Nale\u017cy zauwa\u017cy\u0107, \u017ce walidacja po stronie serwera nie jest obowi\u0105zkowa i zakupy w aplikacji b\u0119d\u0105 dzia\u0142a\u0107 tak\u017ce bez niej. Istniej\u0105 jednak pewne znacz\u0105ce jej korzy\u015bci:<\/p>\n\n\n\n
M\u00f3wi\u0105c z naszego do\u015bwiadczenia, pierwsza zaleta wystarczy, aby skonfigurowa\u0107 przetwarzanie zakup\u00f3w po stronie serwera.<\/p>\n\n\n\n\n\n
Mo\u017cemy podsumowa\u0107 walidacj\u0119 p\u0142atno\u015bci Androida za pomoc\u0105 tego schematu:<\/p>\n\n\n\n Aby pracowa\u0107 z Google Play Developer API, musisz najpierw wygenerowa\u0107 klucz do podpisania \u017c\u0105da\u0144. Najpierw musisz po\u0142\u0105czy\u0107 swoje konto konsoli Google Play (gdzie zarz\u0105dzasz aplikacj\u0105) z kontem Google Cloud (gdzie wygenerujesz klucz do podpisywania \u017c\u0105da\u0144). Po skonfigurowaniu wszystkiego konieczne b\u0119dzie przyznanie u\u017cytkownikowi prawa do zarz\u0105dzania zakupami. Potrzebny by\u0142by dedykowany artyku\u0142, aby opisa\u0107 ten proces. Na szcz\u0119\u015bcie om\u00f3wili\u015bmy to ju\u017c w przewodniku „krok po kroku”, kt\u00f3ry znajduje si\u0119 w dokumentacji Adapty<\/a>. <\/p>\n\n\n\n Zauwa\u017c, \u017ce zwykle musisz poczeka\u0107 24 godziny lub wi\u0119cej po wygenerowaniu klucza, aby zacz\u0105\u0142 dzia\u0142a\u0107. Aby tego unikn\u0105\u0107, po prostu zaktualizuj opis dowolnego produktu w aplikacji lub subskrypcji, kt\u00f3ra natychmiast aktywuje klucz. <\/p>\n\n\n\n Korzystamy z oficjalnej biblioteki google-api-python-client<\/a> do wsp\u00f3\u0142pracy z Google Play Developer API. Ta biblioteka jest dost\u0119pna dla wi\u0119kszo\u015bci popularnych j\u0119zyk\u00f3w i polecam jej u\u017cywanie, poniewa\u017c obs\u0142uguje wszystkie metody, jakich tylko mo\u017cesz potrzebowa\u0107.<\/p>\n\n\n\n W przeciwie\u0144stwie do walidacji po stronie serwera iOS<\/a>, w Androidzie zar\u00f3wno subskrypcja, jak i inne walidacje produktu s\u0105 realizowane przy u\u017cyciu r\u00f3\u017cnych metod. Dlatego podczas zatwierdzania transakcji musisz wiedzie\u0107, czy masz do czynienia z produktem, czy subskrypcj\u0105. W praktyce oznacza to, \u017ce musisz przes\u0142a\u0107 te dane z aplikacji mobilnej, a tak\u017ce zachowa\u0107 oznaczenie w bazie danych na wypadek, gdyby konieczna by\u0142a ponowna walidacja tokenu.<\/p>\n\n\n\n Drug\u0105 wa\u017cn\u0105 r\u00f3\u017cnic\u0105 jest to, \u017ce podczas gdy ka\u017cda transakcja ma sw\u00f3j w\u0142asny token w systemie Android, wszystkie transakcje na iOS u\u017cywaj\u0105 wsp\u00f3\u0142dzielonego sekretu, specyficznego dla aplikacji do przechowywania ca\u0142ej historii transakcji. Oznacza to, \u017ce je\u015bli chcesz by\u0107 w stanie przywr\u00f3ci\u0107 zakupy u\u017cytkownika w dowolnym momencie, konieczne jest przechowywanie wszystkich token zakupu, w przeciwie\u0144stwie do arbitralnego wybierania jednego z nich.<\/p>\n\n\n\n Aby zweryfikowa\u0107 subskrypcj\u0119, musisz wywo\u0142a\u0107 metod\u0119 purchases.subscriptions.get<\/em><\/a>. Zasadniczo jest to wywo\u0142anie \u017c\u0105dania GET:<\/p>\n\n\n\n<\/figure>\n\n\n\n
Uwierzytelnianie dla \u017c\u0105da\u0144 Google Play Developer API<\/h3>\n\n\n\n
Walidacja transakcji subskrypcyjnych<\/h3>\n\n\n\n