Quá trình xác thực có thể diễn ra trong 3 môi trường khác nhau:
- Ứng dụng Android của nhà tích hợp thanh toán
- Trang web dành cho thiết bị di động của nhà tích hợp thanh toán
- Trang web dành cho máy tính của nhà tích hợp thanh toán
Bất kể quy trình nào, Google sẽ chuyển giao tương tác của người dùng cho phần mềm của Nhà tích hợp thanh toán. Công cụ tích hợp thanh toán có thể chọn cho người dùng thấy một giao diện hoặc chỉ cần quay lại ngay nếu đã có dữ liệu thích hợp. Tất cả các luồng đều dẫn đến việc trình tích hợp tạo ra một InputResponse. Phản hồi này đã được ký và gửi lại cho Google.
Các trang web dành cho thiết bị di động và máy tính phải tuân theo Thông số kỹ thuật của API xác thực WebRedirect, trong khi quy trình của ứng dụng Android phải tuân theo Thông số kỹ thuật của API xác thực Android.
Các nhà tích hợp cần triển khai giải pháp APK Android để xác thực người dùng. Xác thực này là một phương thức khác, nhưng có cùng mục đích với quy trình xác thực do Xác thực web cung cấp.
Người dùng xác thực với đơn vị tích hợp thanh toán thông qua Hoạt động trên Android. Ý định xác thực được gọi trong quá trình liên kết tài khoản và trong các thử thách của người dùng. Để ngăn Android chấm dứt hoạt động Phát ở chế độ nền trong quá trình xác thực, trình tích hợp cần đưa những nội dung sau vào chủ đề hoạt động.
<item name="android:windowIsTranslucent">true</item>
Định nghĩa phương thức
Ý định cần có các thuộc tính sau:
Thuộc tính phương thức | |
---|---|
Hành động |
com.google.android.payments.standard.AUTHENTICATE_V1 |
Danh mục | android.intent.category.DEFAULT |
Yêu cầu
Các trường | |
---|---|
gspAuthenticationRequest
|
AuthenticationRequest
Yêu cầu xác thực. |
gspAssociationId
|
string
Nếu có, lớp này chứa một giá trị nhận dạng mà trình tích hợp sử dụng để tra cứu thông tin xác thực cho người dùng được xác thực. Nếu không có mã này, người dùng có thể thay đổi thông tin nhận dạng tài khoản. |
Phản hồi
Sau khi người dùng hoàn tất quá trình xác thực, ứng dụng của bạn cần gửi ý định kết quả cho Google. Nếu xác thực thành công, hãy tạo một ý định và thêm gspConfirmResponse được mã hoá làm phương thức bổ sung. Tiếp theo, hãy đặt kết quả hoạt động thành mã kết quả thích hợp.
...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();
Kết quả
Các trường | |||||||
---|---|---|---|---|---|---|---|
kết quả |
int
|
Phần bổ sung
Các trường | |
---|---|
gspAuthenticationResponse |
AuthenticationResponse
Phản hồi xác thực. Giá trị được mã hoá này không được vượt quá 1KB. |
Các yêu cầu khác về hoạt động
Hoạt động hỗ trợ thao tác AUTHENTICATE_V1
nêu trên cũng phải kiểm tra để đảm bảo rằng các phương thức gọi của API chỉ đến từ các ứng dụng do Google ký.
Điều này sẽ giúp ngăn các ứng dụng khác gọi hoạt động và truy xuất mã thông báo nhận dạng. Bạn có thể thực hiện việc này bằng cách sử dụng StandardPaymentUtils.verifyCallingActivityIsGoogleSigned
được cung cấp ngay sau super.onCreate
trong quá trình triển khai Hoạt động.
Dưới đây là ví dụ:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);
....
}
Tất cả hoạt động được gọi trong luồng authenticate
phải cung cấp một giao diện hoạt động có windowIsTranslucent=true
. Bạn phải thực hiện việc này bằng thuộc tính android:theme của AndroidManifest và không sử dụng Context.setTheme()
.
Về mặt lập trình, việc đặt giao diện không hoạt động chính xác đối với độ mờ của cửa sổ. Google sẽ thực thi việc hoạt động đầu tiên được khởi chạy tuân theo mẫu này, nhưng mọi hoạt động phụ cũng được khởi chạy cũng phải tuân theo mẫu này. Nếu không, thì các giao dịch mua từ nhà phát triển bên thứ ba có thể không hoạt động.