Otentikasi dapat terjadi di tiga lingkungan berbeda:
- Aplikasi Android integrator pembayaran
- Situs seluler integrator pembayaran
- Situs desktop integrator pembayaran
Terlepas dari alurnya, Google menyerahkan interaksi pengguna ke tim software integrator ini. Integrator pembayaran dapat memilih untuk menunjukkan kepada pengguna atau langsung kembali jika sudah memiliki data yang sesuai. Semua alur menghasilkan integrator yang menghasilkan AuthenticationResponse. Ini respons akan ditandatangani dan dikirim kembali ke Google.
Situs seluler dan desktop harus mengikuti WebRedirect Authentication API Spesifikasi, sedangkan alur Aplikasi Android harus mengikuti Android Spesifikasi Authentication API.
Integrator harus menerapkan solusi APK Android untuk mengautentikasi pengguna. Otentikasi ini adalah modalitas yang berbeda, tetapi tujuan yang sama dengan yang disediakan oleh server autentikasi.
Pengguna mengautentikasi dengan integrator pembayaran melalui perangkat Android Aktivitas. Intent autentikasi dipanggil selama pengaitan akun dan selama tantangan-pengguna. Untuk mencegah Android menghentikan Play di selama otentikasi, integrator perlu menyertakan berikut ini 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, file ini berisi pengidentifikasi yang digunakan integrator untuk mencari kredensial yang lengkap bagi pengguna yang ditantang. Jika tidak ada, pengguna memiliki opsi untuk mengubah identifikasi akun. |
Respons
Setelah pengguna menyelesaikan autentikasi, aplikasi Anda perlu mengirimkan hasil maksud kembali ke Google. Jika autentikasi berhasil, buat intent dan tambahkan {i>gspAuthenticationResponse <i}yang dienkode dan dienkripsi sebagai tambahan. Selanjutnya, 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 lebih dari 1 KB. |
Persyaratan aktivitas lainnya
Aktivitas yang mendukung tindakan AUTHENTICATE_V1
yang disebutkan di atas harus
periksa juga apakah pemanggil API hanya berasal dari aplikasi yang ditandatangani Google.
Ini akan membantu mencegah aplikasi lain mencoba memanggil aktivitas Anda dan
akan mengambil token identitas. Hal ini dapat dilakukan dengan menggunakan
StandardPaymentUtils.verifyCallingActivityIsGoogleSigned
tepat setelah super.onCreate
dalam
Aktivitas
terlepas dari implementasi layanan.
Berikut sebuah contoh:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);
....
}
Semua aktivitas yang dipanggil dalam alur authenticate
harus menyediakan aktivitas
tema yang memiliki windowIsTranslucent=true
. Hal ini harus dilakukan dengan
Atribut android:theme AndroidManifest dan tidak menggunakan Context.setTheme()
.
Secara terprogram, setelan tema tidak berfungsi dengan benar untuk jendela
dan transparan. Google akan menetapkan bahwa aktivitas pertama yang diluncurkan mengikuti ketentuan ini
tetapi setiap subaktivitas yang juga diluncurkan juga harus mengikuti
pola. Jika tidak, pembelian dari developer pihak ketiga mungkin tidak akan berhasil.