Classes de base
Classes
| Classe | Description de la classe |
|---|---|
| InAppProduct | Un produit enregistré dans le magasin. |
| InAppStore | Point d'entrée principal pour la gestion des achats in-app. |
| InAppTransaction | Contient des informations sur une transaction dans le magasin d'applications externe. |
| InAppPurchaseBackend | Communique avec le magasin externe. |
InAppProduct
InAppProduct encapsule un produit dans le magasin externe après qu'il a été enregistré dans InAppStore et que son existence a été confirmée. Il a un identifiant qui correspond à l'identifiant du produit dans le magasin externe, il a un prix qui est extrait du magasin externe, et il a un type de produit.
Le type de produit peut être Consumable ou Unlockable. Les produits consommables peuvent être achetés un nombre illimité de fois tant que chaque transaction est finalisée explicitement par l'application. Les produits déverrouillables ne peuvent être achetés qu'une seule fois.
InAppProduct a 5 variables retournables price, title, description identifier et productType. Toutes renvoient une adresse QString, à l'exception de productType.
ProductType est un type enum et renvoie 0 s'il s'agit d'un produit consommable et 1 s'il s'agit d'un produit non verrouillable.
enum ProductType { Consumable, Unlockable };
Consultez les classes dérivées AndroidInAppProduct pour Android et IosInAppProduct pour iOS.
InAppStore
Le point d'entrée principal pour la gestion des achats in-app. C'est la classe de base pour AndroidInAppProduct et IosInAppProduct.
InAppStore est utilisé pour gérer les achats in-app dans l'application de manière multiplateforme. En fonction du compilateur, InAppStore vérifie quelle plateforme est disponible en utilisant 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
En allant sur la page de la boutique dans la démo, InAppStore connecte tous les signaux aux slots correspondants dans la fonction setupBackend(). Il utilise ensuite la fonction registerProduct() pour enregistrer l'ID et le type de produit de chaque produit enregistré dans le magasin externe sur QHash registeredProducts.
L'enregistrement d'un produit est asynchrone et produira à un moment donné des signaux productRegistered() lorsque le produit sera trouvé dans le magasin externe.
void InAppStore::registerProduct(InAppProduct *product) { d->registeredProducts[product->identifier()] = product; emit productRegistered(product); }
Terminer un achat
Une fois que les articles ont été enregistrés avec succès dans la boutique, l'utilisateur peut les acheter en appuyant sur l'un des produits sur la page de la boutique de l'application. QML appellera la fonction product.purchase() dans AndroidInAppProduct ou IosInAppProduct qui ouvrira le flux d'achat du magasin externe.
Lorsqu'un achat a été effectué, quel que soit le succès, le signal transactionRedy sera envoyé à InAppProductQmlType, pour notifier à QML de commencer à finaliser la transaction.
Restauration des achats
Dans la démo, les achats déverrouillables seront sauvegardés dans la mémoire de l'application. En effaçant le stockage, l'utilisateur perdra l'achat déverrouillable et il ne pourra pas l'acheter à nouveau, car selon le magasin externe, il est déjà possédé.
Vous pouvez utiliser le bouton restore purchases dans la page du magasin d'applications pour restaurer vos achats déverrouillés. Le bouton de restauration des achats appelle la fonction restorePurchases() et vérifie dans le magasin externe si des achats ont déjà été effectués. Il émet le signal transactionRedy() pour finaliser et restaurer l'achat.
InAppStore n'a pas de classes dérivées.
InAppTransaction
InAppTransaction contient des informations sur une transaction dans le magasin d'applications externe et est généralement fourni à la suite de l'appel à InAppProduct::purchase(). Lorsque l'utilisateur a terminé le processus d'achat (en confirmant l'achat, par exemple en saisissant son mot de passe), l'instance InAppStore contenant le produit émet un signal InAppStore::transactionReady() avec les données relatives à la transaction.
La fonction status() indique si la transaction s'est déroulée correctement ou non. Si c'est le cas, l'application doit prendre les mesures qui s'imposent. Lorsque l'action nécessaire a été effectuée, 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ée pour créer des classes dérivées pour 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.