API Autentikasi APK Android

Autentikasi dapat terjadi di tiga lingkungan yang berbeda:

  • Aplikasi Android integrator pembayaran
  • Situs seluler integrator pembayaran
  • Situs desktop integrator pembayaran

Terlepas dari alurnya, Google menyerahkan interaksi pengguna ke software integrator Payments. Integrator pembayaran dapat memilih untuk menampilkan antarmuka kepada pengguna atau langsung kembali jika sudah memiliki data yang sesuai. Semua alur menghasilkan integrator yang menghasilkan AuthenticationResponse. Respons ini ditandatangani dan dikirim kembali ke Google.

Situs versi seluler dan desktop harus mengikuti Spesifikasi WebRedirect Authentication API, sedangkan alur Aplikasi Android harus mengikuti Spesifikasi Android Authentication API.

Integrator harus mengimplementasikan solusi APK Android untuk mengautentikasi pengguna. Autentikasi ini adalah modalitas yang berbeda, tetapi memiliki tujuan yang sama dengan autentikasi yang diberikan oleh autentikasi Web.

Pengguna mengautentikasi dengan integrator pembayaran melalui Aktivitas Android. Intent autentikasi dipanggil selama pengaitan akun dan untuk tantangan pengguna. Untuk mencegah Android menghentikan Play di latar belakang selama autentikasi, integrator harus menyertakan hal berikut dalam tema aktivitas.

<item name="android:windowIsTranslucent">true</item>

Definisi metode

Intent harus memiliki properti berikut:

Properti metode
Tindakan com.google.android.payments.standard.AUTHENTICATE_V1
Kategori android.intent.category.DEFAULT

Permintaan

Kolom
gspAuthenticationRequest AuthenticationRequest

Permintaan autentikasi.

gspAssociationId string

Jika ada, log ini berisi ID yang digunakan integrator untuk mencari kredensial pengguna yang diuji. Jika tidak ada, pengguna memiliki opsi untuk mengubah identifikasi akun.

Respons

Setelah pengguna menyelesaikan autentikasi, aplikasi Anda perlu mengirimkan intent hasil kembali ke Google. Jika autentikasi berhasil, buat intent dan tambahkan gspAuthenticationResponse terenkripsi yang dienkode sebagai tambahan. Berikutnya, tetapkan hasil aktivitas ke kode hasil yang sesuai.

...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();

Hasil

Kolom
hasil int

Activity.RESULT_OK
Autentikasi berhasil.
Activity.RESULT_CANCELED Pengguna membatalkan alur secara manual dan alur harus dibatalkan.
Activity.RESULT_FIRST_USER Autentikasi gagal karena alasan fatal dan alur harus dibatalkan. Server IE menampilkan respons HTTP 500 saat login.

Konten bonus

Kolom
gspAuthenticationResponse AuthenticationResponse

Respons autentikasi. Nilai yang dienkode ini tidak boleh melebihi 1 KB.

Persyaratan aktivitas lainnya

Aktivitas yang mendukung tindakan AUTHENTICATE_V1 yang disebutkan di atas juga harus memeriksa apakah pemanggil API hanya berasal dari aplikasi yang ditandatangani Google. Tindakan ini akan membantu mencegah aplikasi lain mencoba memanggil aktivitas Anda dan mengambil token identitas. Hal ini dapat dilakukan dengan menggunakan StandardPaymentUtils.verifyCallingActivityIsGoogleSigned yang disediakan tepat setelah super.onCreate dalam implementasi Activity Anda.

Berikut sebuah contoh:


@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);

  ....
}

Semua aktivitas yang dipanggil dalam alur authenticate harus menyediakan tema aktivitas yang memiliki windowIsTranslucent=true. Hal ini harus dilakukan dengan atribut android:theme AndroidManifest dan tidak menggunakan Context.setTheme(). Secara terprogram, menyetel tema tidak berfungsi dengan benar untuk transparansi jendela. Google akan menerapkan bahwa aktivitas pertama yang diluncurkan mengikuti pola ini, tetapi setiap sub-aktivitas yang juga diluncurkan juga harus mengikuti pola ini. Jika tidak, pembelian dari developer pihak ketiga mungkin tidak berfungsi.