Clases básicas
Clases
| Clase | Descripción |
|---|---|
| InAppProduct | Un producto registrado en la tienda. |
| InAppStore | Punto de entrada principal para gestionar las compras dentro de la aplicación. |
| InAppTransaction | Contiene información sobre una transacción en la tienda de aplicaciones externa. |
| InAppPurchaseBackend | Se comunica con la tienda externa. |
InAppProduct
InAppProduct encapsula un producto en la tienda externa después de que se haya registrado en InAppStore y se haya confirmado su existencia. Tiene un identificador que coincide con el identificador del producto en la tienda externa, tiene un precio que se recupera de la tienda externa y tiene un tipo de producto.
El tipo de producto puede ser Consumable o Unlockable. Los productos consumibles pueden comprarse cualquier número de veces siempre que cada transacción sea finalizada explícitamente por la aplicación. Los tipos desbloqueables sólo pueden comprarse una vez.
InAppProduct tiene 5 variables retornables price, title, description identifier y productType. Todas devuelven un QString excepto productType.
ProductType es un tipo enum y devuelve 0 si es Consumible y 1 si es Desbloqueable.
enum ProductType { Consumable, Unlockable };
Consulta las clases derivadas AndroidInAppProduct para Android y IosInAppProduct para iOS.
InAppStore
El principal punto de entrada para gestionar las compras dentro de la aplicación. Es la clase base para AndroidInAppProduct y IosInAppProduct.
InAppStore se utiliza para gestionar las compras dentro de la aplicación de forma multiplataforma. Dependiendo del compilador, InAppStore comprueba qué plataforma está disponible utilizando Macros.
void InAppStore::setupBackend() { #ifdef Q_OS_ANDROID d->backend = new AndroidInAppPurchaseBackend; #endif #ifdef Q_OS_IOS d->backend = new IosInAppPurchaseBackend; #endif d->backend->setStore(this); ...
Inicialización de la tienda
Al ir a la página de la tienda en la demo, InAppStore conecta todas las señales a las ranuras relacionadas en la función setupBackend(). A continuación, utiliza la función registerProduct() para registrar el ID y el tipo de producto de cada producto registrado en la tienda externa en un QHash registeredProducts.
El registro de un producto es asíncrono, y en algún momento producirá señales productRegistered() cuando se encuentre en la tienda externa.
void InAppStore::registerProduct(InAppProduct *product) { d->registeredProducts[product->identifier()] = product; emit productRegistered(product); }
Finalización de una compra
Una vez que los artículos se han registrado correctamente en la tienda, el usuario puede comprarlos pulsando sobre uno de los productos en la página de la tienda de aplicaciones. QML llamará a la función product.purchase() en AndroidInAppProduct o IosInAppProduct que abrirá el flujo de compra de la tienda externa.
Cuando se haya completado una compra, independientemente del éxito, se enviará la señal transactionRedy a InAppProductQmlType, para notificar a QML que comience a finalizar la transacción.
Restauración de compras
En la demo, las compras desbloqueables se guardarán en el almacenamiento de la aplicación. Al borrar el almacenamiento el usuario perderá la compra desbloqueable y no podrá volver a comprarla, ya que según la tienda externa ya es de su propiedad.
Puedes utilizar el botón restore purchases en la página de la tienda de aplicaciones para restaurar tus compras desbloqueables. El botón restaurar compras llama a la función restorePurchases() y comprobará en la tienda externa si hay compras ya poseídas. Emite la señal transactionRedy() para finalizar y restaurar la compra.
InAppStore no tiene clases derivadas.
InAppTransaction
InAppTransaction contiene información sobre una transacción en la tienda de aplicaciones externa y suele proporcionarse como resultado de una llamada a InAppProduct::purchase(). Cuando el flujo de compra ha sido completado por el usuario (confirmando la compra, por ejemplo introduciendo su contraseña), la instancia InAppStore que contiene el producto emitirá una señal InAppStore::transactionReady() con datos sobre la transacción.
La función status() proporciona información sobre si la transacción se ha realizado correctamente o no. Si se ha realizado correctamente, la aplicación deberá tomar las medidas oportunas. Cuando se ha realizado la acción necesaria, se debe llamar a finalize(). La función finalize() debe ser llamada independientemente del estado de la transacción.
Echa un vistazo a las clases derivadas AndroidInAppTransaction para android y IosInAppTransaction para iOS.
InAppPurchaseBackend
InAppPurchaseBackend se utiliza para crear clases derivadas para AndroidInAppPurchaseBackend y IosInAppPurchaseBackend.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.