Cómo: Configurar un Punto Final de Verificación IAP

Actualizado el 18. febrero 2024 por Jan Bunk


Aunque configurar tu propio punto final de verificación es un poco complicado, en esta guía repasaremos los pasos principales para indicarte la dirección correcta.

La aplicación publicará un objeto JSON como el siguiente a tu punto final de verificación:

JSON de ejemplo de compra en 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"
      }
    }
}
    

JSON de ejemplo de compra en la 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"
  }
}
    

A continuación, basándote en la fuente, debes verificar la compra con Google Play (if source==google_play) o con la App Store (if source==app_store).

Después, si la compra es válida, debes conceder al usuario el acceso al producto adquirido.

Necesitarás principalmente el identificador de usuario (que es la cadena que pasaste cuando llamaste a hacerCompraInApp en el Javascript de tu sitio web) para determinar a quién desbloquear los productos y el identificador de producto para determinar qué producto desbloquear para el usuario.

Después de que se haya realizado una compra en la aplicación, especialmente una suscripción, tendrás que estar atento a cualquier cambio que se haga en ella. Por ejemplo, se te notificará cuando se cancele una suscripción o se reembolse una compra dentro de la aplicación, para que puedas revocar los beneficios que el usuario obtiene de la suscripción.

Por último, devuelve un código de estado 200 y este JSON, para que la aplicación pueda confirmar la compra:


{
    "complete_purchase": true
}
    

O, si la compra no es válida, devuelve un código de estado 200 y este JSON, en cuyo caso la aplicación no confirmará la compra:


{
    "complete_purchase": false
}
    

Si no devuelve un código de estado 200, la aplicación intentará repetir la solicitud. Si la aplicación no consigue obtener una respuesta que indique que la compra ha sido verificada, no confirmará la compra. Esto hará que la compra se reembolse automáticamente en 3 días (si realmente fue válida).

Vista general de las compras en la aplicación