{"id":137879,"date":"2022-12-15T00:00:00","date_gmt":"2022-12-15T00:00:00","guid":{"rendered":"https:\/\/adapty.io\/de-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\/de\/blog\/android-in-app-purchases-part-5-server-side-purchase-validation\/","title":{"rendered":"Android In-App-K\u00e4ufe, Teil 5: Serverseitige Kaufvalidierung"},"content":{"rendered":"\n

Die serverseitige \u00dcberpr\u00fcfung kann Ihnen helfen, die Kaufauthentizit\u00e4t zu validieren. Das Ger\u00e4t wird eine Anfrage an die Google Server senden, um herauszufinden, ob der Kauf tats\u00e4chlich stattgefunden hat und ob er g\u00fcltig ist.<\/p>\n\n\n\n

In dieser Anleitung besprechen wir, wie Sie die serverseitige Validierung f\u00fcr Android Apps konfigurieren k\u00f6nnen. <\/p>\n\n\n\n

Warum K\u00e4ufe validieren<\/h2>\n\n\n\n

Es sollte erw\u00e4hnt werden, dass die serverseitige Validierung kein Muss ist. In-App-K\u00e4ufe funktionieren auch ohne diese Validierung. Sie bietet jedoch einige wichtige Vorteile:<\/p>\n\n\n\n

    \n
  1. Umfangreiche Zahlungsanalysen, <\/strong>was besonders bei Abonnements wichtig ist, da alles, was nach der Aktivierung geschieht, nicht vom Ger\u00e4t verarbeitet wird. Ohne serverseitige Kaufverarbeitung k\u00f6nnen Sie nicht den aktuellen Abonnement-Status abrufen und wissen nicht, ob der Nutzer das Abonnement verl\u00e4ngert hat oder nicht oder ob es Zahlungsprobleme gibt oder nicht.<\/li>\n\n\n\n
  2. Die M\u00f6glichkeit, die Kaufauthentizit\u00e4t zu verifizieren. <\/strong>Sie k\u00f6nnen sicherstellen, dass die Transaktion kein Betrug ist und dass der Nutzer tats\u00e4chlich f\u00fcr Ihr Produkt bezahlt hat.<\/li>\n\n\n\n
  3. Plattform\u00fcbergreifende Abonnements. <\/strong>Wenn Sie den Abonnement-Status des Nutzers in Echtzeit \u00fcberpr\u00fcfen k\u00f6nnen, k\u00f6nnen Sie ihn auch mit anderen Plattformen synchronisieren. Nutzer, die beispielsweise das Abonnement mit einem iOS Ger\u00e4t abgeschlossen haben, k\u00f6nnen es auch auf einem Android Ger\u00e4t, online oder auf anderen Plattformen verwenden.<\/li>\n\n\n\n
  4. Die M\u00f6glichkeit, Content-Zugang von der Serverseite zu kontrollieren<\/strong>. So sch\u00fctzen Sie sich vor Nutzern ohne Abonnement, die auf Ihre Daten zuzugreifen versuchen, indem Sie schlicht Anfragen an den Server senden.<\/li>\n<\/ol>\n\n\n\n

    Unsere Erfahrung besagt, dass der erste Vorteil allein ausreicht, um eine serverseitige Kaufverarbeitung einzurichten.<\/p>\n\n\n\n\n\n

    Zahlungsvalidierung<\/h2>\n\n\n\n

    Wir k\u00f6nnen die Android-Zahlungsvalidierung mit diesem Schema zusammenfassen:<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Authentifizierung f\u00fcr Google Play Developer API Anfragen<\/h3>\n\n\n\n

    Um mit der Google Play Developer API zu arbeiten, m\u00fcssen Sie zun\u00e4chst einen Key generieren, um Anfragen zu unterschreiben. Als erstes m\u00fcssen Sie Ihr Google Play Console Konto (wo Sie Ihre App verwalten) mit Ihrem Google Cloud Konto synchronisieren (wo Sie einen Key f\u00fcr das Unterschreiben von Anfragen generieren). Sobald dies erfolgt ist, m\u00fcssen Sie dem Nutzer Kaufrechte erteilen. Es w\u00fcrde einen eigenen Artikel erfordern, diesen Vorgang zu beschreiben. Zum Gl\u00fcck haben wir bereits eine Schritt-f\u00fcr-Schritt Anleitung in der Adapty Dokumentation<\/a>. <\/p>\n\n\n\n

    Bitte beachten Sie, dass Sie nach der Generierung des Keys in der Regel 24 Stunden (oder l\u00e4nger) warten m\u00fcssen, bevor Sie mit der Arbeit beginnen k\u00f6nnen. Aktualisieren Sie die Beschreibung f\u00fcr In-App-Produkte oder Abonnements, um diese Wartezeit zu umgehen, da so der Key umgehend aktiviert wird. <\/p>\n\n\n\n

    Wir verwenden die offizielle google-api-python-client<\/a> Library im Zusammenspiel mit der Google Play Developer API. Diese Library ist in den meisten Sprachen verf\u00fcgbar und ich kann sie nur empfehlen, da sie alle ben\u00f6tigten Methoden unterst\u00fctzt.<\/p>\n\n\n\n

    Validierung f\u00fcr Abonnement-Transaktionen<\/h3>\n\n\n\n

    Im Gegensatz zur iOS serverseitigen Validierung<\/a> werden bei Android sowohl die Validierung f\u00fcr Abonnements als auch andere Produkte mit einer Vielzahl von Methoden implementiert. Wenn Sie also eine Transaktion validieren, m\u00fcssen Sie wissen, ob Sie es mit einem Produkt oder einem Abonnement zu tun haben. In der Praxis hei\u00dft das, dass Sie diese Daten von der App \u00fcbertragen und die Flag in der Datenbank behalten m\u00fcssen, falls eine erneute Token-Validierung erforderlich sein sollte.<\/p>\n\n\n\n

    Der zweite wichtige Unterschied besteht darin, dass zwar jede Transaktion bei Android ihren Token hat, aber alle iOS-Transaktionen ein App-spezifisches Gemeinsames Geheimnis (Shared Secret) verwenden, um den gesamten Transaktionsverlauf zu lagern. Wenn Sie also die K\u00e4ufe eines Nutzers zu einem beliebigen Zeitpunkt wiederherstellen m\u00f6chten, m\u00fcssen Sie alle Kauftokens lagern, anstatt einen beliebigen auszuw\u00e4hlen.<\/p>\n\n\n\n

    Zur Validierung des Abonnements nutzen Sie die purchases.subscriptions.get<\/em><\/a> Methode.  Dabei handelt es sich im Grunde um einen GET Request Call:<\/p>\n\n\n\n

    <\/path><\/path><\/svg><\/span>
    https<\/span>:<\/span>\/\/androidpublisher.googleapis.com\/androidpublisher\/v3\/applications\/{packageName}\/purchases\/subscriptions\/{subscriptionId}\/tokens\/{token}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n

    Alle Parameter werden ben\u00f6tigt:<\/p>\n\n\n\n