API xác thực APK Android

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

Activity.RESULT_OK
Đã xác thực thành công.
Activity.RESULT_CANCELED Người dùng đã huỷ quy trình này theo cách thủ công và quy trình này cần bị huỷ.
Activity.RESULT_FIRST_USER Không xác thực được vì lý do nghiêm trọng và luồng phải bị huỷ. Máy chủ IE đã trả về phản hồi HTTP 500 khi đăng nhập.

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.