Skip to content

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 การตรวจสอบสลิปแบบซิงโครนัส ดูคู่มือการยืนยันตัวตน

http
Authorization: Bearer YOUR_API_KEY

Endpoints

EndpointMethodคำอธิบาย
/verify/bank/asyncPOSTส่ง 1 สลิปเข้าคิว → 202 พร้อม jobId
/verify/bank/batchPOSTส่ง หลาย สลิป (สูงสุด 100) → 202 พร้อม batchId + jobs
/verify/bank/jobs/:jobIdGETดึงสถานะ/ผลลัพธ์ของ Job (ทางสำรองหากพลาด Webhook)

แต่ละสลิปที่เข้าคิวจะสร้าง Webhook Callback 1 ครั้ง — รวมถึงแต่ละสลิปใน Batch ด้วย (1 callback ต่อ 1 สลิป ไม่ใช่ 1 ต่อ batch)

หลักการทำงาน

  1. ส่งเข้าคิว ด้วย POST /verify/bank/async (หรือหลายรายการด้วย /batch) คุณจะได้ jobId กลับมาทันที (202 Accepted) — สลิปยัง ไม่ ถูกตรวจสอบ
  2. Job จะถูกประมวลผลเบื้องหลัง หากข้อมูลสลิปยังไม่พร้อม (เช่น ธนาคารกรุงเทพ pending) Job จะคงสถานะ retrying และลองใหม่ภายในไม่กี่นาที
  3. เมื่อ Job เสร็จ Thunder จะส่ง Webhook ไปยัง callbackUrl ของคุณพร้อมผลลัพธ์ — ฟิลด์ data มี โครงสร้างเดียวกัน กับ Response ของการ verify แบบ sync
  4. หากคุณพลาด Webhook ให้เรียก GET /verify/bank/jobs/:jobId เพื่อดึงข้อมูล Job (เก็บไว้ ~7 วัน)

การระบุ Callback URL

แต่ละคำขอสามารถระบุ callbackUrl ได้ หากไม่ระบุ จะใช้ Default Webhook URL ที่ตั้งค่าไว้ของ Branch

กฎพฤติกรรม
ระบุ callbackUrlWebhook ผลลัพธ์จะถูก POST ไปที่นั่น (แทนที่ default ของ branch)
ไม่ระบุ callbackUrlใช้ Default Webhook URL ที่ตั้งค่าไว้ของ Branch
ไม่ได้ตั้งทั้งคู่400 VALIDATION_ERROR
ไม่ใช่ https400 INVALID_CALLBACK_URL
ชี้ไปยัง address ภายใน/private400 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_ERROR400Body ไม่ถูกต้อง, สลิปว่าง, Batch เกิน 100 สลิป หรือไม่มี callbackUrl และไม่มี default ของ branch
INVALID_CALLBACK_URL400callbackUrl ไม่ใช่ https หรือชี้ไปยัง address ภายใน/private
JOB_NOT_FOUND404ไม่พบ Job / Job หมดอายุ หรือ Job ไม่ได้เป็นของ Branch คุณ

ข้อผิดพลาดการยืนยันตัวตนมาตรฐาน (MISSING_API_KEY, INVALID_API_KEY, SERVICE_EXPIRED, QUOTA_EXCEEDED ฯลฯ) มีผลด้วยเช่นกัน ดูอ้างอิงรหัส Error

Bank Slip Verification API for Thai Banking