ชำระเงิน
ชำระด้วยพอยท์ (เครดิตในระบบ) รองรับซื้อเดี่ยวและ batch order
ฟีเจอร์
- ชำระด้วยพอยท์ — สกุลเงินภายในระบบที่ได้จากการเติมเครดิต
- ซื้อสินค้าเดียว หรือซื้อทั้งหมดในตะกร้าพร้อมกัน (batch order)
- ตรวจสอบพอยท์ก่อนดำเนินการ — แสดง error ทันทีหากไม่เพียงพอ
- ดึงสต็อกแบบ atomic เพื่อป้องกัน race condition
- คืนพอยท์อัตโนมัติหากรายการใดล้มเหลวใน batch
- แสดงรหัสสินค้า (stock data) ทันทีหลังซื้อสำเร็จ
ขั้นตอนการชำระเงิน
- 1ตรวจสอบพอยท์คงเหลือ
- 2ล็อคสต็อกแบบ atomic (ป้องกัน race condition)
- 3หักพอยท์จากบัญชีผู้ใช้
- 4ส่ง stock data ให้ผู้ใช้
- 5บันทึกประวัติการสั่งซื้อ
- 6ส่ง Discord Webhook แจ้งเตือนออเดอร์
Batch Order
เมื่อกด "ซื้อทั้งหมด" ระบบจะประมวลผลรายการทั้งหมดในตะกร้าพร้อมกัน หากรายการใดรายการหนึ่งล้มเหลว (สต็อกหมด / พอยท์ไม่พอระหว่างทาง) ระบบจะ คืนพอยท์ ให้รายการที่ชำระไปแล้วอัตโนมัติ
สต็อกถูก lock ในระดับ database transaction เพื่อป้องกันผู้ซื้อหลายคนได้สินค้าชิ้นเดียวกัน หากสต็อกหมดระหว่างชำระ ระบบจะแจ้งทันทีและไม่หักพอยท์

