Bergabunglah bersama kami di ⁠#Android11: The Beta Launch Show pada tanggal 3 Juni!

Mencegah penipuan dan penyalahgunaan

Semakin populer aplikasi Anda, kemungkinan adanya pengguna berbahaya yang ingin menyalahgunakan aplikasi Anda juga akan meningkat. Topik ini menjelaskan rekomendasi yang harus diikuti untuk membantu mencegah serangan ini pada integrasi penagihan Anda dan mengurangi dampak penyalahgunaan dalam aplikasi Anda.

Memindahkan logika sensitif ke backend

Sebanyak apa pun izin dalam desain aplikasi Anda, pindahkan data dan logika sensitif ke server backend yang Anda kontrol. Semakin banyak data dan logika yang Anda miliki di perangkat frontend, semakin tinggi pula kemungkinannya akan dimodifikasi atau diubah.

Contohnya, game catur online harus memvalidasi semua langkah di backend, bukan memercayai bahwa frontend akan selalu mengirim langkah yang diizinkan.

Selain itu, jika Anda menemukan masalah keamanan atau kerentanan, bergantung pada desain sistem Anda, mungkin akan lebih mudah untuk men-debug, memperbaiki, dan meluncurkan update pada backend daripada pada frontend.

Memverifikasi pembelian sebelum memberikan izin kepemilikan

Kasus khusus tentang data dan logika sensitif yang harus ditangani di backend adalah verifikasi pembelian. Setelah pengguna melakukan pembelian, Anda harus melakukan langkah berikut:

  1. Kirim purchaseToken yang sesuai ke backend Anda. Artinya, Anda harus menyimpan catatan semua nilai purchaseToken untuk semua pembelian.
  2. Verifikasikan bahwa nilai purchaseToken untuk pembelian saat ini tidak cocok dengan nilai purchaseToken sebelumnya. purchaseToken bersifat unik secara global sehingga Anda dapat menggunakan nilai ini dengan aman sebagai kunci utama dalam database.
  3. Gunakan endpoint Purchases.products:get atau Purchases.subscriptions:get di Google Play Developer API untuk memverifikasi dengan Google bahwa pembelian tersebut sah.
  4. Jika pembelian sah dan belum pernah digunakan, Anda dapat memberikan izin kepemilikan dengan aman atas langganan atau item dalam aplikasi.
  5. Untuk langganan, jika linkedPurchaseToken ditetapkan dalam Purchases.subscriptions:get, Anda juga harus menghapus linkedPurchaseToken dari database dan mencabut kepemilikan hak yang diberikan ke linkedPurchaseToken untuk memastikan bahwa beberapa pengguna tidak memiliki hak atas pembelian yang sama.

Melindungi konten yang tidak dikunci

Untuk mencegah pengguna berbahaya mendistribusikan ulang konten yang tidak dikunci, jangan paketkan konten ke dalam file APK Anda. Sebagai gantinya, lakukan salah satu hal berikut:

  • Gunakan layanan real-time untuk menayangkan konten, seperti content feed. Menayangkan konten melalui layanan real-time juga memungkinkan konten Anda selalu update.
  • Gunakan server jarak jauh untuk menayangkan konten.

Saat Anda menayangkan konten dari server jarak jauh atau layanan real-time, Anda dapat menyimpan konten yang tidak dikunci di memori atau di kartu SD perangkat. Jika Anda menyimpan konten di kartu SD, pastikan untuk mengenkripsi konten dan menggunakan kunci enkripsi spesifik-perangkat.

Mendeteksi dan menangani pembelian yang dibatalkan

Pembelian yang dibatalkan adalah pembelian yang telah dibatalkan, dicabut, atau ditagih balik. Jika pembelian yang dibatalkan pernah memberikan izin kepada pengguna atas item dalam aplikasi atau konten lainnya, Anda dapat menggunakan Voided Purchases API untuk mendapatkan alasan pembatalan pembelian beserta konten terkait yang dapat Anda ambil kembali.

Pembelian untuk item dalam aplikasi dan langganan dapat dibatalkan karena berbagai alasan, termasuk:

  • Pembelian dibatalkan, baik oleh pengguna, developer, maupun Google. Untuk langganan, perlu diperhatikan bahwa hal ini mengacu pada pembatalan pembelian langganan, bukan membatalkan langganan itu sendiri.
  • Pembelian ditagih balik.
  • Developer aplikasi membatalkan atau mengembalikan dana pesanan pengguna dan mencentang opsi "cabut" di konsol.

Berdasarkan alasan pembatalan pembelian, dan mempertimbangkan data perilaku pengguna sebelumnya, Anda dapat menentukan tindakan. Sebaiknya terapkan satu atau beberapa langkah berikut:

  • Lakukan pengambilan kembali: Saat pembelian dibatalkan, Anda dapat mengambil kembali item yang tidak digunakan, seolah-olah tidak pernah dibeli. Misalnya, jika pembelian mata uang dalam game dibatalkan, Anda dapat mengambil kembali mata uang yang telah diberikan kepada pengguna. Jika pengguna telah menghabiskan mata uang tersebut, pertimbangkan untuk menetapkan saldo mata uang tersebut ke minus dan membatasi aktivitas aplikasi serta pembelian di masa mendatang hingga saldo mata uang kembali positif.
  • Pemberian beberapa teguran: Pertimbangkan untuk memberikan teguran ringan bagi pengguna yang baru pertama kali melanggar, seperti menampilkan peringatan dalam aplikasi. Untuk pelanggar berulang, pertimbangkan tindakan yang lebih berat.
  • Nonaktifkan pembelian sementara: Seperti pemberian teguran, pertimbangkan untuk menonaktifkan pembelian bagi pengguna yang melakukan pembatalan pembelian sampai Anda dapat menyelidiki alasannya secara lebih mendetail.
  • Nonaktifkan akses aplikasi untuk sementara atau permanen: Untuk kasus ekstrem dengan aktivitas berbahaya yang terus diulang, pertimbangkan untuk memblokir akses ke aplikasi Anda, baik untuk sementara maupun permanen.
  • Panggil Voided Purchases API dengan cukup sering: Saat Anda mendeteksi satu atau beberapa pembelian yang dibatalkan, pertimbangkan untuk membuat panggilan yang lebih sering ke Voided Purchases API guna menarik pembelian sebelum pengguna menggunakannya. Anda dapat menemukan informasi selengkapnya tentang kuota Voided Purchases API dalam dokumentasi Voided Purchases API.

Bantu Google mendeteksi penipuan sebelum terjadi

Beberapa jenis penipuan memiliki kaitan dengan pengguna berbahaya yang membuat beberapa akun Google dan akun dalam aplikasi untuk menyembunyikan aktivitas mereka.

Gunakan metode setObfuscatedAccountId dan setObfuscatedProfileId dalam builder bagi BillingFlowParams untuk membantu Google memetakan akun Google ke akun dalam aplikasi.

Google menggunakan data ini untuk mendeteksi perilaku mencurigakan dan memblokir beberapa jenis transaksi penipuan sebelum transaksi tersebut diselesaikan.

Mengambil tindakan terhadap pelanggaran hak cipta dan merek dagang

Jika Anda menggunakan server jarak jauh untuk menayangkan atau mengelola konten, setel aplikasi Anda agar memverifikasi status pembelian konten yang sudah didapat setiap kali pengguna mengaksesnya. Hal ini memungkinkan Anda mencabut penggunaannya apabila diperlukan dan meminimalkan pembajakan. Jika Anda menjumpai konten Anda didistribusikan kembali di Google Play, pastikan untuk bertindak cepat dan tegas. Untuk detail selengkapnya, lihat halaman Pertanyaan Umum Terkait Hak Cipta di Pusat Bantuan Hak Cipta.