Sur cette page

Démonstration des achats intégrés – classes de base

Les classes de base suivantes font partie de la démo des achats intégrés:

Classes

ClasseDescription
InAppProductUn produit enregistré dans la boutique.
InAppStorePoint d’entrée principal pour la gestion des achats intégrés.
InAppTransactionContient des informations sur une transaction effectuée dans la boutique d'applications externe.
InAppPurchaseBackendCommunique avec la boutique externe.

InAppProduct

InAppProduct encapsule un produit de la boutique externe après son enregistrement dans InAppStore et la confirmation de son existence. Il dispose d’un identifiant qui correspond à celui du produit dans la boutique externe, d’un prix récupéré depuis la boutique externe et d’un type de produit.

Le type de produit peut être « Consumable » ou « Unlockable ». Les produits consommables peuvent être achetés autant de fois que souhaité, à condition que chaque transaction soit explicitement finalisée par l’application. Les produits débloquables ne peuvent être achetés qu’une seule fois.

InAppProduct dispose de 5 variables de retour : price, title, description, identifier et productType. Toutes renvoient une valeur de type « QString », à l’exception de productType.

ProductType est un type énuméré qui renvoie 0 s'il s'agit d'un produit consommable et 1 s'il s'agit d'un produit à débloquer.

enum ProductType
{
   Consumable,
   Unlockable
};

Découvrez les classes dérivées AndroidInAppProduct pour Android et IosInAppProduct pour iOS.

InAppStore

Point d'entrée principal pour la gestion des achats intégrés. Il s'agit de la classe de base de « AndroidInAppProduct » et « IosInAppProduct ».

InAppStore sert à gérer les achats intégrés dans l'application de manière multiplateforme. En fonction du compilateur, InAppStore vérifie la plateforme disponible à l'aide de 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);

   ...

Initialisation de la boutique

Lorsque l’on accède à la page de la boutique dans la démo, InAppStore connecte tous les signaux aux slots correspondants dans la fonction setupBackend(). Elle utilise ensuite la fonction registerProduct() pour enregistrer l’ID et le type (productType) de chaque produit enregistré dans la boutique externe dans la collection registeredProducts d’ QHash.

L'enregistrement d’un produit est asynchrone et génère, à un moment donné, des signaux productRegistered() dès qu’il est trouvé dans la boutique externe.

void InAppStore::registerProduct(InAppProduct *product)
{
   d->registeredProducts[product->identifier()] = product;
   emit productRegistered(product);
}

Finalisation d’un achat

Une fois les articles enregistrés avec succès dans la boutique, l’utilisateur peut les acheter en appuyant sur l’un des produits affichés sur la page de la boutique de l’application. QML appellera la fonction product.purchase() dans AndroidInAppProduct ou IosInAppProduct, ce qui ouvrira le processus d’achat de la boutique externe.

Lorsqu'un achat est terminé, qu'il ait abouti ou non, le signal `transactionReady` est envoyé à ` InAppProductQmlType` afin d'indiquer à QML de finaliser la transaction.

Restauration des achats

Dans la démo, les achats déverrouillables seront enregistrés dans la mémoire de l’application. En effaçant cette mémoire, l’utilisateur perdra son achat déverrouillable et ne pourra plus l’acheter à nouveau, car selon la boutique externe, il en est déjà propriétaire.

Vous pouvez utiliser le bouton « restore purchases » sur la page de la boutique de l’application pour restaurer vos achats déverrouillables. Le bouton « Restaurer les achats » appelle la fonction `restorePurchases()` et vérifie dans la boutique externe les achats déjà détenus. Il émet le signal `transactionRedy()` pour finaliser et restaurer l’achat.

InAppStore ne possède aucune classe dérivée.

InAppTransaction

InAppTransaction contient des informations sur une transaction effectuée dans la boutique d’applications externe et est généralement fournie à la suite de l’appel de InAppProduct::purchase(). Lorsque le processus d’achat a été mené à bien par l’utilisateur (confirmation de l’achat, par exemple en saisissant son mot de passe), l’instance InAppStore contenant le produit émettra un signal InAppStore::transactionReady() avec les données relatives à la transaction.

La fonction status() indique si la transaction a abouti ou non. En cas de réussite, l’application doit prendre les mesures appropriées. Une fois les actions nécessaires effectuées, la fonction finalize() doit être appelée. La fonction finalize() doit être appelée quel que soit le statut de la transaction.

Consultez les classes dérivées AndroidInAppTransaction pour Android et IosInAppTransaction pour iOS.

InAppPurchaseBackend

InAppPurchaseBackend est utilisé pour créer des classes dérivées de AndroidInAppPurchaseBackend et 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.