So konfigurierst du einen IAP-Verifizierungsendpunkt

Aktualisiert am 18. Februar 2024 von Jan Bunk


Obwohl das Einrichten deines eigenen Verifizierungsendpunkts etwas kompliziert ist, werden wir in diesem Leitfaden die Hauptschritte durchgehen, um dich in die richtige Richtung zu weisen.

Die App wird ein JSON-Objekt wie das folgende an deinen Verifizierungsendpunkt POSTen:

Google Play Kauf Beispiel JSON:


{
    // the userIdentifier you passed via Javascript
    "userIdentifier": "user123",
    // your app's ID (only relevant if you have multiple apps using the same verification endpoint)
    "appId": 1234,
    "purchaseDetails": {
        "verificationData": {
          "serverVerificationData": "abcdefghijklmnopqrstuvwx.AO-J1Oyabcdefghijklmnopqrstuvwxyz123456789_-abcdefghijklmnopqrstuvwxyz123456789_-abcdefghijklmnopq",
          // the "autoRenewing" property in localVerificationData is only sent if the product is a subscription
          "localVerificationData": "{\"orderId\":\"GPA.1234-1234-1234-12345\",\"packageName\":\"example.package.name\",\"productId\":\"exampleProductId\",\"purchaseTime\":1643389081662,\"purchaseState\":0,\"purchaseToken\":\"abcdefghijklmnopqrstuvwx.AO-J1Oyabcdefghijklmnopqrstuvwxyz123456789_-abcdefghijklmnopqrstuvwxyz123456789_-abcdefghijklmnopq\",\"autoRenewing\":true,\"acknowledged\":false}",
          "source": "google_play"
        },
        "productID": "consumable",
        "purchaseID": "GPA.1234-1234-1234-12345",
        // can also be "restored" if triggered by a call to restorePurchases()
        "status": "purchased",
        "transactionDate": "1643389081662"
      }
    }
}
    

App Store Kauf Beispiel JSON:


{
  // your app's ID (only relevant if you have multiple apps using the same verification endpoint)
  "appId": 1234,
  // the userIdentifier you passed via Javascript
  "userIdentifier": "user123",
  "purchaseDetails": {
    "verificationData": {
      "serverVerificationData": "veryLongBase64String",
      "localVerificationData": "veryLongBase64String",
      "source": "app_store"
    },
    "productID": "consumable",
    "purchaseID": "123",
    // can also be "restored" if triggered by a call to restorePurchases()
    "status": "purchased",
    "transactionDate": "1644239123000"
  }
}
    

Dann musst du, basierend auf der source, Folgendes tun überprüfe den Kauf bei Google Play (if source==google_play) oder beim App Store (if source==app_store).

Wenn der Kauf gültig ist, solltest du dem Nutzer anschließend Zugriff auf das gekaufte Produkt gewähren.

Du benötigst hauptsächlich den userIdentifier (das ist die Zeichenkette, die du übergeben hast, als du makeInAppPurchase im JavaScript deiner Website aufgerufen hast), um zu bestimmen, für wen die Produkte freigeschaltet werden sollen, und die productID, um zu bestimmen, welches Produkt für den Nutzer freigeschaltet werden soll.

Nachdem ein In-App-Kauf - insbesondere ein Abonnement - durchgeführt wurde, musst du auf alle Änderungen achten, die daran vorgenommen werden. Du wirst zum Beispiel benachrichtigt, wenn ein Abonnement gekündigt oder ein In-App-Kauf zurückerstattet wurde, damit du die Vorteile, die der Nutzer aus dem Abonnement zieht, wieder zurücknehmen kannst.

Zum Schluss gibst du einen 200-Statuscode und dieses JSON zurück, damit die App den Kauf bestätigen kann:


{
    "complete_purchase": true
}
    

Oder, wenn der Kauf ungültig ist, gib einen 200 Statuscode und dieses JSON zurück. In diesem Fall wird die App den Kauf nicht bestätigen:


{
    "complete_purchase": false
}
    

Wenn du keinen Statuscode 200 zurückgibst, versucht die App, die Anfrage zu wiederholen. Wenn die App keine Antwort erhält, die angibt, dass der Kauf verifiziert wurde, wird sie den Kauf nicht bestätigen. Dies führt dazu, dass der Kauf nach 3 Tagen automatisch zurückerstattet wird (falls er tatsächlich gültig war).