คู่มือนี้จะอธิบายวิธีใช้ Callback กับ Google Wallet API เมื่อ สร้างหรือลบบัตรแล้ว Google สามารถดำเนินการเรียกกลับไปยัง HTTPS ปลายทางที่คุณเลือก Callback นี้เป็นแบบเฉพาะชั้นเรียนและมีข้อมูล เกี่ยวกับเหตุการณ์ เช่น คลาส ออบเจ็กต์ และประเภทเหตุการณ์ การตั้งค่านี้สามารถใช้เพื่อ ติดตามจำนวนการเพิ่มและการลบผู้ใช้ที่เกิดขึ้น สำหรับ ตัวอย่างเช่น คุณสามารถกำหนดค่าให้ Callback ส่งเหตุการณ์ไปยัง Analytics ได้ แอปพลิเคชันสำหรับติดตามการมีส่วนร่วมของลูกค้าระหว่างกิจกรรมส่งเสริมการขาย
ข้อกำหนดเบื้องต้น
โปรดอ่านข้อกำหนดเบื้องต้นต่อไปนี้ก่อนเริ่มใช้งาน
- สร้างปลายทาง HTTPS ที่จัดการคำขอ POST ปลายทางนี้ต้องการ เผยแพร่ต่อสาธารณะ
-
อัปเดตปลายทาง Callback แบบเป็นโปรแกรมสำหรับแต่ละคลาส โปรดดู
callbackOptions
ตามคลาสใน REST API - แนะนำ: ใช้ไลบรารี Tink เพื่อยืนยันลายเซ็น
ใช้ Callback
สำหรับการเพิ่มหรือลบทุกรายการที่ผู้ใช้ดำเนินการใน วัตถุ Google จะติดต่อกลับหาผู้ขายพร้อมด้วยรายละเอียดเกี่ยวกับการเพิ่มหรือลบใน ต่อชั้นเรียน URL ผู้ขายต้องใช้คีย์สาธารณะเพื่อยืนยันความถูกต้องของ ข้อความนั้น หลังจาก Callback ยืนยันข้อความแล้ว คุณจะใช้ Callback ได้ สำหรับการดำเนินงานดาวน์สตรีม
ยืนยันลายเซ็น
เราขอแนะนำให้ใช้ไลบรารี Tink เพื่อยืนยันลายเซ็นของข้อความ
เมื่อคุณใช้ปลายทาง HTTPS
ไลบรารีของ Tik
ให้ PaymentMethodTokenRecipient
ซึ่งเป็นยูทิลิตีที่
ยืนยันลายเซ็นโดยอัตโนมัติ และส่งข้อความคืนเมื่อ
การยืนยันสำเร็จ
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไลบรารี Tink เพื่อติดตั้งใช้งาน
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 } }
รูปแบบข้อความที่คาดไว้
รูปแบบข้อความคือ JSON ที่แปลงเป็นสตริงที่มีข้อมูลต่อไปนี้ พร็อพเพอร์ตี้:
ตัวระบุ | คำอธิบาย |
---|---|
classId |
รหัสคลาสที่มีคุณสมบัติครบถ้วน ใช้รูปแบบต่อไปนี้ <issuer_id.class_id> |
objectId |
รหัสออบเจ็กต์ที่สมบูรณ์ในตัวเอง ใช้รูปแบบต่อไปนี้ <issuer_id.object_id> |
expTimeMillis |
เวลาหมดอายุเป็นมิลลิวินาทีตั้งแต่ EPOCH หลังจากเวลาหมดอายุ ข้อความจะต้องถือว่าไม่ถูกต้อง |
eventType |
อาจเป็น del หรือ save ก็ได้สำหรับ
DELETE และ SAVE
|
nonce |
Nonce เพื่อติดตามการจัดส่งที่ซ้ำกัน |
จัดการคำขอจากเซิร์ฟเวอร์ของ Google
รายการช่องคีย์ในส่วนหัวของคำขอที่ ที่ส่งไปยังปลายทาง Callback
- User-Agent:
Googlebot
- ประเภทเนื้อหา:
application/json
กำหนดค่าเซิร์ฟเวอร์เพื่อให้ไม่ปฏิเสธคำขอ วิธีการคือ
ตั้งค่าต่อไปนี้ใน robots.txt
:
User-agent: Googlebot Disallow:
ลองอีกครั้ง
เราจะพยายามอย่างเต็มที่ Callback Google จะใช้กลยุทธ์การลองอีกครั้งทั่วไป มีความยืดหยุ่นในกรณีที่ปลายทาง Callback ไม่ตอบสนองหรือมี การหยุดทำงานเกิดขึ้นเป็นพักๆ และจะพยายามชดเชยให้ไม่สำเร็จ
การนำส่งที่ซ้ำกัน
อาจมีการจัดส่งซ้ำในบางกรณี เราขอแนะนำให้คุณใช้
nonce
เพื่อกรองข้อมูลที่ซ้ำกันออก