Comment : Configurer un point final de vérification IAP

Mis à jour le 18. février 2024 par Jan Bunk


Bien que la mise en place de votre propre point de vérification soit un peu compliquée, nous allons passer en revue les principales étapes dans ce guide afin de vous orienter dans la bonne direction.

L'application enverra un objet JSON via une requête POST tel que le suivant à votre point de terminaison de vérification :

Exemple JSON d'achat sur 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"
      }
    }
}
    

Exemple JSON d'achat sur l'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"
  }
}
    

Ensuite, sur la base du source, vous devez vérifier l'achat avec Google Play (if source==google_play) ou avec l'App Store (if source==app_store).

Puis, si l'achat est valide, vous devez accorder à l'utilisateur l'accès au produit acheté.

Vous aurez principalement besoin du userIdentifier (qui est la chaîne que vous avez passée lorsque vous avez appelé makeInAppPurchase dans le Javascript de votre site web) pour déterminer pour qui débloquer les produits et le productID pour déterminer quel produit débloquer pour l'utilisateur.

Une fois qu'un achat intégré dans l'application - en particulier un abonnement - a été effectué, vous devez être informé de toute modification apportée à cet achat. Par exemple, vous serez informé de l'annulation d'un abonnement ou du remboursement d'un achat intégré dans une application, ce qui vous permettra de révoquer les avantages que l'utilisateur tire de l'abonnement.

Enfin, renvoyez un code d'état 200 et ce JSON, afin que l'application puisse confirmer l'achat :


{
    "complete_purchase": true
}
    

Ou, si l'achat n'est pas valide, renvoyez un code d'état 200 et ce JSON, auquel cas l'application ne confirmera pas l'achat :


{
    "complete_purchase": false
}
    

Si vous ne renvoyez pas un code d'état 200, l'application essaiera de répéter la demande. Si l'application ne parvient pas à obtenir une réponse indiquant que l'achat a été vérifié, elle ne confirmera pas l'achat. L'achat sera alors automatiquement remboursé dans un délai de trois jours (s'il était effectivement valable).