ภาพรวม
เริ่มการคืนเงินได้โดยที่ผู้ใช้ดำเนินการอยู่ (กดปุ่ม "ขอเงินคืน") หรืออาจเริ่มทำเงินโดยอัตโนมัติในนามของผู้ใช้ก็ได้ ไม่ว่าจะทริกเกอร์อะไร ระบบจะส่งคำขอเงินคืนแบบไม่พร้อมกันจาก Google ไปยังผู้ผสานการชำระเงิน ผู้รวมบริการต้องรับทราบคำขอและแจ้งให้ Google ทราบเมื่อการคืนเงินเสร็จสมบูรณ์
วิธีการทำงานของโฟลว์
ขั้นตอนการคืนเงิน
ตัวอย่างขั้นตอนการคืนเงินแบบไม่พร้อมกันที่เริ่มต้นโดยผู้ใช้มีดังนี้
รายการออบเจ็กต์ในแผนภาพด้านบนมีดังนี้
- ผู้ใช้: คือผู้ที่ต้องการการคืนเงินทั้งหมดหรือบางส่วน
- เซิร์ฟเวอร์ของ Google: เซิร์ฟเวอร์แบ็กเอนด์ของ Google ที่ส่งคำสั่งการคืนเงินไปยังผู้รวมระบบการชำระเงิน
- ผู้รวมการชำระเงิน: ผู้ผสานการทำงานที่ส่งต่อคำขอเงินคืนไปยังผู้ออกบัตรที่เหมาะสม
- ผู้ออก: ผู้ออกบัตรที่ใช้สำหรับการชำระเงิน ซึ่งยอมรับคำขอเงินคืน
การคืนเงินในตัวอย่างนี้เริ่มต้นโดยผู้ใช้
- ผู้ใช้เริ่มการคืนเงินไปยังเซิร์ฟเวอร์ Google
- Google เรียกใช้อุปกรณ์ปลายทาง
AsynchronousRefund
ของผู้รวมการชำระเงิน - ผู้ผสานการทำงานจะส่งการตอบกลับ
Acknowledged
ไปยัง Google - ผู้ผสานการทำงานจะเรียกใช้ปลายทาง
Refund
ที่เหมาะสมในผู้ออกบัตร - ผู้ออกบัตรจะเป็นผู้ดำเนินการคืนเงินและตอบกลับผู้รวมระบบด้วย
Success
- ผู้ผสานการทำงานจะเรียกใช้ปลายทาง
RefundResultNotification
บนเซิร์ฟเวอร์ของ Google เพื่อแจ้งให้ Google ทราบเกี่ยวกับผลลัพธ์ - Google รับทราบ
RefundResultNotification
- Google จะอัปเดตยอดเงินคงเหลือของผู้ใช้
- ผู้ใช้จะได้รับเงินคืน
แนวทางปฏิบัติแนะนำและข้อควรพิจารณาอื่นๆ
เนื่องจากผลิตภัณฑ์บางอย่างของ Google เช่น AdWords รองรับการคืนเงินตราบใดที่เครดิตในบัญชียังมีอยู่ คำขอคืนเงินสำหรับธุรกรรมจึงควรได้รับการสนับสนุนโดยไม่จำกัดระยะเวลา หากมีข้อจำกัดทางเทคนิค ระยะเวลาการคืนเงินควรนานเท่าที่แพลตฟอร์มอนุญาต
การคืนเงินจะถูกปฏิเสธได้ก็ต่อเมื่อยอดเงินคงเหลือในธุรกรรมเดิมไม่เพียงพอสำหรับยอดเงินที่คืน หรือบัญชีได้ถูกปิดหรือระงับชั่วคราว และผู้รวมบริการไม่สามารถส่งเงินนี้ให้ผู้ใช้ได้
การคืนเงินจะเริ่มขึ้นได้ภายในไม่กี่วินาทีหลังจากถ่ายภาพ เวลาในการคืนเงินจะขึ้นอยู่กับการพิจารณาตามที่เห็นสมควรของ Google
คุณไม่ควรถือว่าการคืนเงินเป็นการคืนเงินเต็มจำนวน ต้องพิจารณาช่อง refundAmount
เสมอเมื่อคืนเงินให้กับบัญชี
ต้องรองรับการคืนเงินบางส่วนหลายครั้ง ตัวอย่างเช่น สมมติว่ามีธุรกรรมมูลค่า $11.00 เกิดขึ้น และผู้ใช้สามารถรับเงินคืนบางส่วนจำนวน $4.00, $5.00 และ $1.00 จากธุรกรรมเดิมได้ ในกรณีนี้ การคืนเงินทั้ง 3 รายการจะมี captureRequestId
เหมือนกัน แต่มีค่า requestId
ต่างกัน นอกจากนี้ ธุรกรรมนี้จะเหลือเงินเพียง $1.00
คราวนี้สมมติว่ามีการซื้อมูลค่า 480 บาท สำหรับตัวอย่างนี้ ผู้ใช้สามารถขอเงินคืนได้ 2 ครั้ง โดยแต่ละครั้งมีมูลค่า 180 บาท หากการคืนเงินทั้ง 2 ครั้งนี้มีมูลค่า requestId
ต่างกัน (และ captureRequestId
เหมือนกัน) ระบบจะถือว่าเป็นการคืนเงินแยกกันในธุรกรรมเดียวกัน ในกรณีนี้ ผู้ใช้จะเหลือเงิน $0 ในธุรกรรมเมื่อการคืนเงินเหล่านี้เสร็จสมบูรณ์แล้ว