Come fare: Configurare un endpoint di verifica IAP

Aggiornato il 18. febbraio 2024 da Jan Bunk


Sebbene l'impostazione del tuo endpoint di verifica sia un po' complicata, in questa guida ti illustreremo i passi principali per indirizzarti nella giusta direzione.

L'applicazione invierà un oggetto JSON come il seguente al tuo endpoint di verifica:

Esempio di acquisto con JSON su Google Play:


{
    // 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"
      }
    }
}
    

Esempio di acquisto con JSON su App Store:


{
  // 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"
  }
}
    

Poi, in base al source, hai bisogno di verificare l'acquisto con Google Play (if source==google_play) o con l'App Store (if source==app_store).

In seguito, se l'acquisto è valido, dovresti concedere all'utente l'accesso al prodotto acquistato.

Avrai bisogno principalmente del userIdentifier (che è la stringa che hai passato quando hai chiamato makeInAppPurchase nel Javascript del tuo sito web) per determinare chi sbloccare i prodotti e del productID per determinare quale prodotto sbloccare per l'utente.

Dopo che un acquisto in-app - specialmente un abbonamento - è stato completato, avrai bisogno di venire notificato su qualsiasi modifica che viene apportata. Per esempio sarai avvisato quando un abbonamento è stato cancellato o un acquisto in-app è stato rimborsato, così potrai revocare i benefici che l'utente ottiene dall'abbonamento.

Infine, restituisci un codice di stato 200 e questo JSON, così l'app può confermare l'acquisto:


{
    "complete_purchase": true
}
    

Oppure, se l'acquisto non è valido, restituisci un codice di stato 200 e questo JSON, nel qual caso l'applicazione non confermerà l'acquisto:


{
    "complete_purchase": false
}
    

Se non restituisci un codice di stato 200, l'applicazione proverà a ripetere la richiesta. Se l'applicazione non è in grado di ottenere una risposta che indichi che l'acquisto è stato verificato, non confermerà l'acquisto. Questo porterà al rimborso automatico dell'acquisto in 3 giorni (se era effettivamente valido).