ในบทที่แล้วเราออก ใบแจ้งหนี้พร้อมพร้อมเพย์ QR ให้ลูกค้าสแกนจ่าย — ขั้นต่อมาคือ "ยืนยันว่าจ่ายจริง" ลูกค้าส่งสลิปมาใน LINE แล้วเรานั่งดูทีละรูปไม่ไหว แถม สลิปปลอมจาก Photoshop ก็เยอะ บทความนี้อธิบายวิธีตรวจสลิป อัตโนมัติ ที่เชื่อถือได้ — คือไม่ดูแค่รูป แต่ยืนยันกับธนาคารจริง
เหมาะกับ: ISP/เน็ตหมู่บ้านที่รับเงินผ่านโอน/พร้อมเพย์ • อยากเลิกเปิดสลิปดูทีละรูป + กันโดนสลิปปลอม
ทำไม "ดูรูปสลิป" อย่างเดียวไม่พอ
รูปสลิปแก้ใน 2 นาทีด้วยมือถือ — ยอดเงิน เวลา ชื่อ แก้ได้หมด ถ้ายึดแค่ภาพจะโดนกินฟรี วิธีที่เชื่อได้คือ ยืนยันกับระบบธนาคาร ว่ารายการนี้มีจริง ยอดเท่านี้ เข้าบัญชีเราจริง
หลักการคือทุกสลิปโอนของไทยจะมี QR/รหัสอ้างอิงรายการ (transaction ref) ฝังอยู่ → เอา ref นั้นไปถามธนาคารว่า "รายการนี้จริงไหม"
ภาพรวมการตรวจสลิปอัตโนมัติ
[ลูกค้าจ่าย QR] -> [ส่งสลิปใน LINE] -> [อ่าน QR ในสลิป = ref] -> [Verify API ธนาคาร]
-> [เช็ก ยอด/บัญชีรับ/เวลา/ไม่ซ้ำ] -> [mark จ่ายแล้ว] -> [คืนสัญญาณ]
หัวใจมี 2 ส่วน: (1) อ่าน ref จากสลิป และ (2) ยืนยัน ref กับธนาคาร
ขั้นที่ 1 — อ่าน QR/ref จากรูปสลิป
สลิปที่ลูกค้าส่งมาเป็นรูป — ดึง payload ใน QR ออกมาก่อน (ตัวอย่าง Python):
from pyzbar.pyzbar import decode
from PIL import Image
# อ่าน QR ที่ฝังในรูปสลิป
result = decode(Image.open("slip.jpg"))
payload = result[0].data.decode() if result else None
# payload มีข้อมูลอ้างอิงรายการ (transRef) + ธนาคารต้นทาง
ถ้าสลิปเบลอ/ครอป QR หาย จะอ่านไม่ได้ — ให้ลูกค้าส่งสลิป "เต็มใบ ชัด ๆ" หรือ fallback ไปตรวจมือ
ขั้นที่ 2 — ยืนยันกับธนาคาร (Slip Verification API)
เอา payload/transRef ไปถาม Slip Verification API ของธนาคาร (เช่น SCB, KBank ที่เปิดให้ร้านนิติบุคคล หรือผ่านผู้ให้บริการรวม) — มันจะตอบกลับ "ข้อมูลจริง" ของรายการ:
import requests
r = requests.post(
"https://<bank-slip-verify-endpoint>",
headers={"Authorization": "Bearer <API_KEY>"},
json={"payload": payload},
)
data = r.json()
# data -> { success, amount, sender, receiver, transRef, transDate }
ข้อมูลที่ได้คือ "ของจริงจากธนาคาร" ไม่ใช่ตัวเลขในรูป → เอามาเทียบกับบิลได้
ขั้นที่ 3 — เช็กให้ครบ 4 ข้อ ก่อน mark ว่าจ่าย
อย่าเชื่อแค่ "API บอก success" — ต้องเทียบกับบิลด้วย:
- ยอดตรง —
amount== ยอดบิล (กันจ่ายขาด) - เข้าบัญชีเราจริง —
receiver== บัญชี/พร้อมเพย์ของร้าน (กันสลิปที่โอนเข้าบัญชีคนอื่น) - เวลาสด —
transDateอยู่ในช่วงที่สมเหตุผล (ไม่ใช่สลิปเก่าเมื่อเดือนก่อน) - ไม่ซ้ำ —
transRefนี้ยังไม่เคยใช้ → เก็บ transRef ที่ผ่านแล้วไว้ กันลูกค้าส่งสลิปเดิมซ้ำหลายบิล
ผ่านครบ 4 ข้อ ค่อย mark บิลเป็น "จ่ายแล้ว" แล้วต่อเข้าวงจร คืนสัญญาณอัตโนมัติ
ระดับการทำ (เลือกตามกำลัง)
| วิธี | ความน่าเชื่อ | เหมาะกับ |
|---|---|---|
| ดูรูปสลิปด้วยตา | ต่ำ (ปลอมง่าย) | ช่วงแรกสุด/ลูกค้าไม่กี่ราย |
| แอป "ตรวจสอบสลิป" ของธนาคาร | กลาง (ตรวจทีละใบ) | ราย ๆ ไป ยังไม่ออโต้ |
| อ่าน QR + Verify API | สูง (ยืนยันกับธนาคาร) | ออโต้เต็มรูปแบบ |
| OCR อ่านตัวเลขจากรูปอย่างเดียว | ต่ำ–กลาง | ไม่แนะนำเดี่ยว ๆ (ยังปลอมได้) |
⚠️ OCR ≠ การยืนยัน — อ่านตัวเลขจากรูปได้ ไม่ได้แปลว่ารายการมีจริง ต้อง verify กับธนาคารเสมอ
พลาดบ่อย / กันโกง
| ช่องโหว่ | วิธีปิด |
|---|---|
| สลิปปลอมแก้ยอดด้วย Photoshop | verify กับธนาคาร ไม่ดูแค่รูป |
| โอนเข้าบัญชีคนอื่นแล้วส่งสลิปมา | เช็ก receiver ตรงบัญชีร้าน |
| ส่งสลิปเดิมซ้ำหลายบิล/หลายเดือน | dedupe transRef ที่เคยใช้แล้ว |
| สลิปเก่ามารีไซเคิล | เช็ก transDate อยู่ในกรอบเวลา |
| QR ในสลิปอ่านไม่ออก | ขอสลิปเต็มใบชัด ๆ / มี fallback ตรวจมือ |
| ยิง API ถี่จนโดนจำกัด/มีค่าใช้จ่าย | cache ผล + ตรวจซ้ำเฉพาะที่จำเป็น |
สรุป
ตรวจสลิปให้เชื่อถือได้ = อ่าน ref จาก QR ในสลิป → ยืนยันกับธนาคาร → เทียบ ยอด/บัญชี/เวลา/ไม่ซ้ำ ไม่ใช่แค่เปิดรูปดู เมื่อต่อกับ ใบแจ้งหนี้ QR และ การคืนสัญญาณ ก็จะได้วงจรเก็บเงินที่ "ลูกค้าจ่าย → ยืนยันเอง → เน็ตคืนเอง" โดยคุณแทบไม่ต้องแตะ
💡 อยากให้ตรวจสลิปจาก LINE อัตโนมัติ + กันสลิปปลอม/ซ้ำ? thaiISP รับสลิปทาง LINE OA อ่าน QR แล้วยืนยันกับธนาคาร จับคู่บิลให้เอง เช็กยอด/บัญชี/ความซ้ำครบ แล้วคืนสัญญาณทันทีที่จ่ายจริง — ดูระบบ →
