1. Giriş
Genel Bakış
Google Cüzdan API'si, kullanıcılarla çeşitli kart türleri üzerinden etkileşim kurmanıza olanak tanır: bağlılık kartları, teklifler, hediye kartları, etkinlik biletleri, toplu taşıma biletleri, biniş kartları ve daha fazlası. Her kart türü veya geçme sınıfı, kullanıcı deneyimini geliştirmek için kullanım alanına özel alanlar ve özellikler içerir.
Ancak bunlar her kullanım alanına uygun olmayabilir. Daha özelleştirilmiş bir deneyim oluşturmak için genel kart türünü kullanabilirsiniz. Aşağıda, genel kart türünün kullanım alanlarına örnekler verilmiştir:
- Otopark kartları
- Kütüphane üyelik kartları
- Kayıtlı değer kuponları
- Spor salonu üyelik kartları
- Rezervasyonlar
Genel kartları, aşağıdakilerin sunulduğu tüm kullanım alanları için kullanabilirsiniz:
- En fazla üç satırlık bilgi
- (İsteğe bağlı) Barkod grafiği
- (İsteğe bağlı) Ayrıntılar bölümü
Google Cüzdan API'si veya Android uygulamalarına Google Cüzdan'a ekle düğmesi ekleme hakkında daha fazla bilgi edinmek için lütfen Google Cüzdan geliştirici dokümanlarına bakın.
Kart sınıfları ve nesneleri
Google Cüzdan API'si aşağıdakilerin oluşturulması için yöntemler sunar:
Tür | Açıklama |
Kursu geçme | Tek bir kart nesnesi için şablon. Bu sınıfa ait tüm geçiş nesneleriyle ilgili ortak bilgileri içerir. |
Nesneyi geçirin | Bir User-ID için benzersiz olan geçiş sınıfı örneği. |
Bu codelab hakkında
Bu codelab'de aşağıdaki görevleri tamamlayacaksınız.
- Demo modunda yeni bir veren hesap oluşturma
- Kartları vermek için bir hizmet hesabı oluşturun
- Yeni genel kart sınıfı oluşturma
- Yeni kart nesnesi oluşturun
- Kartı kaydetmek için Google Cüzdan'a ekle düğmesi oluşturun
- Düğmeyi Android uygulamanızda gösterme
- Kart kaydetme sonucunu işleme
Ön koşullar
- Android Studio
- Git
- Google Cloud Console'a erişimi olan bir Google Hesabı
- Node.js 10 sürümü veya üzeri
Hedefler
Bu codelab'i tamamladıktan sonra şunları yapabileceksiniz:
- Google Cüzdan SDK'sını Android uygulamanıza ekleyin
- Google Cüzdan API'sinin Android destekli bir cihazda kullanılıp kullanılamadığını kontrol etme
- Google Cüzdan'a ekle düğmesi oluşturun
Destek
Codelab'de herhangi bir noktada takılırsanız google-pay/wallet-android-codelab GitHub deposunda referans olarak kullanabileceğiniz eksiksiz bir çözüm bulabilirsiniz.
2. Kurulum
Bu adımda, demo modunda bir Veren hesap oluşturacaksınız. Böylece, kullanıcı cüzdanlarına eklenebilecek kart sınıfları ve nesneler oluşturabilirsiniz. Şimdi bir Google Cloud projesi ve hizmet hesabı oluşturacaksınız. Bunlar, arka uç sunucusuyla aynı şekilde programatik olarak geçiş sınıfları ve nesneleri oluşturmak için kullanılacaktır. Son olarak, Google Cloud hizmet hesabına, Google Cüzdan'ı veren kuruluş hesabınızdaki kartları yönetme yetkisi verirsiniz.
Google Cüzdan API'sini veren kuruluş hesabına kaydolun
Google Cüzdan'a yönelik kartlar oluşturmak ve dağıtmak için Kartı Veren hesap gereklidir. Google Pay ve Cüzdan Konsolu. İlk aşamada, demo modunda kart oluşturabilirsiniz. Dolayısıyla oluşturduğunuz kartları yalnızca belirli test kullanıcıları ekleyebilir. Test kullanıcıları Google Pay ve Cüzdan Konsolu.
Demo modu hakkında daha fazla bilgi edinmek için Genel geçiş ön koşullarını inceleyin.
- Google Pay ve Cüzdan Konsolu
- Kartı veren kuruluş hesabı oluşturmak için ekrandaki talimatları uygulayın.
- Google Cüzdan API'si seçeneğini belirleyin.
- Hizmet şartlarını ve gizlilik politikasını anladığınızı onaylayın
- Düzenleyen Kimliği değerini bir metin düzenleyiciye veya başka bir konuma kopyalayın
- Yönet sekmesinde Test hesapları oluştur'u seçin
- Bu codelab'de kullanacağınız e-posta adreslerini ekleyin
Google Cüzdan API'sini etkinleştir
- Google Cloud Console'da oturum açın.
- Google Cloud projeniz yoksa hemen bir proje oluşturun (daha fazla bilgi için Proje oluşturma ve yönetme başlıklı makaleyi inceleyin)
- Projeniz için Google Cüzdan API'sini (Kartlar için Google Pay API'si olarak da bilinir) etkinleştirin.
Hizmet hesabı ve anahtar oluşturma
Google Cüzdan API'sini çağırmak için bir hizmet hesabı ve hizmet hesabı anahtarı gereklidir. Hizmet hesabı, Google Cüzdan API'sini çağıran kimliktir. Hizmet hesabı anahtarı, uygulamanızı hizmet hesabı olarak tanımlayan bir özel anahtar içerir. Bu anahtar hassas olduğu için gizli tutun.
Hizmet hesabı oluşturma
- Google Cloud konsolunda Hizmet Hesapları'nı açın.
- Hizmet hesabınız için bir ad, kimlik ve açıklama girin
- OLUŞTUR VE DEVAM ET'i seçin
- BİTTİ'yi seçin
Hizmet hesabı anahtarı oluşturma
- Hizmet hesabınızı seçin
- KEYS menüsünü seçin.
- ANAHTAR EKLE'yi, ardından Yeni anahtar oluştur'u seçin.
- JSON anahtar türünü seçin
- OLUŞTUR'u seçin.
Anahtar dosyasını yerel iş istasyonunuza kaydetmeniz istenir. Konumunu unutmayın.
GOOGLE_APPLICATION_CREDENTIALS
ortam değişkenini ayarlayın
GOOGLE_APPLICATION_CREDENTIALS
ortam değişkeni, Google SDK'ları tarafından bir hizmet hesabı olarak kimlik doğrulaması yapmak ve bir Google Cloud projesinin farklı API'lerine erişmek için kullanılır.
GOOGLE_APPLICATION_CREDENTIALS
ortam değişkenini ayarlamak için Google Cloud hizmet hesabı anahtarları dokümanındaki talimatları uygulayın.- Ortam değişkeninin yeni bir terminal (MacOS/Linux) veya komut satırı (Windows) oturumunda ayarlandığını doğrulayın (zaten açıksa yeni bir oturum başlatmanız gerekebilir)
echo $GOOGLE_APPLICATION_CREDENTIALS
Hizmet hesabını yetkilendirme
Son olarak, hizmet hesabını Google Cüzdan kartlarını yönetmesi için yetkilendirmeniz gerekir.
- Google Pay ve Cüzdan Konsolu
- Kullanıcılar'ı seçin.
- Kullanıcı davet et'i seçin.
- Hizmet hesabının e-posta adresini girin (ör.
test-svc@myproject.iam.gserviceaccount.com
) - Erişim düzeyi açılır menüsünden Geliştirici veya Yönetici'yi seçin.
- Davet Et'i seçin.
3. Genel kart sınıfı oluşturma
Bu adımda, kartınız için temel sınıf oluşturacaksınız. Bir kullanıcı için oluşturulan her yeni kart, ilgili kart sınıfında tanımlanan özellikleri devralır.
Bu codelab'de oluşturacağınız kart sınıfı, Genel kartların esnekliğini kullanarak hem kimlik rozeti hem de meydan okuma puanı izleyicisi olarak çalışan bir nesne oluşturur. Bu sınıftan bir kart nesnesi oluşturulduğunda, aşağıdaki grafik gibi görünür.
Kart sınıfları, doğrudan Google Pay ve Cüzdan Konsolu'nu kullanarak veya Google Cüzdan API'sini kullanarak. Bu codelab'de, API'yi kullanarak genel kart sınıfı oluşturacaksınız. Bu, özel bir arka uç sunucusunun geçiş sınıfları oluşturmak için kullanacağı süreci izler.
- google-pay/wallet-android-codelab GitHub deposunu yerel iş istasyonunuza klonlayın.
git clone https://github.com/google-pay/wallet-android-codelab.git
- Terminal veya komut satırı isteminizde klonlanan depoyu açın
backend
dizinine gidin (bu komut dosyaları arka uç sunucu işlemlerini taklit eder)cd backend
- Node.js bağımlılıklarını yükleyin
npm install .
backend
dizinindegeneric_class.js
dosyasını açınissuerId
değerini Google Pay'deki Sertifikayı Veren Kimliğinizle değiştirin ve Cüzdan Konsolu// TODO: Define Issuer ID let issuerId = 'ISSUER_ID';
- Terminal veya komut satırı isteminizde
generic_class.js
komut dosyasını
çalıştırın.node generic_class.js
Kodunuz çalıştırıldığında yeni bir geçiş sınıfı oluşturur ve sınıf kimliğini verir. Sınıf kimliği, kartı verenin kimliği ve ardından geliştirici tarafından tanımlanan bir son ekten oluşur. Bu durumda, sonek codelab_class
olarak ayarlanır (sınıf kimliği 1234123412341234123.codelab_class
değerine benzerdir). Çıkış günlükleri, Google Cüzdan API'sinin yanıtını da içerir.
4. Projeyi Android Studio'da açma
Klonladığınız GitHub deposu, boş etkinliğe sahip bir Android projesi içeriyor. Bu adımda, ürün sayfasına Google Cüzdan'a ekle düğmesi eklemek için bu etkinlikte düzenleme yapacaksınız.
- Android Studio'yu açma
- Dosya'yı ve ardından Aç'ı seçin
- Depoda
android
dizinini seçin - Aç'ı seçin.
Google Cüzdan SDK'sını uygulamanıza ekleyin
- Modül düzeyinde Gradle derleme dosyasını açın (
android/app/build.gradle
) - Google Cüzdan SDK'sını
dependencies
bölümüne ekleyin// TODO: Add the "com.google.android.gms:play-services-pay" dependency to // use the Google Wallet API implementation "com.google.android.gms:play-services-pay:16.0.3"
- Dosyayı kaydet
- Dosya'yı, ardından Projeyi Gradle Dosyalarıyla Senkronize Et'i seçin.
5. Şunu oluşturun: Google Cüzdan'a ekle düğmesi
Bu adımda, bir Google Cüzdan'a ekle düğmesi oluşturacak ve bunu mevcut bir etkinliğe ekleyeceksiniz. Düğme öğeleri projeye zaten dahil edilmiştir. Düğmeyi eklemek için ayrı bir düzen dosyası oluşturursunuz. Eklendikten sonra, düğme aşağıdaki gibi görünür.
- Yeni düzen dosyası oluşturun:
app/src/main/res/layout/add_to_google_wallet_button.xml
- Aşağıdaki içeriği yeni düzen dosyasına ekleyin
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="48sp" android:background="@drawable/add_to_google_wallet_button_background_shape" android:clickable="true" android:contentDescription="@string/add_to_google_wallet_button_content_description" android:focusable="true"> <ImageView android:layout_width="227dp" android:layout_height="26dp" android:layout_gravity="center" android:duplicateParentState="true" android:src="@drawable/add_to_google_wallet_button_foreground" /> </FrameLayout>
- Ödeme etkinliği düzen dosyasına (
app/src/main/res/layout/activity_checkout.xml
)add_to_google_wallet_button.xml
düzenini ekleyin<!-- TODO: Create the button under `add_to_google_wallet_button.xml` and include it in your UI --> <include android:id="@+id/addToGoogleWalletButton" layout="@layout/add_to_google_wallet_button" android:layout_width="match_parent" android:layout_height="48dp" android:layout_marginTop="10dp" />
6. Google Cüzdan API'sinin kullanılıp kullanılamadığını kontrol etme
Bir kullanıcının uygulamanızı Google Cüzdan API'sini desteklemeyen bir cihazda açması, kartı eklemeye çalıştığında olumsuz bir deneyime yol açabilir. Kullanıcının cihazı Google Cüzdan API'sini desteklemiyorsa Google Cüzdan'a ekle düğmesinin gizlenmesi karışıklığı önler. API'nin kullanılamamasının çeşitli nedenleri olabilir. Örneğin, Android veya Google Play Hizmetleri sürümlerinin eski olması veya Google Cüzdan'ın kullanıcının ülkesinde kullanılamaması.
Bu adımda, uygulamanıza Google Cüzdan API'sinin cihazda kullanılıp kullanılamadığını kontrol eden bir mantık ekleyeceksiniz. Bu durumda düğme etkinlikte oluşturulur. Aksi takdirde düğme gizlenir.
CheckoutActivity.kt
dosyasınıapp/src/main/java/com/google/android/gms/samples/wallet/activity/
uygulamasında açPayClient
örneği
için bir sınıf mülkü oluşturun// TODO: Create a client to interact with the Google Wallet API private lateinit var walletClient: PayClient
onCreate
yönteminde// TODO: Instantiate the client walletClient = Pay.getClient(this)
PayClient
özelliğini örneklendirin- Cihazda Google Cüzdan SDK'sı ve API'sinin olup olmadığını kontrol eden bir yöntem oluşturup sonucu işleyin
// TODO: Create a method to check for the Google Wallet SDK and API private fun fetchCanUseGoogleWalletApi() { walletClient .getPayApiAvailabilityStatus(PayClient.RequestType.SAVE_PASSES) .addOnSuccessListener { status -> if (status == PayApiAvailabilityStatus.AVAILABLE) layout.passContainer.visibility = View.VISIBLE } .addOnFailureListener { // Hide the button and optionally show an error message } }
- Google Cüzdan API'sinin kullanılabilir olup olmadığını kontrol etmek için
onCreate
yöntemindefetchCanUseGoogleWalletApi
yöntemini çağırın// TODO: Check if the Google Wallet API is available fetchCanUseGoogleWalletApi()
Uygulamayı çalıştırdığınızda artık kullanıcı arayüzünde Google Cüzdan'a ekle düğmesini görürsünüz.
7. Genel kart nesnesi oluşturma
Google Cüzdan API'sinin kullanılabildiğini doğruladığınıza göre artık bir kart oluşturabilir ve kullanıcınızdan bu kartı cüzdanına eklemesini isteyebilirsiniz. Kullanıcılar için kart nesneleri oluşturmak için iki akış vardır.
Arka uç sunucusunda geçiş nesnesini oluşturma
Bu yaklaşımda, geçiş nesnesi bir arka uç sunucusunda oluşturulur ve istemci uygulamasına imzalı bir JWT olarak döndürülür. Bu seçenek, kullanıcının cüzdanına eklemeye çalışmadan önce nesnenin mevcut olmasını sağladığından, kullanıcı benimseme oranının yüksek olduğu durumlar için daha uygundur.
Kullanıcı cüzdanına eklediğinde kart nesnesini oluşturma
Bu yaklaşımda, geçiş nesnesi tanımlanır ve arka uç sunucusunda imzalı bir JWT olarak kodlanır. Ardından, JWT'ye referans veren istemci uygulamasında Google Cüzdan'a ekle düğmesi oluşturulur. Kullanıcı düğmeyi seçtiğinde, kart nesnesini oluşturmak için JWT kullanılır. Bu yöntem, geçiş nesnelerin oluşturulmasını ve kullanılmamasını önlediği için kullanıcı benimsemesinin değişken veya bilinmediği durumlar için daha uygundur. Bu yaklaşım codelab'de kullanılacaktır.
backend/generic_pass.js
dosyasını açissuerId
değerini Google Pay'deki Sertifikayı Veren Kimliğinizle değiştirin ve Cüzdan Konsolu// TODO: Define Issuer ID let issuerId = 'ISSUER_ID';
- Terminal veya komut satırı isteminizde
generic_pass.js
dosyasını çalıştırınnode generic_pass.js
- Çıkış jetonunu panoya veya bir metin düzenleyiciye kopyalayın
Kodunuz çalıştığında yeni bir geçiş nesnesi tanımlar ve bunu bir JWT'ye yerleştirir. JWT, daha önce oluşturduğunuz hizmet hesabı anahtarı tarafından imzalanır. Bu işlem, Google Cüzdan API'sine yapılan isteğin kimliğini doğrular. Böylece, kimlik bilgilerinin istemci uygulamasında depolanmasına gerek kalmaz.
Üretim ortamında arka uç sisteminiz JWT'ler oluşturmaktan ve bunları müşterilere geri vermekten sorumludur. Bu codelab'de, generic_pass.js
komut dosyası bu davranışı emüle eder ve "döndürür" istemci uygulamasında kullanmanız için bir jeton.
8. Kartı Google Cüzdan'a ekleyin
Google Cüzdan API'nin kullanılabilir olduğunu doğrulayıp imzalı bir JWT oluşturduğunuza göre artık kullanıcıdan kartı cüzdanına eklemesini isteyebilirsiniz. Bu adımda, kartı kullanıcının cüzdanına kaydetmek için Google Cüzdan API'sini kullanan Google Cüzdan'a ekle düğmesine bir dinleyici eklersiniz.
app/src/main/CheckoutActivity.kt
dosyasını açtoken
değerini, daha önce oluşturduğunuz JWT ile değiştirin// TODO: Save the JWT from the backend "response" private val token = "TOKEN"
- İstek kodunu depolamak için bir sınıf mülkü oluşturun
// TODO: Add a request code for the save operation private val addToGoogleWalletRequestCode = 1000
- Google Cüzdan'a ekle düğmesi
için bir işleyici ayarlayın// TODO: Set an on-click listener on the "Add to Google Wallet" button addToGoogleWalletButton = layout.addToGoogleWalletButton. addToGoogleWalletButton.setOnClickListener { walletClient.savePassesJwt(token, this, addToGoogleWalletRequestCode) }
Kullanıcı Google Cüzdan'a ekle düğmesini seçtiğinde walletClient.savePassesJwt
yöntemi çağrılır. Bu yöntemde kullanıcıdan yeni kart nesnesini Google Cüzdan hesabına eklemesi istenir.
9. Kullanıcı başına SavePassesJwt sonucu
Bu codelab'in son adımında uygulamanızı walletClient.savePassesJwt
işleminin sonucunu işleyecek şekilde yapılandıracaksınız.
app/src/main/CheckoutActivity.kt
dosyasını açonActivityResult
yöntemini aşağıdaki kodu içerecek şekilde geçersiz kılın// TODO: Handle the result override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == addToGoogleWalletRequestCode) { when (resultCode) { RESULT_OK -> { // Pass saved successfully. Consider informing the user. } RESULT_CANCELED -> { // Save canceled } PayClient.SavePassesResult.SAVE_ERROR -> data?.let { intentData -> val errorMessage = intentData.getStringExtra(PayClient.EXTRA_API_ERROR_MESSAGE) // Handle error. Consider informing the user. Log.e("SavePassesResult", errorMessage.toString()) } else -> { // Handle unexpected (non-API) exception } } } }
Uygulamanız artık aşağıdaki senaryoları işleyebilir:
- Kart ekleme işlemi başarılı
- Kullanıcı iptali
- Beklenmeyen hatalar
Kartı ekleyebileceğinizi ve sonucu beklendiği gibi işleyebileceğinizi onaylamak için uygulamanızı çalıştırın.
10. Tebrikler
Tebrikler, Android'e Google Cüzdan API'sini başarıyla entegre ettiniz.
Daha fazla bilgi
google-pay/wallet-android-codelab GitHub deposundaki entegrasyonun tamamına göz atın.
Kart oluşturun ve üretim erişimi isteyin
Üretimde kendi kartlarınızı düzenlemeye hazır olduğunuzda Google Pay ve Cüzdan Konsolu'nu kullanarak üretim erişimi isteğinde bulunun ve Android uygulamanızı yetkilendirin.
Daha fazla bilgi edinmek için Android SDK Ön Koşulları'na bakın.