Como: Configurar um Endpoint de Verificação de IAP

Atualizado em 18. fevereiro 2024 por Jan Bunk


Embora configurar seu próprio endpoint de verificação seja um pouco complicado, vamos passar pelos principais passos neste guia para te direcionar na 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 string 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,