Tombol web JavaScript

Google Wallet API memungkinkan pengguna Anda menambahkan objek ke Google Wallet dari web. Pengguna dapat menambahkan kartu mereka langsung dari situs Anda.

Referensi ini memberikan detail tentang elemen HTML g:savetoandroidpay yang merender tombol Google Wallet API serta Token Web JSON yang mendeskripsikan layanan web Anda kepada Google.

JavaScript API Google Wallet

Untuk secara otomatis mengurai tag HTML g:savetoandroidpay saat dimuat, sertakan JavaScript standar

<script src="https://apis.google.com/js/platform.js" type="text/javascript"></script>

Untuk aplikasi AJAX dan rendering eksplisit tombol Google Wallet API, sertakan parameter "parsetags": "explicit".

<script src="https://apis.google.com/js/platform.js" type="text/javascript">
  {"parsetags": "explicit"}
</script>

g:savetoandroidpay tag HTML

Tag namespace g:savetoandroidpay menentukan penempatan dan berbagai atribut tombol Tambahkan ke Google Wallet. Gunakan tag ini jika Anda merender HTML dan JWT sisi server.

<g:savetoandroidpay jwt="JWT" onsuccess="successHandler" onfailure="failureHandler" />
Kolom Jenis Wajib Deskripsi
height String N Tinggi tombol yang akan ditampilkan. Nilai yang mungkin adalah: small (tinggi 30 piksel) dan standard (tinggi 38 piksel). Secara default, height ditetapkan ke small. Lihat tombol Google Wallet API untuk melihat contoh tombol dengan setelan height yang berbeda.
jwt String Y JWT Google Wallet API.
onsuccess String N Nama string fungsi pengendali callback yang berhasil menyimpan.
onfailure String N Nama string fungsi pengendali callback kegagalan penyimpanan. Fungsi ini menerima objek error yang berisi errorCode dan errorMessage.
onprovidejwt String N Nama string dari fungsi pengendali JWT yang disediakan. Tujuan dari fungsi ini adalah untuk mencegat dan berpotensi memanipulasi data JWT sebelum objek ditambahkan ke Google Wallet. Fungsi ini tidak menggunakan parameter dan harus menampilkan JWT sebagai String. Saat menerapkan pengendali peristiwa, data JWT asli dapat diambil pada kolom this.getOpenParams().renderData.userParams.jwt.
size String N Lebar tombol untuk ditampilkan. Anda dapat menetapkan size ke matchparent agar lebarnya cocok dengan lebar elemen induk. Atau, biarkan size tidak ditentukan agar lebar direntangkan agar sesuai dengan lebar setelan text. Lihat tombol Google Wallet API untuk melihat contoh tombol dengan setelan size yang berbeda.
text String N Tidak digunakan lagi
textsize String N Jika textsize=large ditentukan, akan menampilkan ukuran teks dan ukuran tombol yang meningkat drastis, untuk kasus dengan persyaratan UI khusus.
theme String N Tema tombol yang akan ditampilkan. Nilai yang mungkin adalah: dark dan light. Tema default-nya adalah dark. Lihat tombol Google Wallet API untuk melihat contoh tombol dengan setelan theme yang berbeda.

JWT Google Wallet API

JWT Google Wallet API mendefinisikan objek dan class yang akan disimpan.

Representasi JSON

{
  "iss": "example_service_account@developer.gserviceaccount.com",
  "aud": "google",
  "typ": "savetowallet",
  "iat": 1368029586,
  "payload": {
    "eventTicketClasses": [{
      ... //Event ticket Class JSON
    }],
    "eventTicketObjects": [{
      // Event ticket Object JSON
    }],
    "flightClasses": [{
      // Flight Class JSON
    }],
    "flightObjects": [{
      // Flight Object JSON
    }],
    "giftCardClasses": [{
      // Gift card Class JSON
    }],
    "giftCardObjects": [{
      // Gift card Object JSON
    }],
    "loyaltyClasses": [{
      // Loyalty Class JSON
    }],
    "loyaltyObjects": [{
      // Loyalty Object JSON
    }],
    "offerClasses": [{
      // Offer Class JSON
    }],
    "offerObjects": [{
      // Offer Object JSON
    }],
    "transitClasses": [{
      // Transit Class JSON
    }],
    "transitObjects": [{
      // Transit Object JSON
    }]
  },
  "origins": ["http://baconrista.com", "https://baconrista.com"]
}

Kolom

Kolom Jenis Wajib Deskripsi
iss String Y Alamat email yang dibuat oleh akun layanan Google Cloud Anda.
aud String Y Audiens. Audiens untuk Objek Google Wallet API akan selalu berupa google.
typ String Y Jenis JWT. Audiens untuk Objek Google Wallet API akan selalu berupa savetowallet.
iat Bilangan Bulat Y Diterbitkan pada waktu dalam hitungan detik sejak epoch.
payload Objek Y Payload.
payload.eventTicketClasses Array N Kelas Tiket Acara untuk disimpan.
payload.eventTicketObjects Array N Objek Tiket Acara untuk disimpan.
payload.flightClasses Array N untuk disimpan di Kelas Penerbangan.
payload.flightObjects Array N Objek Penerbangan untuk disimpan.
payload.giftCardClasses Array N Kelas Kartu Voucher untuk disimpan.
payload.giftCardObjects Array N Objek Kartu Voucher untuk disimpan.
payload.loyaltyClasses Array N Kelas Loyalitas untuk disimpan.
payload.loyaltyObjects Array N Objek Loyalitas untuk disimpan.
payload.offerObjects Array N Objek Penawaran untuk disimpan.
payload.offerClasses Array N Tawarkan Kelas agar lebih hemat.
payload.transitObjects Array N Objek Transportasi Umum untuk disimpan.
payload.transitClasses Array N Class Transit untuk disimpan.
origins Array Y Array domain yang akan disetujui untuk fungsi penyimpanan JWT. Tombol Google Wallet API tidak akan dirender jika kolom origins tidak ditentukan. Anda berpotensi mendapatkan pesan "Load denied by X-Frame-Options" atau "Ditolak untuk menampilkan" di konsol browser jika kolom asal tidak ditentukan.

JWT yang dienkode akan terlihat seperti contoh berikut:

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJnb29nbGUiLCJvcmlnaW5zIjpbImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIsImh0dHA6Ly93d3cuZ29vZ2xlLmNvbSJdLCJpc3MiOiJzMmFwLXRvb2wuZ29vZ2xlLmNvbUBhcHBzcG90LmdzZXJ2aWNlYWNjb3VudC5jb20iLCJpYXQiOjE1NTE5ODcxNTEsInR5cCI6InNhdmV0b3dhbGxldCIsInBheWxvYWQiOnsib2ZmZXJPYmplY3RzIjpbeyJpZCI6IjMyMDI0MTMyNDE4NDM2OTk0MDEuMDFfT2ZmZXJPYmplY3RJZCJ9XX19.maHX40WWT29TC_kEb90EKQBH9AiTYAZR3153K8UI7fznVnfjVdlwsH_GKTECV3PGXdNnKCcmatUbKsONC0bxrnAHYG02kuvA1D3hSctz_amU66ntsvGIDe13mpxTzhI8fPvt9KMP1iaO7uOJuLQIHwipu4uRFAjyFaHGVaSFaP9c53qQyb_Zgyyk50M-MhH2n4kDpstNCqUJKWaadQkOWjrtMjwGzQ_ME04lbR4wb_mfK1A7Rc1UieWkxM9aMl5TOPubBKxKRRk_CqillN8XoTl9MI5RRGPuElVO28zGpYlFS6BarzDaaUfmbRZGvfF8ZiKrHZKxVrJjfZIJ2TCcDw

Fungsi gapi.savetoandroidpay.render

Fungsi ini memungkinkan Anda merender tombol Google Wallet API secara eksplisit.

gapi.savetoandroidpay.render("dom-container",{
  "jwt": "JWT",
  "onsuccess": "successHandler",
  "onfailure": "failureHandler"
});
Kolom Jenis Wajib Deskripsi
dom-container String Y ID penampung untuk menempatkan tombol Google Wallet API.
jwt String Y JWT menentukan konten yang akan disimpan.
onsuccess String N Nama string fungsi pengendali callback yang berhasil menyimpan.
onfailure String N Nama string fungsi pengendali callback kegagalan penyimpanan. Fungsi ini menerima objek error yang berisi errorCode dan errorMessage.
onprovidejwt String N Nama string dari fungsi pengendali JWT yang disediakan. Tujuan dari fungsi ini adalah untuk mencegat dan berpotensi memanipulasi data JWT sebelum objek ditambahkan ke Google Wallet. Fungsi ini tidak menggunakan parameter dan harus menampilkan JWT sebagai String. Saat menerapkan pengendali peristiwa, data JWT asli dapat diambil pada kolom this.getOpenParams().renderData.userParams.jwt.

Pesan dan kode error Google Wallet API

Tabel berikut mencantumkan kode error dan pesan error default yang diteruskan dalam objek error ke fungsi callback kegagalan, saat sebuah objek tidak berhasil disimpan menggunakan tombol JavaScript.

        {
          "errorCode": "errorCode",
          "errorMessage": "errorMessage"
        }
errorCode errorMessage
SERVICE_FAILURE Terjadi kesalahan pada server Google Wallet.
CLASS_NOT_FOUND Class yang direferensikan dalam objek tidak ditemukan.
CLASS_MISMATCH Objek harus ada, dengan jenis yang sama, dan harus mereferensikan class tertutup.
ORIGIN_MISMATCH Asal tombol tidak cocok dengan yang ditentukan dalam daftar origin.
INVALID_NUM_TYPES Hanya satu jenis objek yang dapat ditentukan.
INVALID_SIGNATURE Tanda tangan tidak dapat diverifikasi.
INVALID_DUPLICATE_IDS Objek atau class duplikat tidak diperbolehkan.
INVALID_JWT JWT tidak valid.
INVALID_EXP_IAT JWT sudah tidak berlaku atau diterbitkan pada masa mendatang.
INVALID_AUD Nilai untuk kolom AUD tidak valid.
INVALID_TYP Nilai untuk bidang TYP tidak valid.
INVALID_NUM_OBJECTS Hanya satu objek dan maksimal satu kelas dapat ditentukan untuk kartu loyalitas, kartu voucher, dan penawaran.
MALFORMED_ORIGIN_URL Format URL asal salah. URL harus berisi protokol dan domain.
MISSING_ORIGIN Asal harus ditentukan.
MISSING_FIELDS Objek atau class tertutup tidak memiliki kolom wajib diisi.

Pelokalan

Bahasa di tombol JavaScript berubah berdasarkan kriteria berikut:

  1. Jika pengguna login ke Google, tombol akan dirender dalam bahasa pilihan yang ditetapkan dalam profil Akun Google pengguna. Pengguna dapat membaca Ubah bahasa untuk mempelajari cara mengubah bahasa pilihan Akun Google.
  2. Jika pengguna tidak login ke Google, tombol akan menggunakan nilai ACCEPT-LANGUAGE di header HTTP.

Jika Anda melihat tombol tidak dirender dalam bahasa yang benar berdasarkan logika di atas, atau jika kata-katanya tidak wajar, hubungi tim dukungan kami.