Jak skonfigurować endpoint weryfikacji IAP

Zaktualizowano 13. czerwca 2025 przez Jan Bunk


Zacznij od skonfigurowania adresu URL weryfikacji w swoim panelu. Aplikacja wyśle POST-em obiekt JSON podobny do tego na skonfigurowany przez Ciebie adres URL:

Przykładowy JSON zakupu w 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"
      }
    }
}
    

Przykładowy JSON zakupu w 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"
  }
}
    

Następnie, na podstawie source, musisz zweryfikować zakup w Google Play (if source==google_play) albo w App Store (if source==app_store).

Następnie, jeśli zakup jest ważny, powinieneś przyznać użytkownikowi dostęp do zakupionego produktu.

Najważniejsze będą userIdentifier (czyli tekst, który przekazałeś wywołując makeInAppPurchase w JavaScript na swojej stronie), aby wiedzieć, komu odblokować produkt, oraz productID, aby wiedzieć, jaki produkt odblokować.

Po dokonaniu zakupu w aplikacji – szczególnie subskrypcji – musisz nasłuchiwać wszelkich zmian z nim związanych. Na przykład zostaniesz powiadomiony, gdy subskrypcja zostanie anulowana lub zakup zostanie zwrócony, abyś mógł odebrać użytkownikowi korzyści z subskrypcji.

Na końcu zwróć kod statusu 200 i ten JSON, aby aplikacja mogła potwierdzić zakup:


{
    "complete_purchase": true
}
    

Albo, jeśli zakup jest nieważny, zwróć kod statusu 200 i ten JSON – wtedy aplikacja nie potwierdzi zakupu:


{
    "complete_purchase": false
}
    

Jeśli nie zwrócisz kodu statusu 200, aplikacja spróbuje ponowić żądanie. Jeśli nie uda się uzyskać odpowiedzi potwierdzającej weryfikację zakupu, aplikacja nie potwierdzi zakupu. To spowoduje, że zakup zostanie automatycznie zwrócony po 3 dniach (jeśli faktycznie był ważny).

Przegląd zakupów w aplikacji (In App Purchase)