Hoe: Een IAP-verificatieeindpunt configureren

Bijgewerkt op 18. februari 2024 door Jan Bunk


Hoewel het opzetten van je eigen verificatie-eindpunt een beetje ingewikkeld is, zullen we in deze handleiding de belangrijkste stappen doorlopen om je in de juiste richting te wijzen.

De app POST een JSON object als het volgende naar je verificatie-eindpunt:

Google Play-aankoop voorbeeld 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-aankoop voorbeeld 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"
  }
}
    

Verifieer dan op basis van de source de aankoop met Google Play (if source==google_play) of App Store (if source==app_store).

Daarna moet je, als de aankoop geldig is, de gebruiker toegang verlenen tot het gekochte product.

Je hebt voornamelijk de userIdentifier nodig (dit is de string die je hebt doorgegeven toen je makeInAppPurchase aanriep in het Javascript van je website) om te bepalen voor wie de producten moeten worden ontgrendeld en de productID om te bepalen welk product moet worden ontgrendeld voor de gebruiker.

Nadat een in-app-aankoop - met name een abonnement - gedaan is, zul je moeten luisteren naar alle veranderingen die er in aangebracht worden. Je krijgt bijvoorbeeld een melding als een abonnement werd geannuleerd of een in-app-aankoop werd terugbetaald, zodat je dan de voordelen die de gebruiker van het abonnement krijgt kunt intrekken.

Retourneer tenslotte een 200-statuscode en deze JSON, zodat de app de aankoop kan bevestigen:


{
    "complete_purchase": true
}
    

Of, als de aankoop ongeldig is, een 200 statuscode en de volgende JSON retourneren, in welk geval de app de aankoop niet zal bevestigen:


{
    "complete_purchase": false
}
    

Als je geen 200 status-code terugkrijgt, probeert de app het verzoek te herhalen. Als de app geen antwoord kan krijgen dat aangeeft dat de aankoop geverifieerd werd, zal hij de aankoop niet bevestigen. Dit leidt ertoe dat de aankoop na 3 dagen automatisch terugbetaald wordt (als hij werkelijk geldig was).

In-App-aankopen overzicht