Model Penter DiwaDocs

ชำระเงิน

ชำระด้วยพอยท์ (เครดิตในระบบ) รองรับซื้อเดี่ยวและ batch order

ฟีเจอร์

  • ชำระด้วยพอยท์ — สกุลเงินภายในระบบที่ได้จากการเติมเครดิต
  • ซื้อสินค้าเดียว หรือซื้อทั้งหมดในตะกร้าพร้อมกัน (batch order)
  • ตรวจสอบพอยท์ก่อนดำเนินการ — แสดง error ทันทีหากไม่เพียงพอ
  • ดึงสต็อกแบบ atomic เพื่อป้องกัน race condition
  • คืนพอยท์อัตโนมัติหากรายการใดล้มเหลวใน batch
  • แสดงรหัสสินค้า (stock data) ทันทีหลังซื้อสำเร็จ

ขั้นตอนการชำระเงิน

  1. 1ตรวจสอบพอยท์คงเหลือ
  2. 2ล็อคสต็อกแบบ atomic (ป้องกัน race condition)
  3. 3หักพอยท์จากบัญชีผู้ใช้
  4. 4ส่ง stock data ให้ผู้ใช้
  5. 5บันทึกประวัติการสั่งซื้อ
  6. 6ส่ง Discord Webhook แจ้งเตือนออเดอร์

Batch Order

เมื่อกด "ซื้อทั้งหมด" ระบบจะประมวลผลรายการทั้งหมดในตะกร้าพร้อมกัน หากรายการใดรายการหนึ่งล้มเหลว (สต็อกหมด / พอยท์ไม่พอระหว่างทาง) ระบบจะ คืนพอยท์ ให้รายการที่ชำระไปแล้วอัตโนมัติ

สต็อกถูก lock ในระดับ database transaction เพื่อป้องกันผู้ซื้อหลายคนได้สินค้าชิ้นเดียวกัน หากสต็อกหมดระหว่างชำระ ระบบจะแจ้งทันทีและไม่หักพอยท์