Hur du: Konfigurerar en IAP-verifieringsendpoint

Uppdaterad den 18. februari 2024 av Jan Bunk


Även om det är lite komplicerat att ställa in din egen verifieringsendpoint, kommer vi att gå igenom huvudstegen i denna guide för att peka dig i rätt riktning.

Appen skickar ett JSON-objekt som följande till din verifieringsslutpunkt:

Exempel på köp i Google Play 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"
      }
    }
}
    

Exempel på köp i App Store 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"
  }
}
    

Sedan, baserat på källan måste du verifiera köpet med Google Play (if source==google_play) eller med App Store (if source==app_store).

Sedan, om köpet är giltigt, ska du ge användaren tillgång till den köpta produkten.

Du kommer främst att behöva userIdentifier (som är strängen du skickade när du kallade makeInAppPurchase i din webbplats JavaScript) för att avgöra vem du ska låsa upp produkterna för och productID för att avgöra vilken produkt du ska låsa upp för användaren.

När du har gjort ett köp i appen - särskilt en prenumeration - måste du lyssna på alla ändringar som görs i appen. Du kommer till exempel att meddelas när en prenumeration har avbrutits eller när ett köp i appen har återbetalats, så att du kan återkalla de fördelar som användaren får av prenumerationen.

Slutligen returnerar du en 200-statuskod och denna JSON, så att appen kan bekräfta köpet:


{
    "complete_purchase": true
}
    

Eller, om köpet är ogiltigt, returnera en 200-statuskod och den här JSON-koden, i vilket fall appen inte bekräftar köpet:


{
    "complete_purchase": false
}
    

Om du inte returnerar en 200-statuskod försöker appen upprepa begäran. Om appen inte kan få ett svar som visar att köpet har verifierats kommer den inte att bekräfta köpet. Detta leder till att köpet automatiskt återbetalas inom 3 dagar (om det faktiskt var giltigt).