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
|
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.