Sebelum memulai Android SDK, pastikan Anda telah menyelesaikan prasyarat.
Android SDK memungkinkan Anda menambahkan Kartu di Google Wallet. Jika Anda menambahkan tombol Google Wallet di aplikasi, pengguna akan menikmati pengalaman sederhana dan menyenangkan saat menambahkan kartu ke Google Wallet.
Ikuti langkah-langkah untuk menambahkan tombol Google Wallet ke aplikasi Android:
1. Membuat Objek Kartu
Catatan: Class Kartu diperlukan untuk membuat Objek Kartu. Jika Anda belum membuatnya, ikuti petunjuk tentang cara Membuat Kelas Kartu.
Tentukan LoyaltyObject
yang sesuai, termasuk atribut
yang diperlukan berikut:
- classId
: ID Class Kartu yang dibuat dalam prasyarat. - id
: ID unik untuk objek.
state
: Kolom ini digunakan untuk menentukan cara objek ditampilkan. Misalnya, objek yang tidak aktif dipindahkan ke bagian "Kartu yang sudah tidak berlaku".
Lihat Template tata letak untuk informasi selengkapnya tentang cara atribut ini ditampilkan di kartu loyalitas.
Berikut adalah definisi untuk contoh kartu loyalitas:
JSON
{
"id": "ISSUER_ID.OBJECT_ID",
"classId": "CLASS_ID",
"state": "ACTIVE"
}
2. Membuat JWT yang belum ditandatangani dengan objek
Saat LoyaltyObject
dibuat, gabungkan dengan JWT yang belum
ditandatangani dengan atribut payload.LoyaltyObjects
, seperti yang ditunjukkan dalam
cuplikan berikut:
JSON
{
"iss": "OWNER_EMAIL_ADDRESS",
"aud": "google",
"typ": "savetowallet",
"iat": "UNIX_TIME",
"origins": [],
"payload": {
"loyaltyObjects": [ NEW_OBJECT ]
}
}
3. Menyertakan tombol Google Wallet di UI Anda
Google Wallet menyediakan tombol biasa yang dapat Anda gunakan untuk memicu alur Tambahkan ke Google Wallet dalam aplikasi Anda. Aset vektor untuk tombol tersedia dalam Panduan tombol.
Anda dapat mengimpor aset vektor di Android Studio pada bagian File > New > Vector
Asset
. Pilih "Local file" di wizard, tambahkan nama (misalnya:
add_to_google_wallet_button.xml
) dan cari file di drive lokal Anda untuk
mengimpornya.
Sekarang, Anda dapat menggunakan drawable yang diimpor untuk menambahkan tombol ke antarmuka pengguna:
<ImageButton
android:id="@+id/addToGoogleWalletButton"
android:layout_width="match_parent"
android:layout_height="48dp"
android:minWidth="200dp"
android:clickable="true"
android:src="@drawable/add_to_google_wallet_button" />
Tombol ini memiliki layout_height
48 dp dan lebar minimal 200 dp.
4. Memeriksa apakah Google Wallet API tersedia di perangkat target
Sebelum menyimpan objek baru, pastikan Google Wallet API
tersedia di perangkat target dengan memanggil metode getPayApiAvailabilityStatus
di class PayClient
. Mulailah dengan menambahkan variabel anggota ke aktivitas tempat Anda akan menampilkan tombol dan membuat instance saat aktivitas dibuat:
Kotlin
import com.google.android.gms.pay.PayClient
private lateinit var walletClient: PayClient
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
walletClient = Pay.getClient(this)
// Additional logic in your onCreate method
}
Java
import com.google.android.gms.pay.PayClient;
private final PayClient walletClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
walletClient = Pay.getClient(application);
// Additional logic in your onCreate method
}
Sekarang, gunakan klien untuk memeriksa apakah API tersebut tersedia:
Kotlin
import com.google.android.gms.pay.PayApiAvailabilityStatus
private fun fetchCanUseGoogleWalletApi() {
walletClient
.getPayApiAvailabilityStatus(PayClient.RequestType.SAVE_PASSES)
.addOnSuccessListener { status ->
if (status == PayApiAvailabilityStatus.AVAILABLE) {
// The API is available, show the button in your UI
} else {
// The user or device is not eligible for using the Pay API
}
}
.addOnFailureListener {
// Hide the button and optionally show an error message
}
}
Java
import com.google.android.gms.pay.PayApiAvailabilityStatus;
private void fetchCanAddPassesToGoogleWallet() {
walletClient
.getPayApiAvailabilityStatus(PayClient.RequestType.SAVE_PASSES)
.addOnSuccessListener(status -> {
if (status == PayApiAvailabilityStatus.AVAILABLE) {
// The API is available, show the button in your UI
} else {
// The user or device is not eligible for using the Pay API
};
})
.addOnFailureListener(exception -> {
// Google Play Services is too old, or API availability not verified
// Hide the button and optionally show an error message
});
}
Terakhir, panggil metode yang ditentukan di atas dalam aplikasi Anda saat Anda harus menentukan ketersediaan API.
5. Tambahkan objek ke Google Wallet
LoyaltyObject
dapat ditambahkan dengan meneruskan JWT yang belum ditandatangani dari
langkah 2 ke metode savePasses
.
Anda dapat memulai operasi penambahan sebagai akibat dari mengklik tombol Google Wallet:
Kotlin
import android.os.Bundle
import android.view.View
import com.google.android.gms.samples.wallet.databinding.ActivityCheckoutBinding
private val addToGoogleWalletRequestCode = 1000
private lateinit var layout: ActivityCheckoutBinding
private lateinit var addToGoogleWalletButton: View
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Use view binding to access the UI elements
layout = ActivityCheckoutBinding.inflate(layoutInflater)
setContentView(layout.root)
addToGoogleWalletButton = layout.addToGoogleWalletButton
addToGoogleWalletButton.setOnClickListener {
walletClient.savePasses(newObjectJson, this, addToGoogleWalletRequestCode)
}
// Additional logic in your onCreate method
}
Java
import android.os.Bundle;
import android.view.View;
import com.google.android.gms.samples.wallet.databinding.ActivityCheckoutBinding;
private static final int ADD_TO_GOOGLE_WALLET_REQUEST_CODE = 999;
private ActivityCheckoutBinding layout:
private View addToGoogleWalletButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Use view binding to access the UI elements
layout = ActivityCheckoutBinding.inflate(getLayoutInflater());
setContentView(layout.getRoot());
addToGoogleWalletButton = layout.addToGoogleWalletButton;
addToGoogleWalletButton.setOnClickListener(v -> {
walletClient.savePasses(newObjectJson, this, ADD_TO_GOOGLE_WALLET_REQUEST_CODE);
});
// Additional logic in your onCreate method
}
Metode savePasses
memicu alur simpan dan memanggil
metode onActivityResult
setelah alur penyimpanan selesai. Implementasi
onActivityResult
harus serupa dengan yang berikut ini:
Kotlin
import android.content.Intent
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == addToGoogleWalletRequestCode) {
when (resultCode) {
RESULT_OK -> {
// Pass saved successfully
}
RESULT_CANCELED -> {
// Save operation canceled
}
PayClient.SavePassesResult.SAVE_ERROR -> data?.let { intentData ->
val errorMessage = intentData.getStringExtra(PayClient.EXTRA_API_ERROR_MESSAGE)
// Handle error
}
else -> {
// Handle unexpected (non-API) exception
}
}
}
}
Java
import android.content.Intent;
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ADD_TO_GOOGLE_WALLET_REQUEST_CODE) {
switch (resultCode) {
case RESULT_OK: {
// Pass saved successfully
break;
}
case RESULT_CANCELED: {
// Save operation canceled
break;
}
case PayClient.SavePassesResult.SAVE_ERROR: {
if (data != null) {
String apiErrorMessage = data.getStringExtra(PayClient.EXTRA_API_ERROR_MESSAGE);
// Handle error
}
break;
}
default: {
// Handle unexpected (non-API) exception
}
}
}
}
Jika kartu berhasil ditambahkan, resultCode
akan berisi nilai
Activity.RESULT_OK
.
[TEST ONLY] pass
Saat Anda masih dalam mode demo, semua kartu yang Anda buat akan memiliki teks tambahan "[TEST ONLY]" pada judul kartu. Hal ini untuk membedakan kartu demo dari kartu live. Setelah Anda mendapatkan persetujuan produksi dari tim kami, mode demo ini tidak akan lagi memiliki teks tambahan saat pengguna membuka kembali aplikasi dompet di perangkat yang terhubung.
Langkah berikutnya
- Menilai kasus penggunaan kartu loyalitas dan menerapkan kartu yang sesuai dengan kebutuhan bisnis
- Sesuaikan tampilan kartu loyalitas Anda dengan mengikuti Pedoman brand
- Kirimkan alur UX untuk peninjauan akhir di bagian "Google Wallet API" pada Konsol Google Pay dan Wallet
- Uji integrasi Anda dan tayangkan.
- Masih ada pertanyaan? Harap tinjau FAQ kami.