ช่วยรีวิวการเปลี่ยนแปลง checkout callback นี้ก่อนที่ฉันจะ merge
ข้อค้นพบ: webhook retry อาจสร้างเครดิตซ้ำ หากไม่ได้บังคับใช้ idempotency key ความเสี่ยง: สถานะ billing อาจแยกจาก wallet ที่ผู้ใช้มองเห็น ช่องว่างการทดสอบ: เพิ่มเคส replay และเหตุการณ์ที่มาถึงผิดลำดับ การตัดสินใจ: block merge จนกว่าจะครอบคลุมพฤติกรรม persistence และ retry
