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

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

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.