REST API
ตรวจสอบสลิปด้วย URL รูปภาพ
ส่งเพียงลิงก์ของภาพสลิปที่เข้าถึงได้จากอินเทอร์เน็ต ระบบจะดึงภาพไปตรวจสอบให้ เหมาะกับระบบที่เก็บสลิปไว้บน CDN หรือ Object Storage อยู่แล้ว
/api/verify-slip/image-url/infoการคิดโทเคน
หักโทเคนตามอัตรา API ของร้านค้าเมื่อระบบสรุปผลได้ (200000, 200200, 200401, 200402, 200403, 200500, 200501) ไม่หักโทเคนเมื่อไม่พบสลิป (200404) หรือธนาคารขัดข้อง (200502)
พารามิเตอร์
รูปแบบข้อมูลที่ส่งเข้ามา: application/json
Headers
| ฟิลด์ | ชนิดข้อมูล | จำเป็น | คำอธิบาย |
|---|---|---|---|
Authorization | string | จำเป็น | Bearer ตามด้วย API Secret ของร้านค้า ดูวิธีสร้างคีย์ได้ที่หน้า Authentication |
Content-Type | string | จำเป็น | application/json |
Body
| ฟิลด์ | ชนิดข้อมูล | จำเป็น | คำอธิบาย |
|---|---|---|---|
payload.imageUrl | string (URL) | จำเป็น | ลิงก์ภาพสลิปแบบเต็ม ต้องเป็น URL ที่ถูกต้องและเปิดสาธารณะได้ ถ้าไม่ส่งมาจะได้ HTTP 400 พร้อมข้อความ payload.imageUrl is required |
payload.checkCondition | object | ไม่บังคับ | เงื่อนไขการตรวจสอบเพิ่มเติม ดูรายละเอียดด้านล่าง |
payload.checkCondition
ไม่บังคับ ถ้าไม่ส่งมา ระบบจะดึงข้อมูลสลิปอย่างเดียวและตอบกลับด้วยรหัส 200000 (Slip found) แต่ถ้าส่งเงื่อนไขมา ระบบจะตรวจตามเงื่อนไขและตอบ 200200 เมื่อผ่านครบทุกข้อ
| ฟิลด์ | ชนิดข้อมูล | จำเป็น | คำอธิบาย |
|---|---|---|---|
checkDuplicate | boolean | ไม่บังคับ | ตรวจสลิปซ้ำภายในร้านค้าเดียวกัน โดยเทียบจาก transRef ถ้าเคยตรวจแล้วจะได้รหัส 200501 |
checkReceiver | array<object> | ไม่บังคับ | รายการบัญชีผู้รับที่ยอมรับได้ ผ่านเมื่อ ตรงกับรายการใดรายการหนึ่ง (ANY) ถ้าไม่ตรงเลยจะได้รหัส 200401 |
checkAmount | object | ไม่บังคับ | ตรวจยอดเงินที่โอน ถ้าไม่ตรงตามเงื่อนไขจะได้รหัส 200402 |
checkDate | object | ไม่บังคับ | ตรวจวันเวลาที่โอน ถ้าไม่ตรงตามเงื่อนไขจะได้รหัส 200403 |
payload.checkCondition.checkReceiver[]
ส่งได้หลายรายการ ระบบจะถือว่าผ่านเมื่อมีอย่างน้อยหนึ่งรายการที่ตรงทุกฟิลด์ที่คุณระบุไว้ในรายการนั้น ฟิลด์ที่ไม่ได้ส่งจะไม่ถูกนำมาเทียบ
| ฟิลด์ | ชนิดข้อมูล | จำเป็น | คำอธิบาย |
|---|---|---|---|
accountType | string | ไม่บังคับ | รหัสธนาคาร 5 หลัก เช่น 01004 ถ้าส่งรหัสที่ไม่มีในระบบจะได้ HTTP 400 ดูรายการรหัสทั้งหมดด้านล่าง |
accountNameTH | string | ไม่บังคับ | ชื่อบัญชีผู้รับภาษาไทย เทียบแบบยืดหยุ่น ตัดคำนำหน้า ช่องว่าง และเครื่องหมายออกก่อนเทียบ |
accountNameEN | string | ไม่บังคับ | ชื่อบัญชีผู้รับภาษาอังกฤษ เทียบแบบยืดหยุ่นเช่นเดียวกับชื่อภาษาไทย |
accountNumber | string | ไม่บังคับ | เลขที่บัญชีผู้รับ ธนาคารมักปิดบังตัวเลขบางส่วน ระบบจึงเทียบเฉพาะเลขท้ายที่ตรงกันได้ (สูงสุด 4 หลักท้าย) |
payload.checkCondition.checkAmount
| ฟิลด์ | ชนิดข้อมูล | จำเป็น | คำอธิบาย |
|---|---|---|---|
type | "lte" | "eq" | "gte" | ไม่บังคับ | รูปแบบการเทียบ lte คือน้อยกว่าหรือเท่ากับ eq คือเท่ากับพอดี gte คือมากกว่าหรือเท่ากับ ค่าเริ่มต้นคือ eq |
amount | string | จำเป็น | ยอดเงินที่คาดหวัง ส่งเป็นสตริง เช่น "1500.00" |
payload.checkCondition.checkDate
| ฟิลด์ | ชนิดข้อมูล | จำเป็น | คำอธิบาย |
|---|---|---|---|
type | "lte" | "eq" | "gte" | ไม่บังคับ | รูปแบบการเทียบวันเวลา ค่าเริ่มต้นคือ eq ซึ่งหมายถึงตรงกันถึงระดับวินาที |
date | string (ISO 8601) | จำเป็น | วันเวลาที่คาดหวัง เช่น "2026-07-21T09:32:11.000Z" |
รหัสธนาคาร (accountType)
ใช้กับฟิลด์ accountType ใน checkReceiver ถ้าส่งรหัสที่ไม่มีในรายการนี้ ระบบจะตอบ HTTP 400 พร้อมข้อความ Unknown accountType
| รหัส | ชื่อธนาคาร | ชื่อภาษาอังกฤษ |
|---|---|---|
01002 | ธนาคารกรุงเทพ | Bangkok Bank |
01004 | ธนาคารกสิกรไทย | Kasikorn Bank |
01006 | ธนาคารกรุงไทย | Krung Thai Bank |
01011 | ธนาคารทหารไทยธนชาต | TMBThanachart |
01014 | ธนาคารไทยพาณิชย์ | SCB |
01020 | ธนาคารสแตนดาร์ดชาร์เตอร์ด | SCBT |
01022 | ธนาคารซีไอเอ็มบี ไทย | CIMB Thai |
01024 | ธนาคารยูโอบี | UOB |
01025 | ธนาคารกรุงศรีอยุธยา | Krungsri |
01030 | ธนาคารออมสิน | GSB |
01033 | ธนาคารอาคารสงเคราะห์ | GH Bank |
01034 | ธนาคารเพื่อการเกษตรและสหกรณ์ | BAAC |
01067 | ธนาคารทิสโก้ | TISCO Bank |
01069 | ธนาคารเกียรตินาคินภัทร | Kiatnakin Phatra |
01071 | ธนาคารไทยเครดิต | Thai Credit Bank |
01073 | ธนาคารแลนด์ แอนด์ เฮ้าส์ | LH Bank |
01098 | ธนาคารพัฒนาวิสาหกิจฯ | SME Bank |
01065 | ธนาคารธนชาต | Thanachart Bank |
01088 | ธนาคารคลิกซ์ | CLICX Bank |
01008 | ธนาคารเจพีมอร์แกน เชส | JPMC |
01017 | ธนาคารซิตี้แบงก์ | Citibank |
01018 | ธนาคารซูมิโตโม มิตซุย | SMBC |
01029 | ธนาคารอินเดียนโอเวอร์ซีส์ | IOBA |
01031 | ธนาคารเอชเอสบีซี | HSBC |
01032 | ธนาคารดอยซ์แบงก์ เอจี | Deutsche Bank |
01039 | ธนาคารมิซูโฮ | Mizuho |
01045 | ธนาคารบีเอ็นพี พารีบาส์ | BNP Paribas |
01052 | ธนาคารแห่งประเทศจีน (ไทย) | Bank of China |
01066 | ธนาคารอิสลามแห่งประเทศไทย | Islamic Bank of Thailand |
01070 | ธนาคารไอซีบีซี (ไทย) | ICBC Thai |
02001 | พร้อมเพย์ เบอร์โทรศัพท์ | PromptPay Phone |
02003 | พร้อมเพย์ บัตรประชาชน/เลขผู้เสียภาษี | PromptPay Citizen ID |
02004 | พร้อมเพย์ รหัส E-Wallet | PromptPay E-Wallet |
03000 | ร้านค้า (K+ Shop, แม่มณี, ฯลฯ) | Merchant QR |
04000 | ทรูมันนี่ วอลเล็ท | TrueMoney Wallet |
ตัวอย่างการเรียกใช้
curl -X POST "https://slip.thesurelab.com/api/verify-slip/image-url/info" \
-H "Authorization: Bearer $API_SECRET" \
-H "Content-Type: application/json" \
-d '{
"payload": {
"imageUrl": "https://cdn.example.com/slips/2026-07-21/abc123.jpg",
"checkCondition": {
"checkReceiver": [
{ "accountType": "01014", "accountNameTH": "ผู้รับ ทดสอบ" },
{ "accountType": "01004", "accountNumber": "9876543210" }
]
}
}
}'ตัวอย่างผลลัพธ์
{
"code": "200200",
"message": "Slip is valid",
"data": {
"transRef": "0154202607210093A1B2C3D4",
"amount": 1500,
"transDate": "2026-07-21T09:32:11.000Z",
"sender": {
"name": "นาย ทดสอบ ระบบ",
"account": "xxx-x-x1a2b-x",
"bankCode": "01004"
},
"receiver": {
"name": "นางสาว ผู้รับ ทดสอบ",
"nameEN": "MISS PURAB TESTER",
"account": "xxx-x-x9f8e-x",
"bankCode": "01014"
}
}
}อ่านผลจากฟิลด์ code เสมอ
code เท่านั้น ดูรายการรหัสทั้งหมดได้ที่หน้า Responseข้อควรรู้
- ผลลัพธ์ทางธุรกิจทุกกรณีตอบกลับด้วย HTTP 200 เสมอ ให้แยกผลจากฟิลด์ code ไม่ใช่จาก HTTP status
- ถ้าไม่ส่ง checkCondition มาเลย และค้นเจอสลิป ระบบจะตอบรหัส 200000 (Slip found)
- ถ้าส่ง checkCondition มาและผ่านครบทุกข้อ ระบบจะตอบรหัส 200200 (Slip is valid)
- ระบบตรวจสลิปซ้ำก่อนเงื่อนไขอื่นเสมอ สลิปที่เคยตรวจแล้วจะได้ 200501 แม้ยอดเงินจะตรง
- REST API ตรวจตามเงื่อนไขใน checkCondition ที่ส่งมาเท่านั้น ไม่นำบัญชีธนาคารที่ลงทะเบียนไว้ในระบบมาเทียบด้วย
- ลิงก์ที่ส่งมาต้องเปิดให้เซิร์ฟเวอร์ของเราเข้าถึงได้ ถ้าลิงก์ต้องล็อกอินหรือหมดอายุ ระบบจะอ่านภาพไม่ได้