Quá trình xác thực có thể diễn ra trong 3 môi trường sau:
- Ứng dụng Android của đối tác tích hợp thanh toán
- Trang web dành cho thiết bị di động của đơn vị tích hợp thanh toán
- Trang web trên máy tính của đơn vị tích hợp thanh toán
Bất kể quy trình như thế nào, Google cũng chuyển lượt tương tác của người dùng cho Tài khoản thanh toán phần mềm của đối tác tích hợp. Đơn vị tích hợp thanh toán có thể chọn để hiển thị cho người dùng hoặc chỉ cần trả về ngay lập tức nếu nó đã có dữ liệu thích hợp. Tất cả các luồng đều dẫn đến việc tích hợp tạo ra AuthenticationResponse. Chiến dịch này phản hồi được ký và gửi lại cho Google.
Trang web dành cho thiết bị di động và máy tính phải tuân thủ API Xác thực WebChuyển hướng Thông số kỹ thuật, trong khi luồng Ứng dụng Android phải tuân theo Thông số kỹ thuật của API xác thực.
Nhà tích hợp nên triển khai một 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 xác thực do trang web web xác thực.
Người dùng xác thực với đối tác tích hợp thanh toán qua một Android Hoạt động. Ý định xác thực được gọi trong quá trình liên kết tài khoản và những thách thức của người dùng. Để ngăn Android chấm dứt Play trong trong quá trình xác thực, đơn vị tích hợp cần đưa theo dõi trong 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
Trường | |
---|---|
gspAuthenticationRequest
|
AuthenticationRequest
Yêu cầu xác thực. |
gspAssociationId
|
string
Nếu có, tệp này chứa một giá trị nhận dạng mà đối tác tích hợp dùng để tìm cung cấp thông tin đăng nhập cho người dùng bị kiểm tra. Nếu không có phương thức 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 xác thực, ứng dụng của bạn cần gửi kết quả ý định quay lại Google. Nếu xác thực thành công, hãy tạo một ý định rồi thêm gspAuthenticationResponse được mã hoá làm thông tin bổ sung. Tiếp theo, hãy đặt kết quả hoạt động thành mã kết quả phù hợp.
...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();
Kết quả
Trường | |||||||
---|---|---|---|---|---|---|---|
kết quả |
int
|
Thông tin bổ sung
Trường | |
---|---|
gspAuthenticationResponse |
AuthenticationResponse
Phản hồi xác thực. Giá trị 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ợ hành động AUTHENTICATE_V1
nêu trên phải
cũng kiểm tra để đảm bảo rằng phương thức gọi của API chỉ đến từ các ứng dụng có chữ ký của Google.
Thao tác này sẽ giúp ngăn các ứng dụng khác cố gọi hoạt động của bạn và
truy xuất mã thông báo nhận dạng. Có thể thực hiện việc này bằng cách sử dụng
StandardPaymentUtils.verifyCallingActivityIsGoogleSigned
ngay sau super.onCreate
trong
Hoạt động
trong quá trình triển khai.
Dưới đây là ví dụ:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);
....
}
Tất cả các hoạt động được gọi trong luồng authenticate
phải cung cấp một hoạt động
giao diện 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 đúng cách cho cửa sổ
trong suốt. Google sẽ thực thi rằng hoạt động đầu tiên được khởi chạy phải tuân theo
nhưng mọi hoạt động phụ được khởi chạy cũng đều phải tuân theo
. Nếu không, giao dịch mua từ nhà phát triển bên thứ ba có thể không hoạt động.