Langsung ke konten

Pedoman Review Android Play Store untuk IAP

GitHub

Agar aplikasi Android Anda disetujui di Google Play, Anda harus mematuhi kebijakan Google, terutama untuk aplikasi dengan in-app purchases dan langganan. Panduan ini membahas semua yang Anda butuhkan agar lolos review dengan sukses.

  1. Build Signed Android App Bundle

    Aplikasi Google Play baru harus di-upload sebagai Android App Bundle (.aab), bukan sideloaded debug APK.

    Simpan versionCode Anda pada setiap upload dan simpan upload key Anda dengan aman jika menggunakan Play App Signing.

    Alur Android App Bundle

  2. Buat App Record di Play Console

    Jika Anda belum memiliki akun developer, mulailah dengan Pendaftaran Play Console. Kemudian, di Home > Buat aplikasi, pilih bahasa, tipe aplikasi/game, status gratis/berbayar, email dukungan, dan setujui deklarasi yang diperlukan.

    Pilih pengaturan gratis/berbayar dengan teliti. Google mengizinkan Anda mengubah aplikasi berbayar menjadi gratis nanti, tetapi jika aplikasi sudah pernah ditawarkan secara gratis, aplikasi tersebut tidak bisa diubah menjadi berbayar.

    Buat aplikasi di Play Console

  3. Lengkapi Konten Aplikasi dan Store Listing

    Sebelum review produksi, selesaikan deklarasi Play Console yang diperlukan:

    • Kebijakan privasi
    • Iklan
    • Akses app
    • Target audiens dan konten
    • Rating konten
    • Keamanan Data
    • Sensitive permissions declarations, if applicable
  4. Jalankan Play-Installed Test Track

    Mulai dengan pengujian internal untuk QA cepat. Jika akun developer Anda adalah akun personal yang dibuat setelah 13 November 2023, Anda juga harus menyelesaikan uji coba tertutup dengan minimal 12 tester yang opt-in selama 14 hari berturut-turut sebelum akses produksi.

    Internal testing di Play Console

  5. Verifikasi Billing End-to-End

    Instal aplikasi dari Google Play, bukan dari APK ekspor lokal. Kemudian konfirmasi bahwa:

    • Produk dimuat dari Play dengan benar
    • Sheet pembelian menampilkan pembelian uji coba banner untuk penguji lisensi
    • Entitlements terbuka setelah pembelian
    • Alur restore dan manajemen langganan berfungsi

Untuk barang dan layanan digital, Anda harus menggunakan sistem billing Google Play:

Produk digital (wajib pakai Play Billing):

  • Subscriptions to premium features
  • Mata uang atau kredit in-app
  • Konten digital (ebook, musik, video)
  • Upgrade game dan power-up
  • Unlock app dan tier premium

Produk fisik (tidak boleh pakai Play Billing):

  • Merchandise fisik
  • Layanan dunia nyata
  • Donasi satu kali ke nonprofit

:::note Setup Langganan Di Play Console, konfigurasikan langganan Android menggunakan subscription -> base plan -> offer saat ini model. Di native-purchases, teruskan Base Plan ID dengan 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 mewajibkan pengungkapan semua biaya secara jelas sebelum pembelian:

Elemen yang diperlukan:

  • Harga persis dalam mata uang lokal pengguna
  • Frekuensi penagihan (bulanan, tahunan, dll.)
  • Apa saja yang termasuk dalam langganan
  • Total biaya untuk penawaran perkenalan
  • Kapan penagihan akan dilakukan

Best Practices Desain UI

Contoh UI yang Sesuai:

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

Pengungkapan Perpanjangan Otomatis

Bagian berjudul “Auto-Renewal Disclosure”

Sebelum langganan diperbarui otomatis, Google mewajibkan:

  • Notifikasi jelas bahwa perpanjangan akan terjadi
  • Pengingat mengenai harga
  • Akses pembatalan yang mudah

Jika Anda menjual entitlement yang sama di berbagai platform, pastikan penamaan produk, periode penagihan, benefit, dan bahasa renewal tetap selaras agar pengguna tidak bingung.

Harga bisa saja berbeda karena pajak, mata uang lokal, atau ekonomi toko, tetapi UI pembelian tidak boleh menyembunyikan perbedaan itu atau memberi kesan biaya renewal yang berbeda dari yang akan ditagihkan Google Play.

Jika aplikasi Anda menyertakan in-app purchase, Anda harus:

  1. Tautkan di listing Play Store

    • Tambahkan URL kebijakan privasi di Play Console
    • Harus dapat diakses publik
    • Harus menggunakan bahasa yang sama dengan aplikasi Anda
  2. Tautan di Dalam Aplikasi

    • Tampilkan kebijakan privasi di pengaturan aplikasi
    • Tampilkan sebelum mengumpulkan data pengguna apa pun
    • Pastikan mudah ditemukan

Contoh implementasi:

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 mewajibkan pengungkapan detail pada bagian Data Safety:

Untuk Aplikasi IAP, Deklarasikan:

  • Pengumpulan riwayat pembelian
  • Alamat email (untuk tanda terima)
  • Device ID (untuk pencegahan fraud)
  • Penanganan informasi pembayaran
  • Pengumpulan data analitik

Bagian Data Safety bersifat mengikat secara hukum. Deklarasi yang tidak akurat dapat menyebabkan aplikasi dihapus.

Review Google Play bukan hanya soal biner. Sebelum rilis produksi, lengkapi deklarasi di Kebijakan dan program > Konten aplikasi.

Set minimum yang perlu ditinjau dengan teliti:

  • Kebijakan privasi: URL publik di Play Console, plus entry point dalam aplikasi jika diperlukan
  • Iklan: Deklarasikan apakah aplikasi berisi iklan
  • Akses app: Berikan kredensial yang berfungsi atau jalur pengujian yang jelas jika ada layar yang dibatasi
  • Target audiens dan konten: Sesuaikan dengan audiens sebenarnya aplikasi
  • Rating konten: Lengkapi kuesioner IARC agar aplikasi tidak berstatus tanpa rating
  • Keamanan Data: Deklarasikan praktik pengumpulan, pembagian, dan keamanan secara akurat

1. Implementasi Billing yang Hilang atau Salah

Bagian berjudul “1. Implementasi Billing yang Hilang atau Salah”

Mengapa Gagal:

  • Tidak menggunakan Google Play Billing untuk produk digital
  • Menggunakan API billing yang sudah deprecated
  • Mengimplementasikan solusi pembayaran kustom untuk langganan

Pencegahan:

// ✅ 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);

Mengapa Gagal:

  • Harga baru muncul setelah klik beli
  • Biaya tambahan tidak diungkapkan di awal
  • Syarat langganan yang tidak jelas

Pencegahan:

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

Mengapa Gagal:

  • Memilih opsi premium secara otomatis
  • Menyembunyikan alternatif yang lebih murah
  • Membuat proses pembatalan sulit
  • Urgensi palsu (“Sisa 3 slot lagi!”)

Deskripsi Best Practices

Panduan Pemasaran

Pencegahan:

  • Tampilkan semua tier langganan secara setara
  • Pastikan pembatalan jelas dan mudah diakses
  • Hindari timer hitung mundur atau kesan kelangkaan palsu
  • Jangan gunakan dark pattern untuk memaksa opsi mahal

Mengapa Gagal:

  • App crash saat melakukan pembelian
  • Produk tidak muncul
  • Konfirmasi pembelian tidak muncul
  • Fitur premium tidak terbuka setelah pembelian
  • Pengujian hanya dilakukan pada sideloaded build, bukan melalui track testing Play Store

Pencegahan:

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

Mengapa Gagal:

  • Tidak ada link kebijakan privasi di aplikasi
  • Kebijakan privasi tidak dapat diakses
  • Pengumpulan data tidak diungkapkan
  • Bagian Data Safety tidak akurat

Pencegahan:

  • Tambahkan kebijakan privasi ke listing Play Store
  • Sertakan link di pengaturan aplikasi
  • Isi bagian Data Safety dengan akurat
  • Perbarui kebijakan saat menambah pengumpulan data baru

Program penagihan alternatif Google bersifat spesifik wilayah dan dapat berubah. Jika Anda ingin menggunakan metode selain Google Play Billing standar, segera konfirmasi kelayakan pasar, API yang diperlukan, dan bahasa pengungkapan di Play Console sebelum implementasi.

Pengguna harus dapat untuk:

  • Lihat langganan aktif dengan mudah
  • Batalkan tanpa menghubungi support
  • Pahami kapan pembatalan berlaku

Implementasi:

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

Pengungkapan Wajib:

  • Kapan pembatalan mulai berlaku?
  • Apakah pengguna tetap punya akses sampai periode berakhir?
  • Apakah tersedia pengembalian dana sebagian?
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>
);
}

Checklist Pra-Submit

  1. Verifikasi Implementasi Billing

    • Menggunakan Google Play Billing (via native-purchases)
    • Semua produk langganan sudah dibuat di Play Console
    • Base plan dan penawaran sudah dikonfigurasi dengan benar
    • Produk sudah diaktifkan dan dipublikasikan
    • Harga sudah diatur untuk semua negara target
  2. Uji Alur Pembelian

    • Buat akun license test
    • Instal build dari jalur pengujian Play
    • Tes setiap tier langganan
    • Verifikasi produk dimuat dengan benar
    • Tes penyelesaian pembelian
    • Konfirmasi pembelian uji coba banner muncul
    • Verifikasi fitur premium terbuka
    • Tes restorasi langganan
    • Tes di beberapa perangkat
  3. Review Semua Copy

    • Harga tampil jelas sebelum beli
    • Semua biaya diinfokan di awal
    • Syarat langganan sudah jelas
    • Proses pembatalan sudah dijelaskan
    • Tidak ada klaim menyesatkan
  4. Konten dan Privasi Aplikasi

    • Link kebijakan privasi di Play Console
    • Kebijakan privasi dapat diakses di aplikasi
    • Deklarasi iklan sudah dilengkapi
    • Instruksi akses aplikasi sudah ditambahkan jika aplikasi terkunci
    • Bagian Keamanan Data sudah diisi dengan akurat
    • Izin telah dibenarkan dan didokumentasikan
  5. Rating Konten dan Audiens

    • Lengkapi kuesioner rating konten
    • Lengkapi bagian konten dan target audiens
    • Pastikan rating sesuai dengan konten asli
    • Deklarasikan in-app purchase di kuesioner
  6. Siapkan Store Listing

    • Deskripsi aplikasi sudah akurat
    • Short description maksimal 80 karakter
    • Full description maksimal 4000 karakter
    • Upload minimal 2 screenshot ponsel
    • Upload feature graphic 1024x500
    • Screenshot menampilkan versi terbaru
    • Semua aset wajib sudah di-upload

Akses Produksi untuk Akun Personal Baru: Biasanya 7 hari atau kurang setelah Anda mengajukan Review Produksi Pertama: Sering beberapa hari, kadang lebih lama jika muncul pertanyaan billing atau kebijakan Update: Biasanya lebih cepat dari rilis pertama, tapi tetap di-review Banding: Siapkan waktu beberapa hari dan berikan perbaikan yang tepat serta instruksi untuk reviewer

:::tip Rolling Reviews Berbeda dengan Apple, Google mereview aplikasi secara berkelanjutan. Aplikasi Anda bisa live kapan saja selama periode review, bukan pada waktu yang tetap. :::

  1. Tambah Akun Test:

    • Buka Play Console
    • Pengaturan > Pengujian lisensi
    • Tambah akun Gmail untuk testing
  2. Test di 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. Verifikasi Banner Test:
    • Saat melakukan pembelian dengan akun test
    • Harus muncul notifikasi “Test purchase”
    • Tidak ada biaya asli yang dikenakan

Sebelum rilis produksi:

  1. Buat file pengujian internal jalur untuk QA cepat atau pengujian tertutup jalur untuk pengujian lebih luas
  2. Upload build yang sudah di-sign .aab dan publikasikan rilis testing tersebut
  3. Tambahkan alamat email tester dan bagikan link opt-in
  4. Minta tester install build dari Google Play
  5. Verifikasi alur pembelian berjalan end-to-end pada build yang diinstal dari Play Store
  6. Jika akun developer pribadi Anda dibuat setelah 13 November 2023, jaga minimal 12 tester tetap opt-in ke closed test selama 14 hari berturut-turut sebelum mengajukan ke produksi

Debug build yang di-sideload bukan pengganti build testing yang diinstal dari Play Store saat memvalidasi 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);
}
}

Kebijakan Pembayaran:

  • Tidak menggunakan Google Play Billing
  • Syarat langganan yang menyesatkan
  • Biaya tersembunyi

Kebijakan Data Pengguna:

  • Kebijakan privasi tidak ada
  • Deklarasi Data Safety tidak akurat
  • Izin (permissions) berlebihan
  1. Tinjau Pemberitahuan Pelanggaran

    • Baca kebijakan spesifik yang dikutip
    • Pahami apa yang ditandai Google
    • Cek contoh yang mereka berikan
  2. Perbaiki Masalah

    • Atasi akar masalah, bukan sekadar gejala
    • Tes secara menyeluruh setelah diperbaiki
    • Dokumentasikan semua perubahan yang dibuat
  3. Ajukan Banding (jika perlu)

    Proses Klarifikasi dan Banding

    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.

    Minta Contoh Dokumentasi

  4. Kirim Ulang atau Update

    • Upload versi yang sudah diperbaiki
    • Kirim ulang untuk review
    • Pantau status di Play Console

Proses review Play Store bisa cukup rumit, terutama saat Anda harus menggabungkan kepatuhan billing, deklarasi konten App, dan setup testing-track. Jika Anda butuh bantuan khusus:

Jadwalkan sesi konsultasi dengan tim kami untuk bantuan terkait:

  • Persiapan lengkap review Play Store
  • Setup testing track dan rekrutmen tester
  • Review implementasi IAP
  • Kepatuhan Data Safety dan privasi
  • Troubleshooting penolakan dan banding
  • Proses submit aplikasi lengkap

Pakar kami telah memandu ratusan aplikasi agar berhasil submit ke Play Store dan siap membantu Anda memenuhi persyaratan terkini.

Butuh bantuan implementasi?

Lanjutkan dari Pedoman Review Android Play Store untuk IAP

Bagian berjudul “Lanjutkan dari Pedoman Review Android Play Store untuk IAP”

Jika Anda menggunakan Pedoman Review Android Play Store untuk IAP untuk merencanakan keamanan dan kepatuhan, hubungkan dengan Menggunakan @capgo/native-purchases untuk kemampuan native saat menggunakan @capgo/native-purchases, Enkripsi untuk detail implementasi pada Encryption, Kepatuhan untuk detail implementasi pada Compliance, Capgo Pemindai Keamanan untuk alur kerja produk di Capgo Security Scanner, dan Keamanan Capgo untuk alur kerja produk di Capgo Security.