Aller directement au contenu

Lignes directrices de la boutique Android Play Store pour les achats intégrés

GitHub

Pour obtenir votre application Android approuvée sur Google Play, vous devez respecter les politiques de Google, en particulier pour les applications avec des achats en application et des abonnements. Ce guide couvre tout ce dont vous avez besoin pour passer la revue avec succès.

  1. Construire une application Android signée en bundle

    Les nouvelles applications Google Play doivent être chargées sous forme d'un bundle d'application Android (.aab), et non sous forme d'un APK de débogage chargé par sidération.

    Conservez votre versionCode augmente à chaque téléchargement et stockez votre clé de téléchargement en toute sécurité si vous utilisez Play App Signing.

    flux de paquet Android App Bundle

  2. Créez l'enregistrement de l'application dans le console Play

    Si vous n'avez pas encore de compte développeur, commencez par inscription à la console Play. 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 gratuit, elle ne peut pas être convertie en paiement.

    Créer une application dans la console Play

  3. Contenu de l'application et la liste de stockage

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

    • Politique de confidentialité
    • Publicités
    • Accès à l'application
    • Public cible et contenu
    • Notation du contenu
    • Sécurité des données
    • Déclarations de permissions sensibles, si applicable
  4. Exécutez un test de piste installé par Play

    Démarrer avec tests internes pour un QA 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 inscrits pour 14 jours consécutifs avant l'accès à la production.

    Test interne dans Play Console

  5. Vérifier le paiement End-to-End

    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 montre un achat de test bannière 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 devez utiliser le système de facturation de Google Play : Biens numériques (Utilisation obligatoire de la facturation Play) :

Abonnements aux fonctionnalités premium

  • Monnaie ou crédits en jeu
  • Contenu numérique (livres numériques, musique, vidéos)
  • Améliorations de jeu et boosters
  • Désbloqueurs d'applications et niveaux premium
  • Utilisez le système de facturation de Google Play pour les biens et services numériques.

Biens physiques (Impossible d'utiliser Play Billing) :

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

:::note Configuration de l'abonnement Dans le console Play, configurez les abonnements Android en utilisant le modèle actuel abonnement -> plan de base -> offre modèle. 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 exige une divulgation claire de tous les coûts avant l'achat :

Éléments obligatoires :

  • 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
  • Lors des factures seront émises

Meilleures pratiques de conception d'interface utilisateur

Exemple de conception conforme à l'interface utilisateur :

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 qu'une souscription se renouvelle automatiquement, Google exige :

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

Si vous vendez le même droit d'accès sur plusieurs plateformes, maintenez la désignation du produit, la période de facturation, les avantages inclus et le langage de renouvellement alignés afin que les utilisateurs ne soient pas surpris.

Les prix peuvent différer légitimement en raison des taxes, de la monnaie locale ou de l'économie de magasin, 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 application, vous devez :

Lien dans la liste des applications Play Store

Ajouter l'URL de la politique de confidentialité dans le console de Play

  1. Doit être accessible au public

    • Doit être dans la même langue que votre application
    • Lien dans l'application
    • If you sell the same entitlement on multiple platforms, keep the product naming, billing period, included benefits, and renewal language aligned so users are not surprised.__CAPGO_KEEP_0__.
  2. Prices can legitimately differ because of taxes, local currency, or store economics, but the purchase UI must never hide those differences or imply a different renewal cost than the one Google Play will charge.__CAPGO_KEEP_0__.

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

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>
);
}

Pour les applications IAP, déclarer :

Collecte de l'historique des achats

  • Adresses e-mail (pour les reçus)
  • Identifiants de dispositif (pour la prévention de la fraude)
  • La section "Sécurité des données" doit comporter une déclaration détaillée :
  • Gestion des informations de paiement
  • Collecte de données d'analytique

La section 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 seulement le binaire. Avant une mise en production, complétez les déclarations sur Politiques et programmes > Contenu de l'application.

Le minimum à examiner soigneusement :

  • Politique de confidentialitéURL publique dans le console de Play, plus un point d'entrée en application lorsque requis
  • PublicitésDéclarer si l'application contient des publicités
  • Accès à l'application: Fournir aux réviseurs des informations d'identification de travail ou un chemin de test clair si une écran est bloqué
  • Public cible et contenu: Correspondre à la vraie audience de l'application
  • Notes de contenu: Compléter le questionnaire IARC pour que l'application ne soit pas marquée comme non évaluée
  • Sécurité des données: Déclarer les pratiques de collecte, de partage et de sécurité avec précision

1. Mise en œuvre de facturation manquante ou incorrecte

Section intitulée « 1. Mise en œuvre de facturation manquante ou incorrecte »

Pourquoi cela ne fonctionne pas :

  • Ne pas utiliser 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 réussit 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 vagues

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 réussit pas :

  • Options premium pré-sélectionnées
  • Alternatives moins chères cachées
  • Rendre la résiliation difficile
  • Urgence artificielle (« Seulement 3 places restantes ! »)

Pratiques de description de haute qualité

Lignes directrices de marketing

Prévention :

  • Afficher tous les niveaux de souscription de manière égale
  • Faire la résiliation claire et accessible
  • Éviter les compteurs à rebonds ou la fausse rareté
  • N'employez pas les schémas sombres pour pousser les options coûteuses

Pourquoi cela échoue :

  • L'application s'arrête lors de l'achat
  • Les produits ne s'affichent pas
  • La confirmation d'achat ne s'affiche pas
  • Les fonctionnalités premium ne s'activent pas après achat
  • Seuls les builds sideloadés ont été testés au lieu d'un track de test Play-installe

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 :

  • Pas de lien de politique de confidentialité dans l'application
  • La politique de confidentialité n'est pas accessible
  • La collecte de données non divulguée
  • La section de sécurité des données inexacte

Prévention :

  • Ajoutez une politique de confidentialité à la liste de l'App Store
  • Incluez un lien dans les paramètres de l'application
  • Remplissez correctement la section de sécurité des données
  • Mettez à 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é au marché exact, les API requises et le langage de divulgation dans le console de Play immédiatement avant la mise en œuvre.

Les utilisateurs doivent être en mesure de :

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

Implémentation :

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>
);
}

Période de grâce pour l'annulation

Période de grâce de la résiliation

Déclaration obligatoire :

  • Quand prend effet la résiliation ?
  • Les utilisateurs gardent-ils accès jusqu'à la fin de la période ?
  • Des remboursements partiels sont-ils disponibles ?
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

Liste de vérification avant soumission

Vérifier la mise en œuvre de la facturation

  1. Utilisation de Google Play Billing (via native-purchases)

    • Tous les produits de souscription créés dans le console Play
    • Tous les produits de souscription créés dans le console Play
    • Plans de base et offres configurés correctement
    • Les produits sont activés et publiés
    • Tarifs définis pour tous les pays cibles
  2. Flux d'achat de test

    • Créer un compte de test de licence
    • Installer la build d'un track de test Play
    • Tester chaque niveau de souscription
    • Vérifier que les produits chargent correctement
    • Tester la fin de l'achat
    • Confirmer que le bannière d'achat de test apparaît
    • Vérifiez l'activation des fonctionnalités premium
    • Testez la restauration de l'abonnement
    • Testez sur plusieurs appareils
  3. Révisez Tous les Exemplaires

    • Le prix est affiché clairement avant l'achat
    • Toutes les frais sont divulgués à l'avance
    • Les termes de l'abonnement sont clairs
    • Le processus de résiliation est expliqué
    • Aucune affirmation 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
    • La déclaration des publicités est terminée
    • Les instructions d'accès à l'application ont été ajoutées si l'application est verrouillée
    • La section de la sécurité des données est terminée avec précision
    • Les permissions sont justifiées et documentées
  5. Classification de contenu et public

    • Remplir le questionnaire de classification de contenu
    • Compléter la section de public et de contenu
    • Assurer que la classification correspond réellement au contenu
    • Déclarer les achats en application dans le questionnaire
  6. Préparer la liste de magasin

    • La description de l'application est précise
    • La description courte est inférieure à 80 caractères
    • La description complète est dans 4000 caractères ou moins
    • Au moins 2 captures d'écran de téléphone téléchargées
    • Une image de feature de 1024x500 téléchargée
    • Les captures d'écran montrent la version actuelle
    • Tous les assets requis téléchargés

Accès à la Production pour les Comptes Personnels Nouveaux : D'habitude, 7 jours ou moins après votre demande Première Révision de Production : Souvent plusieurs jours, parfois plus longtemps si des questions sur les factures ou les politiques sont soulevées Mises à jour : Souvent plus rapide qu'une première mise à jour, mais toujours examiné Appels :  Planifiez plusieurs jours et fournissez des corrections et des instructions de revue exactes

:::tip Reviews en roulant Contrairement à Apple, Google examine les applications en continu. Votre application peut être mise en ligne à tout moment pendant la période de revue, et non à un moment fixe. :::

  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. Testez 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. Bannière de test : Vérifier
    • Lors de l'achat avec un compte de test
    • Doit voir la notification « Achat de test »
    • Aucune charge réelle n'a lieu

Avant la mise en production :

  1. Créez un étape de test interne pour une QA rapide ou un tests fermés suivi pour un test plus large
  2. Télécharger une signature .aab et publier la version de test
  3. Ajouter les adresses e-mail des testeurs et partager le lien d'opt-in
  4. Faire installer les testeurs à partir de la build de Google Play
  5. Vérifier 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 pour un test fermé pendant 14 jours consécutifs avant de postuler pour la production

Une build de débogage sideloadée n'est pas un substitut pour une build de test Play-installée lors de la validation de Google Play Billing

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 de Paiement :

  • Pas d'utilisation de Google Play Billing
  • Conditions de souscription trompeuses
  • Coûts cachés

Politique de données utilisateur :

  • Manque de politique de confidentialité
  • Déclarations de sécurité des données inexactes
  • Permissions excessives
  1. Examinez la Notification de Violation

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

    • Adressez la cause racine, et non seulement les symptômes
    • Testez soigneusement après la 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 documentation demandé

  4. Résubmitter ou Mettre à jour

    • Télécharger la version corrigée
    • Résubmit pour examen
    • Suivre l'état dans Play Console

La navigation de la revue de Play Store peut être complexe, surtout lorsque vous devez combiner la conformité aux factures, 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 Play Store
  • Configuration et recrutement de testeurs de la piste de test
  • Examen de la mise en œuvre de l'IAP
  • Conformité à la sécurité des données et à la vie privée
  • Résolution des problèmes de refus et d'appel en appel
  • Processus de soumission d'application complet

Notre équipe d'experts a guidé des centaines d'applications à travers des soumissions de Play Store réussies et peut vous aider à naviguer les exigences actuelles.

Avez-vous besoin d'aide pour la mise en œuvre ?

Continuez à partir des lignes directrices de la revue de l'Android Play Store pour les achats en ligne

Section intitulée “Continuez à partir des lignes directrices de la revue de l'Android Play Store pour les achats en ligne”

Si vous utilisez Lignes directrices de la revue de l'Android Play Store pour les achats en ligne pour planifier la sécurité et la conformité, connectez-le à En utilisant @capgo/achats natifs pour la capacité native dans En utilisant @capgo/achats natifs 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é.