Plugin Layanan Penagihan Google Play memperluas layanan dan aset bawaan Unity untuk pembelian dalam aplikasi, yang disebut Unity IAP, untuk memberi game Anda semua fitur terbaru dari Google Play Billing Library. Panduan ini menjelaskan cara menyiapkan project Anda untuk menggunakan plugin tersebut. Panduan ini juga menjelaskan cara menerapkan fitur Library Layanan Penagihan Google Play dalam game Anda di Unity.
Menyiapkan plugin Layanan Penagihan Google Play
Untuk menyiapkan plugin, selesaikan langkah-langkah di setiap bagian yang telah disertai link berikut:
- Mengaktifkan lapisan abstraksi Unity IAP.
- Mendownload dan mengimpor plugin.
- Mengonfigurasi setelan build plugin.
- Mengaktifkan plugin.
Mengaktifkan lapisan abstraksi Unity IAP
Plugin Layanan Penagihan Google Play di-build pada lapisan abstraksi yang disertakan dengan Unity IAP, sehingga Anda perlu mengaktifkan lapisan abstraksi ini sebelum mendownload dan mengimpor plugin. Untuk mengaktifkan lapisan abstraksi Unity IAP, lakukan langkah berikut:
- Selesaikan semua langkah dalam tutorial Unity berikut: Menyiapkan project Anda untuk Layanan Unity.
- Selesaikan semua langkah dalam tutorial Unity berikut: Mengaktifkan layanan Unity IAP.
Mendownload dan mengimpor plugin
Plugin dikirimkan sebagai paket Unity dalam
format .unitypackage
. Untuk mendownload dan mengimpor plugin, ikuti langkah berikut:
- Download rilis terbaru Plugin Google Play untuk Unity dari halaman rilis repositori di GitHub.
Dari panel menu Unity, klik Assets > Import Package > Custom Package.
Buka lokasi tempat Anda mendownload file
.unitypackage
, lalu pilih file tersebut.Dalam dialog Import Unity Package, biarkan semua aset dipilih, lalu klik Import.
Setelah paket diimpor, folder baru bernama GooglePlayPlugins (di root folder Assets) akan ditambahkan ke aset project Anda. Folder ini berisi semua aset Library Layanan Penagihan Google Play untuk plugin.
Mengonfigurasi setelan build
Plugin ini memperluas Unity IAP sehingga Unity akan mengalami konflik dan gagal mem-build APK Android kecuali jika beberapa dependensi tumpang tindih yang lebih lama pada Unity IAP dihapus dari build. Plugin ini menyediakan cara otomatis untuk menghapus library yang mengalami konflik dari project Anda. Untuk menyelesaikan konflik ini, ikuti langkah berikut:
Dari panel menu Unity, pilih Google > Play Billing > Build Settings.
Di jendela Play Billing Build Settings, klik Fix. Tindakan ini akan mengatasi konflik dan memindahkan file Unity IAP yang mengalami konflik ke direktori cadangan. Setelah Anda mengklik Fix, tombol akan berubah menjadi Restore, yang dapat Anda klik untuk memulihkan file asli, yang mengalami konflik.
Mengaktifkan plugin
Untuk mengaktifkan plugin, ganti implementasi Google Play Unity IAP dengan
plugin Layanan Penagihan Google Play. Misalnya, jika menggunakan Unity IAP Purchaser
Script,
ganti StandardPurchaseModule
yang diteruskan ke builder IAP
menjadi Google.Play.Billing.GooglePlayStoreModule
:
// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
Jika game Anda menggunakan Purchaser Script yang sama untuk beberapa platform, sebaiknya tambahkan pemeriksaan platform untuk memastikan bahwa Unity akan tetap menggunakan solusi IAP miliknya untuk platform lain:
ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android)
{
builder = ConfigurationBuilder.Instance(
Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}
Jika Anda memublikasikan game di app store Android selain Google Play Store, maka Anda sebaiknya mengganti implementasi default Unity IAP hanya saat memilih Google Play Store:
ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android
&& SelectedAndoidAppStore == AppStore.GooglePlay)
{
builder = ConfigurationBuilder.Instance(
Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}
Mengimplementasikan fitur Library Layanan Penagihan Google Play dalam game
Plugin Layanan Penagihan Google Play memperluas layanan Unity IAP, sehingga Anda dapat menggunakan Unity API yang sama untuk mengelola alur kerja pembelian umum. Perlu diperhatikan bahwa ada beberapa perubahan kecil pada perilaku API karena adanya perbedaan antara Google Play Billing Library dan implementasi IAP standar Unity untuk app store lainnya. Jika Anda baru menggunakan API Unity IAP, lihat bagian "Membuat Skrip Pembelian" dalam Tutorial Unity IAP untuk menemukan contoh cara mengimplementasikan alur pembelian dasar.
Google Play Billing Library juga menyertakan beberapa fitur unik untuk Google Play Store. Anda dapat mengakses fitur ini melalui antarmuka yang diperluas. Bagian ini selanjutnya menjelaskan cara menerapkan fitur Library Layanan Penagihan Google Play unik ini dalam game Anda.
Mengaktifkan pembelian yang ditangguhkan
Google Play mendukung pembelian yang ditangguhkan, atau yang disebut juga transaksi tertunda atau pembelian tertunda, yakni saat pengguna dapat melakukan pembelian dan menyelesaikannya nanti menggunakan uang tunai di toko.
Untuk mengaktifkan pembelian yang ditangguhkan, gunakan builder IAP Anda untuk mengubah konfigurasi modul
dengan memanggil metode EnableDeferredPurchase()
:
// Create a builder using a GooglePlayStoreModule.
var configurationBuilder =
ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
// Enable deferred purchases
configurationBuilder.Configure<Google.Play.Billing.IGooglePlayConfiguration>()
.EnableDeferredPurchase();
Berikutnya, implementasikan callback pembelian yang ditangguhkan menggunakan ekstensi Play Store:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Set the deferred purchases callback.
_playStoreExtensions.SetDeferredPurchaseListener(
delegate(Product product)
{
// Do not grant the item here. Instead, record the purchase and remind
// the user to complete the transaction in the Play Store.
});
Meneruskan ID akun yang di-obfuscate ke Google Play
Anda dapat meneruskan ID akun pengguna yang di-obfuscate ke Google Play untuk memfasilitasi deteksi penyalahgunaan, seperti mendeteksi apakah ada banyak perangkat yang melakukan pembelian pada akun yang sama di waktu yang singkat.
Untuk meneruskan ID akun yang di-obfuscate, panggil metode SetObfuscatedAccountId()
dari API ekstensi:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Pass an obfuscated account ID.
_playStoreExtensions.SetObfuscatedAccountId(obfuscatedAccountId);
Meneruskan ID profil yang di-obfuscate ke Google Play
Anda dapat meneruskan ID profil yang di-obfuscate ke Google Play untuk memfasilitasi deteksi penipuan, seperti mendeteksi apakah ada banyak perangkat yang melakukan pembelian pada akun yang sama di waktu yang singkat. Hal ini serupa dengan meneruskan ID akun pengguna yang di-obfuscate. Pada kedua kasus ini, ID merepresentasikan satu pengguna, tetapi ID profil memungkinkan Anda mengidentifikasi satu pengguna secara unik di beberapa profil yang mereka miliki dalam satu aplikasi. Setelah mengirimkan ID profil yang di-obfuscate ke Google Play, Anda dapat mengambil ID tersebut nanti dalam tanda terima pembelian.
Untuk meneruskan ID profil yang di-obfuscate, gunakan
builder IAP Anda untuk mengubah konfigurasi modul dengan memanggil
metode SetObfuscatedProfileId()
:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
// Pass an obfuscated profile ID.
_playStoreExtensions.SetObfuscatedProfileId(obfuscatedProfileId);
Mengonfirmasi perubahan harga untuk langganan
Google Play memungkinkan Anda mengubah harga langganan
aktif. Pengguna game
Anda harus mengonfirmasi setiap perubahan harga sebelum perubahan ini diberlakukan. Untuk
meminta pengguna mengonfirmasi perubahan harga bagi langganan mereka, panggil
metode ConfirmSubscriptionPriceChange()
:
// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();
_playStoreExtensions.ConfirmSubscriptionPriceChange(productId,
delegate (bool success)
{
// Returns whether the user has accepted the new price or not.
});
Perubahan pada perilaku Unity API
Saat Anda menggunakan plugin Layanan Penagihan Google Play, sebagian besar API berperilaku sama seperti implementasi IAP standar Unity untuk app store lainnya. Namun, ada beberapa kasus di mana API ini akan berperilaku lain. Bagian ini menjelaskan perbedaan perilaku tersebut.
Payload developer tidak didukung
Google Play telah menghentikan payload developer dan akan menggantinya dengan alternatif yang lebih relevan dan kontekstual. Karena alasan ini, payload developer kini tidak didukung. Untuk informasi selengkapnya tentang alternatif, lihat halaman tentang Payload developer.
Anda dapat terus menggunakan antarmuka yang sama yang ditentukan oleh penerapan IAP standar
Unity untuk app store lainnya, termasuk IStoreController
. Saat
memulai pembelian, Anda masih dapat menggunakan IStoreController
dan memanggil
metode InitiatePurchase()
:
public void InitiatePurchase(Purchasing.Product product, string payload);
Namun, payload yang Anda teruskan tidak akan berlaku (tidak akan muncul dalam tanda terima akhir).
SubscriptionManager tidak didukung
Unity IAP menyediakan class SubscriptionManager
untuk mengelola langganan. Karena implementasi IAP standar Unity pada
class ini menggunakan payload developer, class ini tidak didukung. Anda tetap dapat
membuat class ini, tetapi mungkin akan menerima data yang tidak konsisten saat menggunakan salah satu
metode pengambil class ini.
UpdateSubscription memiliki sedikit perubahan API
Plugin Layanan Penagihan Google Play tidak mendukung penggunaan
metode SubscriptionManager.UpdateSubscription()
dan SubscriptionManager.UpdateSubscriptionInGooglePlayStore()
untuk mengupgrade dan mendowngrade langganan Anda. Jika game Anda memanggil metode ini,
GooglePlayStoreUnsupportedException
akan muncul.
Library Layanan Penagihan Google Play menyediakan API alternatif yang dapat digunakan untuk menggantikan
metode ini. Untuk mengupgrade atau mendowngrade langganan, panggil metode UpdateSubscription()
menggunakan mode penghitungan prorata:
void UpdateSubscription(Product oldProduct, Product newProduct,
GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);
Anda dapat menggabungkan panggilan metode ini dengan pemeriksaan platform atau dalam blok catch
saat GooglePlayStoreUnsupportedException
terdeteksi.
Untuk informasi selengkapnya dan contoh cara menggunakan mode penghitungan prorata, lihat Menetapkan mode penghitungan prorata.