Hướng dẫn này giải thích cách sử dụng lệnh gọi lại với API Google Wallet. Khi một giá trị được tạo hoặc bị xoá, Google có thể thực hiện lệnh gọi lại đến điểm cuối HTTPS do bạn chọn. Lệnh gọi lại này dành riêng cho từng lớp và bao gồm dữ liệu về sự kiện, chẳng hạn như lớp, đối tượng và loại sự kiện. Dữ liệu này có thể dùng để đồng bộ hoá số lượt thêm và xoá người dùng. Ví dụ: bạn có thể định cấu hình lệnh gọi lại để gửi sự kiện đến một ứng dụng phân tích nhằm theo dõi mức độ tương tác của khách hàng trong các sự kiện khuyến mãi.
Điều kiện tiên quyết
Trước khi bạn bắt đầu, hãy xem xét các điều kiện tiên quyết sau:
- Thiết lập một điểm cuối HTTPS xử lý các yêu cầu POST. Điểm cuối này cần được cung cấp công khai.
-
Cập nhật điểm cuối gọi lại cho mỗi lớp theo phương thức lập trình. Xem thuộc tính
callbackOptions
theo lớp trong API REST. - Đề xuất: Sử dụng thư viện Tink để xác minh chữ ký.
Triển khai lệnh gọi lại
Đối với mỗi lượt thêm hoặc xoá do người dùng thực hiện trên một đối tượng, Google sẽ thực hiện lệnh gọi lại cho người bán để cung cấp thông tin chi tiết về lượt thêm hoặc xoá trên URL cho mỗi lớp. Trước tiên, người bán cần sử dụng Khoá công khai để xác minh tính xác thực của thông báo. Sau khi các lệnh gọi lại xác minh thông báo, bạn có thể sử dụng các lệnh gọi lại cho các hoạt động xuôi dòng.
Xác minh chữ ký
Bạn nên sử dụng thư viện Tink để xác minh chữ ký thông báo khi triển khai điểm cuối HTTPS. Thư viện Tink cung cấp PaymentMethodTokenRecipient
, một tiện ích giúp tự động xác minh chữ ký và trả về tin nhắn thực tế khi xác minh thành công.
Ví dụ sau cho biết cách sử dụng thư viện Tink để triển khai PaymentMethodTokenRecipient
:
import java.io.IOException; import javax.servlet.http.*; import com.google.common.io.CharStreams; import com.google.crypto.tink.apps.paymentmethodtoken.*; // Replace ISSUER_ID with your issuer id private static final String RECIPIENT_ID = "ISSUER_ID"; private static final String PUBLIC_KEY_URL = "https://pay.google.com/gp/m/issuer/keys"; private static final String SENDER_ID = "GooglePayPasses"; private static final String PROTOCOL = "ECv2SigningOnly"; private static final GooglePaymentsPublicKeysManager keysManager = new GooglePaymentsPublicKeysManager.Builder() .setKeysUrl(PUBLIC_KEY_URL) .build(); public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { try { // Extract signed message with signature from POST request body. String signedMessage = CharStreams.toString(request.getReader()); PaymentMethodTokenRecipient recipient = new PaymentMethodTokenRecipient.Builder() .protocolVersion(PROTOCOL) .fetchSenderVerifyingKeysWith(keysManager) .senderId(SENDER_ID) .recipientId(RECIPIENT_ID) .build(); String serializedJsonMessage = recipient.unseal(signedMessage); // Use serializedJsonMessage to extract the details } catch (Exception e) { // Handle the error } }
Expected message format
The message format is JSON that's serialized into a string with the following properties:
Identifier | Description |
---|---|
classId |
Fully qualified class ID. Uses the following format: <issuer_id.class_id> objectId
Mã đối tượng đủ điều kiện. Sử dụng định dạng sau: <issuer_id.object_id> expTimeMillis
Thời gian hết hạn tính bằng mili giây kể từ EPOCH. Sau thời gian hết hạn, thông báo cần được coi là không hợp lệ.
eventType
Có thể là del hoặc save cho
DELETE và SAVE .
nonce
Số chỉ dùng một lần để theo dõi mọi tệp phân phối trùng lặp.
Xử lý yêu cầu từ máy chủ của GoogleSau đây là danh sách các trường chính trong tiêu đề của yêu cầu được gửi đến điểm cuối của lệnh gọi lại:
Định cấu hình máy chủ của bạn để máy chủ không từ chối yêu cầu. Để thực hiện việc này, bạn có thể thiết lập các thuộc tính sau trong User-agent: Googlebot Disallow: Thử lạiCác lệnh gọi lại được triển khai tối ưu. Google sẽ cố gắng hai lần để tính đến các lỗi tạm thời. Sau khi thử hai lần, Google sẽ xoá thông báo và không cố gửi lại lần nữa. Tệp phân phối trùng lặp
Có thể có những tệp phân phối trùng lặp trong một số trường hợp. Bạn nên sử dụng Trừ khi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle. Cập nhật lần gần đây nhất: 2024-03-26 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Thiếu thông tin tôi cần"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Quá phức tạp/quá nhiều bước"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Đã lỗi thời"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Vấn đề về bản dịch"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Vấn đề về mẫu/mã"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Khác"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Dễ hiểu"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Giúp tôi giải quyết được vấn đề"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Khác"
}]
|