Async Verify — Bank
ตรวจสอบสลิปโอนเงินธนาคารไทยแบบ อะซิงโครนัส (asynchronous) แทนที่จะรอผลลัพธ์ใน HTTP Response คุณจะส่งสลิปเข้าคิวหนึ่งหรือหลายรายการ แล้วรับผลลัพธ์ผ่าน Webhook Callback (พร้อมทางเลือกแบบ Polling สำรอง)
ระบบนี้ทำงาน คู่ขนาน กับ POST /verify/bank แบบซิงโครนัส — Endpoint แบบ sync ไม่มีการเปลี่ยนแปลง ใช้แบบ async เมื่อคุณต้องการ:
- ตรวจสอบ จำนวนมาก (bulk) (ส่งได้สูงสุด 100 สลิปในครั้งเดียว)
- รองรับ อัตราการเรียกที่สูง โดยไม่ชน Rate Limit — คำขอจะเข้าคิวและทยอยประมวลผลแทนการถูกปฏิเสธ
- ตรวจสอบสลิปที่ข้อมูล มาช้า (เช่น ธนาคารกรุงเทพ) โดย Job จะ retry เบื้องหลังจนกว่าข้อมูลจะพร้อม
Base URL
https://api.thunder.in.th/v2การยืนยันตัวตน
จำเป็น ใช้ API Key ของ Branch เดียวกัน กับ Endpoint การตรวจสอบสลิปแบบซิงโครนัส ดูคู่มือการยืนยันตัวตน
Authorization: Bearer YOUR_API_KEYEndpoints
| Endpoint | Method | คำอธิบาย |
|---|---|---|
/verify/bank/async | POST | ส่ง 1 สลิปเข้าคิว → 202 พร้อม jobId |
/verify/bank/batch | POST | ส่ง หลาย สลิป (สูงสุด 100) → 202 พร้อม batchId + jobs |
/verify/bank/jobs/:jobId | GET | ดึงสถานะ/ผลลัพธ์ของ Job (ทางสำรองหากพลาด Webhook) |
แต่ละสลิปที่เข้าคิวจะสร้าง Webhook Callback 1 ครั้ง — รวมถึงแต่ละสลิปใน Batch ด้วย (1 callback ต่อ 1 สลิป ไม่ใช่ 1 ต่อ batch)
หลักการทำงาน
- ส่งเข้าคิว ด้วย
POST /verify/bank/async(หรือหลายรายการด้วย/batch) คุณจะได้jobIdกลับมาทันที (202 Accepted) — สลิปยัง ไม่ ถูกตรวจสอบ - Job จะถูกประมวลผลเบื้องหลัง หากข้อมูลสลิปยังไม่พร้อม (เช่น ธนาคารกรุงเทพ pending) Job จะคงสถานะ
retryingและลองใหม่ภายในไม่กี่นาที - เมื่อ Job เสร็จ Thunder จะส่ง Webhook ไปยัง
callbackUrlของคุณพร้อมผลลัพธ์ — ฟิลด์dataมี โครงสร้างเดียวกัน กับ Response ของการ verify แบบ sync - หากคุณพลาด Webhook ให้เรียก
GET /verify/bank/jobs/:jobIdเพื่อดึงข้อมูล Job (เก็บไว้ ~7 วัน)
การระบุ Callback URL
แต่ละคำขอสามารถระบุ callbackUrl ได้ หากไม่ระบุ จะใช้ Default Webhook URL ที่ตั้งค่าไว้ของ Branch
| กฎ | พฤติกรรม |
|---|---|
ระบุ callbackUrl | Webhook ผลลัพธ์จะถูก POST ไปที่นั่น (แทนที่ default ของ branch) |
ไม่ระบุ callbackUrl | ใช้ Default Webhook URL ที่ตั้งค่าไว้ของ Branch |
| ไม่ได้ตั้งทั้งคู่ | 400 VALIDATION_ERROR |
ไม่ใช่ https | 400 INVALID_CALLBACK_URL |
| ชี้ไปยัง address ภายใน/private | 400 INVALID_CALLBACK_URL |
HTTPS เท่านั้น
callbackUrl ต้อง เป็น URL แบบ https:// สาธารณะ URL ที่ไม่ใช่ HTTPS และ URL ที่ชี้ไปยัง private/internal IP range จะถูกปฏิเสธเพื่อความปลอดภัย
Default Webhook URL และ Secret สำหรับเซ็นลายเซ็นตั้งค่าได้ในการตั้งค่า Webhook ของ Branch ดูวิธีตรวจสอบลายเซ็นที่หน้า Webhook Callback
Quota และรายการซ้ำ
การตรวจสอบแบบ async คิดค่าใช้จ่ายเหมือนแบบ sync:
- Quota — เฉพาะการตรวจสอบที่ สำเร็จ เท่านั้นที่หัก quota รายการที่ล้มเหลวหรือซ้ำจะไม่หัก
- รายการซ้ำ — สลิปที่เคยตรวจสอบแล้ว (ไม่ว่าจะผ่าน sync หรือ async) จะถูกระบุว่าเป็นรายการซ้ำ
รหัส Error
| รหัส | HTTP Status | คำอธิบาย |
|---|---|---|
VALIDATION_ERROR | 400 | Body ไม่ถูกต้อง, สลิปว่าง, Batch เกิน 100 สลิป หรือไม่มี callbackUrl และไม่มี default ของ branch |
INVALID_CALLBACK_URL | 400 | callbackUrl ไม่ใช่ https หรือชี้ไปยัง address ภายใน/private |
JOB_NOT_FOUND | 404 | ไม่พบ Job / Job หมดอายุ หรือ Job ไม่ได้เป็นของ Branch คุณ |
ข้อผิดพลาดการยืนยันตัวตนมาตรฐาน (MISSING_API_KEY, INVALID_API_KEY, SERVICE_EXPIRED, QUOTA_EXCEEDED ฯลฯ) มีผลด้วยเช่นกัน ดูอ้างอิงรหัส Error
