Como fazer: Configurar um ponto de extremidade de verificação do IAP

Atualizado em 18. fevereiro 2024 por Jan Bunk


Embora a configuração do seu próprio endpoint de verificação seja um pouco complicada, examinaremos as principais etapas neste guia para indicar a você a direção certa.

O aplicativo irá colocar um objeto JSON como o seguinte para o seu ponto final de verificação:

Exemplo de compra no 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"
      }
    }
}
    

Exemplo de compra na App Store 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"
  }
}
    

Então, baseado no source, você precisa verificar a compra com o Google Play (if source==google_play) ou com a App Store (if source==app_store).

Depois disso, se a compra for válida, você deve conceder ao usuário acesso ao produto comprado.

Você precisará principalmente do userIdentifier (que é a cadeia de caracteres que você passou quando chamou makeInAppPurchase no Javascript do seu site) para determinar para quem desbloquear os produtos e do productID para determinar qual produto desbloquear para o usuário.

Depois que uma compra in app - especialmente uma assinatura - for feita, você precisará ouvir/perceber quaisquer mudanças que lhe forem feitas. Por exemplo, você será notificado quando uma assinatura for cancelada ou quando uma compra in-app for reembolsada, para que você possa, então, revogar os benefícios que o usuário obtém com a assinatura.

Finalmente, devolva um código de status 200 e esse JSON, para que o aplicativo possa confirmar a compra:


{
    "complete_purchase": true
}
    

Ou, se a compra for inválida, devolva um código de status 200 e esse JSON, caso em que o aplicativo não irá confirmar a compra:


{
    "complete_purchase": false
}
    

Se você não devolver um código de status 200, o aplicativo tentará repetir o pedido. Se o aplicativo não conseguir obter uma resposta indicando que a compra foi verificada, ele não irá confirmar a compra. Isto fará com que a compra seja automaticamente reembolsada em 3 dias (se realmente foi válida).

Em App Purchase Overview,