{"id":137906,"date":"2021-08-26T00:00:00","date_gmt":"2021-08-26T00:00:00","guid":{"rendered":"https:\/\/adapty.io\/pl-ios-in-app-purchases-part-4-server-side-purchase-validation\/"},"modified":"2021-08-26T00:00:00","modified_gmt":"2021-08-26T00:00:00","slug":"ios-in-app-purchases-part-4-server-side-purchase-validation","status":"publish","type":"post","link":"https:\/\/adapty.io\/pl\/blog\/ios-in-app-purchases-part-4-server-side-purchase-validation\/","title":{"rendered":"Zakupy w aplikacji na iOS, cz\u0119\u015b\u0107 4: walidacja zakup\u00f3w po stronie serwera"},"content":{"rendered":"\n
Walidacja serwerowa (walidacja zakup\u00f3w po stronie serwera<\/a> – server-side receipt validation) jest sposobem weryfikacji autentyczno\u015bci zakupu. W przeciwie\u0144stwie do walidacji opartej na urz\u0105dzeniach, walidacja serwerowa odbywa si\u0119 po stronie serwera (niespodzianka, nieprawda\u017c?). Walidacja oznacza, \u017ce urz\u0105dzenie lub serwer wysy\u0142a \u017c\u0105danie do serwer\u00f3w Apple, aby dowiedzie\u0107 si\u0119, czy zakup rzeczywi\u015bcie nast\u0105pi\u0142 i czy by\u0142 poprawny.<\/p>\n\n\n\n\n\n Nale\u017cy zauwa\u017cy\u0107, \u017ce walidacja serwerowa nie jest obowi\u0105zkowa i zakupy w aplikacji b\u0119d\u0105 dzia\u0142a\u0107 tak\u017ce bez niej. Zapewnia ona jednak pewne 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 Og\u00f3lnie rzecz bior\u0105c, proces walidacji potwierdze\u0144 zakupu w systemie iOS wygl\u0105da nast\u0119puj\u0105co:<\/p>\n\n\n\n Aby wys\u0142a\u0107 \u017c\u0105danie weryfikacji p\u0142atno\u015bci, musisz do\u0142\u0105czy\u0107 tak zwany „shared secret”, aby autoryzowa\u0107 \u017c\u0105danie. Mo\u017cesz go wygenerowa\u0107 w App Store Connect. <\/p>\n\n\n\n Shared secret mo\u017cna utworzy\u0107 dla okre\u015blonej aplikacji (tzw. app-specific secret) lub dla wszystkich aplikacji na koncie (primary secret).<\/p>\n\n\n\n Aby wygenerowa\u0107 app-specific secret, otw\u00f3rz stron\u0119 aplikacji w App Store Connect, przejd\u017a do In-App Purchases \u2192 Manage i kliknij „App-Specific Shared Secret”. W oknie, kt\u00f3re si\u0119 otworzy, mo\u017cna b\u0119dzie wygenerowa\u0107 nowy token lub skopiowa\u0107 istniej\u0105cy.<\/p>\n\n\n\n Aby otrzyma\u0107 secret dla wszystkich aplikacji na koncie, otw\u00f3rz stron\u0119 Users and Access page i wybierz zak\u0142adk\u0119 Shared Secret.<\/p>\n\n\n\n Po otrzymaniu shared secret mo\u017cesz wysy\u0142a\u0107 potwierdzenia dla uzyskania walidacji na serwerach Apple. Odbywa si\u0119 to poprzez \u017c\u0105danie verifyReceipt<\/a>. Musisz wys\u0142a\u0107 \u017c\u0105danie POST na adres https:\/\/buy.itunes.apple.com\/verifyReceipt<\/a>. W tre\u015bci \u017c\u0105dania JSON przeka\u017c shared secret w polu password<\/em> i potwierdzenie w polu receipt-data<\/em>. Istnieje r\u00f3wnie\u017c opcjonalny parametr exclude-old-transactions<\/em>. Je\u015bli posiada on warto\u015b\u0107 true<\/em>, wtedy dla ka\u017cdej subskrypcji z automatycznym odnawianiem otrzymasz tylko ostatni\u0105 transakcj\u0119 zamiast pe\u0142nej historii odnowienia.<\/p>\n\n\n\n Oto jak wygl\u0105da \u017c\u0105danie o walidacj\u0119 zakupu:<\/p>\n\n\n\nDlaczego warto dokonywa\u0107 walidacji zakup\u00f3w?<\/h2>\n\n\n\n
\n
Walidacja zakupu<\/h2>\n\n\n\n
<\/figure>\n\n\n\n
Generowanie shared secret<\/h3>\n\n\n\n
<\/figure>\n\n\n\n
\u017b\u0105danie walidacji p\u0142atno\u015bci<\/h3>\n\n\n\n