Google proporciona validación de recibos a través de la API de desarrollador de Google Play , dentro de la API hay dos puntos finales en los que estará más interesado: Compras.productos: obtener y Compras.suscripciones: obtener .
Purchases.products: get
se puede utilizar para verificar la compra de un producto que no se renueva automáticamente, donde Purchases.subscriptions: get
es para verificar y volver a verificar las suscripciones de productos que se renuevan automáticamente.
Para utilizar cualquier criterio de valoración se debe conocer el packageName
, productId
,purchaseToken
todos estos se pueden encontrar en la carga útil que ha recibido en la compra. También necesita una access_token
que puede obtener creando una cuenta de servicio API de Google.
Para comenzar con una cuenta de servicio, primero vaya a la página de configuración de acceso a la API de la consola de desarrollo de Google Play y haga clic en el botón Crear nuevo proyecto:
Ahora debería ver un nuevo proyecto vinculado y algunas secciones nuevas, en la sección Cuenta de servicio, haga clic en el botón Crear cuenta de servicio.
Se le presentará un cuadro de información con instrucciones para crear su cuenta de servicio. Haga clic en el enlace a Google Developers Console y aparecerá una nueva pestaña.
Ahora haga clic en Crear nueva ID de cliente, seleccione Cuenta de servicio de las opciones y haga clic en Crear ID de cliente.
Se descargará un archivo JSON, este es su JSON Web Token que utilizará para cambiarlo, access_token
así que manténgalo seguro.
A continuación, vuelva a cambiar de pestaña a la consola para desarrolladores de Google Play y haga clic en Listo en el cuadro de información. Debería ver su nueva cuenta de servicio en la lista. Haga clic en Otorgar acceso junto al correo electrónico de la cuenta de servicio.
A continuación, en Elija una función para este usuario, seleccione Finanzas y haga clic en Agregar usuario.
Ahora ha configurado su cuenta de servicio y tiene todo el acceso necesario para realizar validaciones de recibo. El siguiente paso es cambiar su JWT por un access_token.
El access_token
expira después de una hora de intercambio, por lo que necesita un código de servidor para manejar esto y Google ha proporcionado varias bibliotecas en muchos idiomas para manejar esto (la lista no es exhaustiva):
No entraré en detalles porque hay mucha documentación sobre cómo usar estas bibliotecas, pero mencionaré que desea usar el https://www.googleapis.com/auth/androidpublisher
alcance de OAuth2, el client_email
de JWT como issuer
y la clave pública que puede obtener de private_key
y la frase de contraseña notasecret
se utilizará para signing_key
.
Una vez que tenga el access_token
, estará listo para comenzar (al menos durante la próxima hora, momento en el que querrá solicitar uno nuevo siguiendo el mismo proceso en el párrafo anterior).
Para comprobar el estado de una compra de consumibles (no renovable automáticamente), realice una get
solicitud http a:https://www.googleapis.com/androidpublisher/v2/applications/com.example.app/purchases/products/exampleSku/tokens/rojeslcdyyiapnqcynkjyyjh?access_token=your_access_token
Si obtiene un código de respuesta 200 http, todo salió según lo planeado y su compra fue válida. Un 404 significará que su token no es válido, por lo que la compra probablemente fue un intento de fraude. Un 401 significará que su token de acceso no es válido y un 403 significará que su cuenta de servicio no tiene acceso suficiente, verifique que haya habilitado Finanzas para la cuenta de acceso en la consola de desarrollador de Google Play.
La respuesta de un 200 se verá similar a esto:
{
"kind": "androidpublisher#productPurchase",
"purchaseTimeMillis": long,
"purchaseState": integer,
"consumptionState": integer,
"developerPayload": string
}
Para obtener una explicación de cada propiedad, consulte https://developers.google.com/android-publisher/api-ref/purchases/products .
Las suscripciones son similares, sin embargo, el punto final se ve así:
https://www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token?access_token=you_access_token
Y la respuesta debe contener estas propiedades:
{
"kind": "androidpublisher#subscriptionPurchase",
"startTimeMillis": long,
"expiryTimeMillis": long,
"autoRenewing": boolean
}
Consulte https://developers.google.com/android-publisher/api-ref/purchases/subscriptions para ver las descripciones de las propiedades y tenga en cuenta que startTimeMillis
yexpiryTimeMillis
estarán sujetos a cambios dependiendo de la duración de la suscripción.
¡Feliz validación!