Så här gör du: Konfigurera en anpassad slutpunkt för IAP-verifiering

Postat den 2. februari 2022 av Jan Bunk


Det är lite komplicerat att sätta upp en egen slutpunkt för verifiering, så tyvärr har vi inte möjlighet att skriva en helt detaljerad steg för steg-guide om hur du gör det. Vi kommer dock att peka på de viktigaste stegen i den här guiden.

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:


{
  "appId": 1234,
  "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. Mer information om att låsa upp köpta produkter

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).