Geplaatst op 2. februari 2022 door Jan Bunk
Je eigen verificatie eindpunt instellen is behoorlijk ingewikkeld en helaas hebben we niet de capaciteit om een volledig gedetailleerde stap-voor-stap gids te schrijven over hoe je dat doet. We zullen in de volgende gids echter de belangrijkste stappen uitleggen.
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:
{
"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"
}
}
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. Meer info over het ontgrendelen van gekochte producten
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).
Hier volgt een lijst van verwante pagina's over in-app-aankopen: