Como configurar seu ponto final de desbloqueio IAP?

Atualizado em 22. junho 2023 por Jan Bunk


Se você configurar suas configurações de compras in-app para usar nosso ponto final de verificação de compra gerenciado em aplicativos, nosso ponto final de verificação irá (após verificar a compra) colocar um objeto JSON, como o seguinte, no seu ponto final de desbloqueio:

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:


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

Desbloqueando os Produtos Comprados

Você irá precisar principalmente do userIdentifier (que é o userIdentifier que você usou quando chamou o makeInAppPurchase no Javascript do seu site) para determinar para quem desbloquear os produtos e o 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.

Resultado esperado

Uma vez que você tiver finalizado, seu ponto final deve retornar um código de status 200. Se ele não retornar um código de status 200, nosso servidor de verificação tentará repetir a solicitação. Se o servidor de verificação não conseguir obter uma resposta indicando que os produtos foram desbloqueados, o aplicativo não irá confirmar a compra. Isto fará com que a compra seja automaticamente reembolsada em 3 dias.

Você pode usar nosso endpoint de desbloqueio temporário sem opção para fins de teste. Dessa forma, você pode garantir que as compras no aplicativo não falhem porque seu servidor retorna um código de status incorreto ou algo parecido. Aqui está o URL do endpoint de desbloqueio que você pode usar nas configurações de compra no aplicativo: https://webtoapp.design/apps/test_unlock_in_app_purchase/