Passer au contenu

Guide de la section de revues de l'Android Play Store pour les achats intégrés

GitHub

Pour obtenir l'approbation de votre application Android sur Google Play, il faut respecter les politiques de Google, en particulier pour les applications avec des achats en ligne et des abonnements. Ce guide couvre tout ce dont vous avez besoin pour passer avec succès la revue.

  1. Construire une Application Android Signée

    Les nouvelles applications Google Play doivent être téléchargées sous forme d'un Bundle d'Application Android (.aabet non un APK de débogage téléchargé manuellement.

    Conservez votre versionCode qui augmente à chaque téléchargement et stockez votre clé de téléchargement en toute sécurité si vous utilisez la signature d'application Play.

    Flux de l'Application Android Bundle

  2. Créez l'Enregistrement de l'Application dans le Console de Play

    Si vous n'avez pas encore de compte développeur, commencez par Inscription à Play Console. Ensuite, dans Accueil > Créer une application, choisissez la langue, le type d'application/jeu, le statut gratuit/paiement, l'adresse e-mail de support et acceptez les déclarations requises.

    Choisissez soigneusement le statut gratuit/paiement. Google vous permet de changer une application payante en gratuite ultérieurement, mais une fois qu'une application a été proposée en gratuite, elle ne peut pas être convertie en paiement.

    Créer une application dans Play Console

  3. Terminer le contenu de l'application et la liste de magasin

    Avant la revue de production, terminez les déclarations requises de Play Console :

    • Politique de confidentialité
    • Publicités
    • Accès à l'application
    • Public cible et contenu
    • Note de contenu
    • context : Page/zone : Section d'exemples de solutions. Rôle : Étiquette de navigation ou élément de l'interface utilisateur court. Voir dans : composant solutions/SolutionAppExample.astro. Clé de message `solution_app_examples_rating` (Note de contenu des exemples d'application).
    • Sécurité des données
  4. Déclarations de permissions sensibles, si pertinentes

    Lancer une piste de test Play-Installé Démarrer avec test interne pour un QL rapide. Si votre compte développeur est un compte personnel créé après le 13 novembre 2023, vous devez également compléter un test fermé

    avec au moins 12 testeurs optés avec 14 jours consécutifs avant l'accès à la production.

  5. Testage interne dans le console Play : : Vérifier la facturation de bout en bout

    Installez l'application à partir de Google Play, et non à partir d'un APK exporté localement. Ensuite, confirmez que :

    • Les produits chargent correctement depuis Play
    • La feuille de commande affiche un achat de test un bandeau pour les testeurs de licence
    • Les autorisations s'activent après achat
    • Les flux de restauration et de gestion des abonnements fonctionnent

Pour les biens et services numériques, vous doit utilisez le système de facturation de Google Play :

Biens numériques (Doit Utiliser Play Billing) :

  • Abonnements aux fonctionnalités premium
  • Monnaie en jeu ou crédits
  • Contenu numérique (livres numériques, musique, vidéos)
  • Améliorations et boost de jeu
  • Déverrouillage de l'application et niveaux premium

Biens physiques (Ne peut pas utiliser Play Billing) :

  • Articles de merchandising physique
  • Services du monde réel
  • Donations uniques à des organisations à but non lucratif

:::note Configuration de l'abonnement Dans le console de Play, configurez les abonnements Android en utilisant le modèl’actuel abonnement -> plan de base -> offre Dans native-purchases, passez l'ID du Plan de Base avec planIdentifier. :::

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Ensure billing is available on the device
const { isBillingSupported } = await NativePurchases.isBillingSupported();
if (!isBillingSupported) throw new Error('Google Play Billing not available');
// Fetch subscription products (Store data is required—never hardcode pricing)
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['premium_monthly', 'premium_yearly'],
productType: PURCHASE_TYPE.SUBS,
});
// Plan identifiers are the Base Plan IDs you create in Google Play Console
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'premium_monthly',
planIdentifier: 'monthly-plan', // REQUIRED on Android, ignored on iOS
productType: PURCHASE_TYPE.SUBS,
});
console.log('Purchase token for server validation:', transaction.purchaseToken);

Google Play impose une déclaration claire de tous les coûts avant l'achat :

Éléments requis :

  • Prix exact en devise locale de l'utilisateur
  • Fréquence de facturation (mensuelle, annuelle, etc.)
  • Ce qui est inclus dans l'abonnement
  • Coût total pour les offres d'introduction
  • Lorsque les factures seront émises

Meilleures pratiques de conception d'interface utilisateur

Exemple d'interface utilisateur conforme

function SubscriptionCard({ product }) {
return (
<div className="subscription-card">
<h3>{product.title}</h3>
{/* Show intro offer if available */}
{product.introductoryPrice && (
<div className="intro-offer">
<p className="intro-price">{product.introductoryPriceString}</p>
<p className="intro-period">
for {product.introductoryPricePeriod}
</p>
</div>
)}
{/* Regular price */}
<div className="regular-price">
<p className="price">{product.priceString}</p>
<p className="period">per {product.subscriptionPeriod}</p>
</div>
{/* Clear description */}
<p>{product.description}</p>
{/* Renewal terms */}
<p className="terms">
Renews automatically. Cancel anytime in Google Play.
</p>
<button onClick={() => handlePurchase(product)}>
Subscribe Now
</button>
</div>
);
}

Avant que l'abonnement auto-renouvele, Google exige :

  • Notification claire que la renouvellement aura lieu
  • Rappel du prix
  • Accès facile à l'annulation

Si vous vendez le même droit sur plusieurs plateformes, maintenez la cohérence dans la dénomination du produit, la période de facturation, les avantages inclus et le langage de renouvellement afin que les utilisateurs ne soient pas surpris.

Les prix peuvent différer légitimement en raison de taxes, de la monnaie locale ou de l'économie des magasins, mais l'interface de l'achat ne doit jamais cacher ces différences ou suggérer un coût de renouvellement différent de celui que Google Play facturera.

Si votre application inclut des achats en ligne, vous devez :

  1. Lier dans la liste des applications de Google Play

    • Ajouter l'URL de la politique de confidentialité dans le console de Google Play
    • Doit être accessible au public
    • Doit être dans la même langue que votre application
  2. Lier à l'intérieur de l'application

    • Afficher la politique de confidentialité dans les paramètres de l'application
    • Afficher avant de collecter toute donnée utilisateur
    • Faire facilement découvrir

Exemple d'implémentation :

function SettingsScreen() {
const openPrivacyPolicy = () => {
window.open('https://yourapp.com/privacy', '_blank');
};
const openTerms = () => {
window.open('https://yourapp.com/terms', '_blank');
};
return (
<div>
<h2>Settings</h2>
<button onClick={openPrivacyPolicy}>
Privacy Policy
</button>
<button onClick={openTerms}>
Terms of Service
</button>
<button onClick={() => NativePurchases.manageSubscriptions()}>
Manage Subscriptions
</button>
</div>
);
}

Google Play exige une divulgation détaillée dans la section de sécurité des données :

Pour les applications IAP, déclarez :

  • La collecte de l'historique des achats
  • L'adresse e-mail (pour les reçus)
  • L'ID du appareil (pour la prévention de la fraude)
  • Gestion des informations de paiement
  • La collecte de données d'analyse

La section de sécurité des données est contraignante juridiquement. Les déclarations inexactes peuvent entraîner la suppression de l'application.

La critique de Google Play ne concerne pas uniquement le binaire. Avant une mise en production, complétez les déclarations dans Politique et programmes > Contenu de l'application.

Le minimum à vérifier avec soin :

  • Politique de confidentialité: URL publique dans le console de Play, plus un point d'entrée en application lorsque requis
  • Publicités: Déclarez si l'application contient des publicités
  • Accès à l'application: Faites parvenir des informations de connexion ou un chemin de test clair si une écran est verrouillé
  • Public cible et contenu: Correspondre à la vraie audience de l'application
  • Évaluations de contenu: Terminez le questionnaire IARC afin que l'application ne soit pas marquée comme non évaluée
  • Sécurité des données: Déclarez les pratiques de collecte, de partage et de sécurité avec précision

1. Mise en œuvre de la facturation manquante ou incorrecte

Section intitulée “1. Mauvaise ou inexistante mise en œuvre de facturation”

Pourquoi cela ne fonctionne pas :

  • Pas d'utilisation de Google Play Billing pour les biens numériques
  • Utilisation d'API de facturation obsolètes
  • Mise en œuvre de solutions de paiement personnalisées pour les abonnements

Prévention :

// ✅ Correct: Use native-purchases (uses Google Play Billing)
await NativePurchases.purchaseProduct({
productIdentifier: 'premium_monthly',
planIdentifier: 'monthly-plan',
productType: PURCHASE_TYPE.SUBS,
});
// ❌ Wrong: Custom payment processor for subscriptions
// await CustomPayment.charge(user, 9.99);

Pourquoi cela ne fonctionne pas :

  • Le prix n'est visible qu'après avoir cliqué sur l'achat
  • Frais supplémentaires non divulgués à l'avance
  • Conditions de souscription floues

Prévention :

function PurchaseScreen({ product }) {
return (
<div>
{/* Show ALL costs upfront */}
<h2>Premium Subscription</h2>
<div className="pricing">
<p className="price">{product.priceString}/month</p>
<p className="taxes">Taxes may apply based on location</p>
</div>
<div className="features">
<h3>Includes:</h3>
<ul>
<li>Ad-free experience</li>
<li>Unlimited cloud storage</li>
<li>Priority support</li>
</ul>
</div>
<div className="terms">
<p>
Subscription renews automatically unless cancelled at least
24 hours before the end of the current period.
</p>
<p>
Manage or cancel in Google Play Subscriptions.
</p>
</div>
<button onClick={handlePurchase}>
Start Subscription
</button>
</div>
);
}

Pourquoi cela ne fonctionne pas :

  • La sélection préalable d'options premium
  • La dissimulation d'alternatives moins chères
  • La difficulté à annuler
  • L'urgence fictive (« Seulement 3 places restantes ! » )

Pratiques de description recommandées

Lignes directrices de marketing

Prévention :

  • Afficher tous les niveaux d'abonnement de manière égale
  • Clarifier et rendre accessible l'annulation
  • Éviter les compteurs à rebonds ou la fausse pénurie
  • N'employez pas de stratégies de type 'dark pattern' pour pousser des options coûteuses

Pourquoi cela ne fonctionne pas :

  • L'application s'effondre lors de l'achat
  • Les produits ne s'affichent pas
  • La confirmation de l'achat ne s'affiche pas
  • Les fonctionnalités premium ne s'activent pas après achat
  • Les tests n'ont eu lieu que sur des builds de sideload en lieu et place d'un parcours de test Play installé

Prévention :

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Comprehensive testing before submission
async function testPurchaseFlow() {
try {
// 1. Test product loading
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['premium_monthly', 'premium_yearly'],
productType: PURCHASE_TYPE.SUBS,
});
console.log('✓ Products loaded:', products.length);
// 2. Test purchase flow
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'premium_monthly',
planIdentifier: 'monthly-plan',
productType: PURCHASE_TYPE.SUBS,
});
console.log('✓ Purchase completed', transaction.transactionId);
// 3. Verify entitlements
const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
});
if (
purchases.some(
(purchase) =>
purchase.productIdentifier === 'premium_monthly' &&
['PURCHASED', '1'].includes(purchase.purchaseState ?? '') &&
purchase.isAcknowledged,
)
) {
console.log('✓ Premium features unlocked');
}
// 4. Test restore
await NativePurchases.restorePurchases();
console.log('✓ Restore works');
} catch (error) {
console.error('✗ Test failed:', error);
}
}

Pourquoi cela ne fonctionne pas :

  • Aucun lien vers la politique de confidentialité dans l'application
  • La politique de confidentialité n'est pas accessible
  • La collecte de données n'est pas divulguée
  • La section Sécurité des données est inexacte

Prévention :

  • Ajouter la politique de confidentialité à la liste des applications Play
  • Inclure le lien dans les paramètres de l'application
  • Remplir avec précision la section Sécurité des données
  • Mettre à jour la politique lors de l'ajout de nouvelles collectes de données

Les programmes de facturation alternatifs de Google sont spécifiques à la région et peuvent changer. Si vous souhaitez quelque chose d'autre que la facturation standard de Google Play, confirmez l'éligibilité du marché exacte, les API requises et le langage de divulgation dans le console Play immédiatement avant la mise en œuvre.

Les utilisateurs doivent être en mesure de :

  • Voir les abonnements actifs facilement
  • Annuler sans contacter le support
  • Comprendre quand l'annulation prend effet

Mise en œuvre :

import { NativePurchases } from '@capgo/native-purchases';
function ManageSubscriptionButton() {
const openManagement = async () => {
try {
// Opens Google Play subscription management
await NativePurchases.manageSubscriptions();
} catch (error) {
// Fallback to direct URL
const playStoreUrl = 'https://play.google.com/store/account/subscriptions';
window.open(playStoreUrl, '_blank');
}
};
return (
<button onClick={openManagement}>
Manage Subscription in Google Play
</button>
);
}

Déclaration requise :

  • Quand l'annulation prend-elle effet ?
  • Les utilisateurs gardent-ils l'accès jusqu'à la fin de la période ?
  • Sont-ils disponibles des remboursements partiels ?
function CancellationInfo() {
return (
<div className="cancellation-info">
<h3>Cancellation Policy</h3>
<ul>
<li>Cancel anytime in Google Play</li>
<li>Access continues until end of billing period</li>
<li>No refunds for partial periods</li>
<li>Resubscribe anytime to regain access</li>
</ul>
<button onClick={() => NativePurchases.manageSubscriptions()}>
Manage in Google Play
</button>
</div>
);
}

Liste de vérification avant soumission

  1. Vérifier la mise en œuvre de la facturation

    • Utilisation de la facturation Google Play (via native-purchases)
    • Tous les produits de souscription créés dans le console Play
    • Les plans de base et les offres sont configurés correctement
    • Les produits sont activés et publiés
    • Les tarifs sont définis pour tous les pays cibles
  2. Flux de test d'achat

    • Créer un compte de test de licence
    • Installer la build à partir d'une piste de test de Play
    • Tester chaque niveau de souscription
    • Vérifier que les produits chargent correctement
    • Tester la fin de l'achat
    • Confirmer le achat de test Vérifier que l'annonce apparait
    • Vérifier que les fonctionnalités premium sont déverrouillées
    • Tester la restauration de la souscription
    • Tester sur plusieurs appareils
  3. Passer en revue Tous les Exemplaires

    • Tarifs affichés clairement avant l'achat
    • Toutes les frais déclarés à l'avance
    • Les termes de la souscription sont clairs
    • Le processus de résiliation expliqué
    • Aucune déclaration trompeuse
  4. Contenu de l'application et vie privée

    • Politique de confidentialité liée à la console de Play
    • Politique de confidentialité accessible dans l'application
    • Déclaration des publicités complétée
    • Instructions d'accès à l'application ajoutées si l'application est bloquée
    • Section de sécurité des données complétée avec précision
    • Permissions justifiées et documentées
  5. Évaluation du contenu et public cible

    • Completez le questionnaire d'évaluation du contenu
    • Completez la section du public cible et du contenu
    • Assurez-vous que l'évaluation correspond à la contenu réel
    • Déclarez les achats en application dans le questionnaire
  6. Préparez la liste de l'application

    • La description de l'application est précise
    • La description courte est inférieure à 80 caractères
    • La description complète est inférieure à 4000 caractères
    • Au moins 2 écrans de téléphone ont été téléchargés
    • Une image de fonctionnalité de 1024x500 a été téléchargée
    • Les écrans affichent la version actuelle
    • All les actifs requis téléchargés

Accès en Production pour les Comptes Personnels Nouveaux : Généralement 7 jours ou moins après votre demande Première Revue en Production : context Page/zone : Éditeur Capgo / produit de build natif en cloud. Rôle : Étiquette de navigation ou élément UI court. Clé de message `native_build_builder_credit_first` (Crédit du Constructeur de Build Natif). Souvent plusieurs jours, parfois plus longtemps si des questions de facturation ou de politique sont soulevées Mises à jour : Souvent plus rapides qu'une première mise en ligne, mais toujours revues

Appels en appel :

  1. Ajouter un compte de test :

    • Allez sur le console de Play
    • Paramètres > Test de licence
    • Ajouter un compte Gmail pour le test
  2. Test dans le sandbox :

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Test purchases with license test account
async function testInSandbox() {
const { isBillingSupported } = await NativePurchases.isBillingSupported();
if (!isBillingSupported) {
console.error('Billing not supported in this environment');
return;
}
// Fetch products (returns test pricing when using a license tester)
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['premium_monthly'],
productType: PURCHASE_TYPE.SUBS,
});
console.log('Test products:', products);
// Make test purchase (no charge)
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'premium_monthly',
planIdentifier: 'monthly-plan',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Test purchase complete:', transaction.transactionId);
}
  1. Vérifier le bannière de test :
    • Lors de l'achat avec un compte de test
    • Doit afficher la notification « Achat de test »
    • Aucun frais réel n'est facturé

Étapes de test internes et fermées

Sous-titre « Étapes de test internes et fermées »

Avant la mise en production :

  1. Créez un test interne pour un Q&A rapide ou un test fermé pour un test plus large
  2. Téléchargez une version signée .aab et publiez la mise en production de test
  3. Ajoutez les adresses e-mail des testeurs et partagez le lien d'opt-in
  4. Que les testeurs installent la build depuis Google Play
  5. Vérifiez que les flux d'achat fonctionnent de bout en bout sur la build Play-installée
  6. Si votre compte développeur personnel a été créé après le 13 novembre 2023, gardez au moins 12 testeurs opt-in dans une version fermée testée pendant 14 jours consécutifs avant de demander la production

Un build debug sideloadé n'est pas un substitut à une build de test de la Play installée pour valider le facturation Google Play.

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
async function handlePurchase(productId: string, planIdentifier?: string) {
try {
setLoading(true);
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: productId,
planIdentifier,
productType: planIdentifier ? PURCHASE_TYPE.SUBS : PURCHASE_TYPE.INAPP,
});
console.log('Purchase token:', transaction.purchaseToken ?? transaction.receipt);
// Success - check entitlements from the store
const { purchases } = await NativePurchases.getPurchases({
productType: planIdentifier ? PURCHASE_TYPE.SUBS : PURCHASE_TYPE.INAPP,
});
const isOwned = purchases.some(
(purchase) =>
purchase.productIdentifier === productId &&
(purchase.purchaseState === 'PURCHASED' || purchase.purchaseState === '1') &&
purchase.isAcknowledged,
);
if (isOwned) {
unlockPremiumFeatures();
showSuccess('Premium activated!');
}
} catch (error: any) {
// Handle specific error cases
switch (error.code) {
case 'USER_CANCELLED':
// User backed out - no error needed
console.log('Purchase cancelled');
break;
case 'ITEM_ALREADY_OWNED':
// They already own it - restore instead
showInfo('You already own this! Restoring...');
await NativePurchases.restorePurchases();
break;
case 'ITEM_UNAVAILABLE':
showError('This subscription is currently unavailable. Please try again later.');
break;
case 'NETWORK_ERROR':
showError('Network error. Please check your connection and try again.');
break;
default:
showError('Purchase failed. Please try again.');
console.error('Purchase error:', error);
}
} finally {
setLoading(false);
}
}
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
function RestorePurchasesButton() {
const [loading, setLoading] = useState(false);
const handleRestore = async () => {
setLoading(true);
try {
await NativePurchases.restorePurchases();
const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
});
const hasSubscription = purchases.some(
(purchase) => purchase.productType === 'subs' && purchase.isAcknowledged,
);
if (hasSubscription) {
unlockPremiumFeatures();
showSuccess('Subscriptions restored!');
return;
}
// Check one-time unlocks if needed
const { purchases: iaps } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.INAPP,
});
const hasInApp = iaps.some((purchase) => purchase.productIdentifier === 'premium_unlock');
if (hasInApp) {
unlockPremiumFeatures();
showSuccess('Previous purchases restored!');
return;
}
showInfo('No previous purchases found.');
} catch (error) {
showError('Failed to restore purchases. Please try again.');
} finally {
setLoading(false);
}
};
return (
<button onClick={handleRestore} disabled={loading}>
{loading ? 'Restoring...' : 'Restore Purchases'}
</button>
);
}
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
async function checkSubscriptionStatus() {
try {
const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
});
const subscription = purchases.find(
(purchase) =>
purchase.productIdentifier === 'premium_monthly' &&
(purchase.purchaseState === 'PURCHASED' || purchase.purchaseState === '1') &&
purchase.isAcknowledged,
);
if (!subscription) {
showPaywall();
return;
}
console.log('Subscription active:', {
productId: subscription.productIdentifier,
expiresAt: subscription.expirationDate,
willRenew: subscription.willCancel === false,
purchaseToken: subscription.purchaseToken,
});
unlockPremiumFeatures();
} catch (error) {
console.error('Failed to check subscription:', error);
}
}

Politique des paiements :

  • Non utilisation de Google Play Billing
  • Termes de souscription trompeurs
  • Coûts cachés

Politique de données de l'utilisateur :

  • Politique de confidentialité manquante
  • Déclarations de sécurité des données inexactes
  • Permissions excessives
  1. Examinez la notification de violation

    • Lisez la politique spécifique citée
    • Comprenez ce que Google a signalé
    • Vérifiez les exemples qu'ils ont fournis
  2. Réparez le problème

    • Adressez la cause racine, pas seulement les symptômes
    • Testez soigneusement après correction
    • Documentez toutes les modifications apportées
  3. Soumettre un recours (si applicable)

    Procédure de clarification et de recours

    Subject: Policy Violation Appeal - [App Name]
    Dear Google Play Review Team,
    I have received notification that my app violates [Policy X.Y].
    I have made the following changes to comply:
    1. [Specific change made]
    2. [Specific change made]
    3. [Specific change made]
    The updated version [version number] addresses all concerns raised.
    Test account for verification:
    Email: test@example.com
    Password: TestPass123
    Thank you for your consideration.

    Exemple de demande de documentation

  4. Résubmitter ou Mettre à jour

    • Télécharger la version corrigée
    • Résubmitter pour examen
    • Surveiller l'état dans le console de Play

Naviguer dans la revue de la boutique Play peut être complexe, surtout lorsque vous devez combiner la conformité de facturation, les déclarations de contenu de l'application et la configuration de la piste de test. Si vous avez besoin d'une assistance personnalisée :

Réservez un appel de consultation avec notre équipe pour l'aide avec :

  • Préparation complète de la revue de la boutique Play
  • Configuration de suivi de test et recrutement de testeurs
  • Examen de mise en œuvre de l'achat in-app
  • Sécurité des données et conformité à la protection des données
  • Résolution des problèmes de refus et d'appel en appel
  • Processus de soumission de l'application complet

Nos experts ont guidé des centaines d'applications à travers des soumissions réussies de l'App Store et peuvent vous aider à naviguer les exigences actuelles.

Avez-vous besoin d'aide pour l'implémentation ?

Continuez de la section « Guides de revue de magasin Play Store Android pour IAP »

Titre de la section « Continuez de la section « Guides de revue de magasin Play Store Android pour IAP » »

Si vous utilisez Guides de revue de magasin Play Store Android pour IAP pour planifier la sécurité et la conformité, connectez-l’avec En utilisant @capgo/native-purchases pour la capacité native dans En utilisant @capgo/native-purchases Chiffrement pour le détail d'implémentation dans Chiffrement Conformité pour le détail d'implémentation dans Conformité Capgo Scanner de Sécurité pour le flux de travail du produit dans Capgo Scanner de Sécurité, et Capgo Sécurité pour le flux de travail du produit dans Capgo Sécurité.