เงินเข้า ส่ง Webhook ทันที
เชื่อมต่อบัญชี LINE ที่รับการแจ้งเตือนจาก KBank หรือ SCB ของคุณ แล้วลงทะเบียนปลายทาง ทุกรายการเงินเข้าจะส่งเป็น POST พร้อมลายเซ็น HMAC ภายในไม่กี่วินาที
- ไม่ต้องใช้ API ธนาคาร
- POST พร้อมลายเซ็น HMAC
- ลองส่งใหม่ 8 ครั้ง เว้นช่วงสูงสุด 24 ชม.
ชำระด้วย Thai QR฿1,250.00รายการเงินเข้า
21/09/69 14:03 น.
- เข้าบัญชี
- xxx-x-x1234-x
- จำนวนเงิน
- 1,250.00 บาท
- ยอดเงินคงเหลือ
- 8,410.55 บาท
listening on /hooks/promptpay
POST /hooks/promptpay
x-webhook-signature: sha256=77fe84fa…
{ "type": "money_in", "amount": 1250, … }
signature ok, 200 OK
คำสั่งซื้อ #1042 ชำระแล้ว
โค้ดตรวจสอบลายเซ็นพร้อมคัดลอกสำหรับ 8 เฟรมเวิร์ก
- Express
- Next.js
- Elysia
- Hono
- Fastify
- Bun
- FastAPI
- Laravel
เปลี่ยนการแจ้งเตือนบน LINE เป็นอีเวนต์ในระบบของคุณ
ระบบอ่านข้อความแจ้งเตือนที่ธนาคารส่งให้คุณอยู่แล้ว แยกยอดเงิน บัญชี และเวลา แล้วส่งไปยังปลายทางที่ลงทะเบียนไว้ ลองใช้สวิตช์ด้านล่างเพื่อดูการทำงาน
ข้อความจากธนาคาร
- รายการเงินเข้า
- 21/09/69 14:03 น.
- เข้าบัญชี
- xxx-x-x1234-x
- จำนวนเงิน
- 1,250.00 บาท
- ยอดเงินคงเหลือ
- 8,410.55 บาท
ข้อมูลที่คุณได้รับ
- type
- "money_in"
- amount
- 1250
- account
- "xxx-x-x1234-x"
- balance
- 8410.55
- occurred_at
- "2026-09-21T07:03:00.000Z"
แปลงข้อความเป็นข้อมูล
KBank และ SCB ใช้ข้อความแจ้งเตือนต่างกัน ธนาคารหนึ่งระบุยอดในช่องจำนวนเงิน อีกธนาคารใส่ไว้ในหัวข้อ ระบบอ่านทั้งสองรูปแบบให้เป็นข้อมูลมาตรฐานเดียวกัน และข้ามข้อความที่ไม่รู้จักโดยไม่เดาข้อมูล
- body.amount
- 1250
- header
- sha256=77fe84fa…a383ee
- HMAC ของคุณ
- sha256=77fe84fa…a383ee
ยืนยันด้วยลายเซ็น
ทุก POST มี x-webhook-timestamp และ x-webhook-signature โดยสร้าง HMAC-SHA256 จาก timestamp.rawBody ด้วย Secret ของปลายทาง เพื่อป้องกันการนำคำขอที่ดักจับไว้มาใช้ซ้ำภายหลัง
- 0114:03:04503
- 02+ 30 วินาที503
- 03+ 2 นาที503
ลองใหม่ใน 10 นาที โดยใช้ ID เดิม
ส่งแบบอย่างน้อยหนึ่งครั้ง
หากส่งไม่สำเร็จ ระบบจะลองใหม่ 8 ครั้ง โดยเว้นช่วงตั้งแต่ 30 วินาทีถึง 24 ชั่วโมง ทุกครั้งใช้ ID อีเวนต์เดิม ระบบของคุณจึงตรวจสอบและตัดรายการซ้ำได้
เรียกดูย้อนหลังได้
เรียกดูทุกอีเวนต์ย้อนหลังได้ผ่าน GET /v1/transactions โดยใช้ Bearer Key ที่ขึ้นต้นด้วย pk_ พร้อมแดชบอร์ดแสดงสถานะการรับและส่งข้อมูลแยกตามปลายทาง รายการเงินออกจะบันทึกไว้แต่ไม่ส่งต่อ
หนึ่ง POST หนึ่งลายเซ็น หนึ่ง ID
รายละเอียดคำขอทั้งหมดอยู่ในหน้าจอเดียว นี่คือข้อมูลที่ปลายทางของคุณจะได้รับ พร้อมคำอธิบายส่วนสำคัญ
x-webhook-timestamp: 17899741841181x-webhook-signature: sha256=77fe84fa…a383ee{2 "type": "money_in","datetime": "21/09/69 14:03 น.","account": "xxx-x-x1234-x",3 "amount": 1250,"balance": 8410.55,4 "id": 10428,"time": "2026-09-21T07:03:04.118Z","from": "u3f9c1d08e2b74a6f",5 "bank": "kbank","amount_satang": 125000,6 "occurred_at": "2026-09-21T07:03:00.000Z","line_message_id": "528301764420"}
- 01
ลายเซ็น
HMAC-SHA256 ของ timestamp.rawBody โดยใช้ Secret ของปลายทางเป็นกุญแจ
- 02
ประเภท
ส่งต่อเฉพาะ money_in ส่วนเงินออกและการโอนดูได้ในแดชบอร์ด
- 03
ยอดเงินสองรูปแบบ
จำนวนบาทสำหรับอ่าน และ amount_satang เป็นจำนวนเต็มสำหรับคำนวณ
- 04
กุญแจป้องกันรายการซ้ำ
ทุกครั้งที่ส่งใหม่จะใช้ ID เดิม ใช้ค่านี้ตัดรายการซ้ำ
- 05
ธนาคาร
รหัสธนาคารที่ส่งการแจ้งเตือนนี้
- 06
เวลาของธนาคาร
ไม่ว่าจะเป็นปี พ.ศ. หรือ ค.ศ. จะแปลงเป็นเวลา ISO รูปแบบเดียวกัน
ตรวจสอบก่อนเชื่อถือ
ตรวจสอบลายเซ็นกับข้อมูลคำขอเดิม การแปลง JSON ใหม่จะทำให้ไบต์เปลี่ยนและตรวจสอบไม่ผ่าน แดชบอร์ดมีฟังก์ชันนี้พร้อมตัวอย่างใช้งานสำหรับแต่ละเฟรมเวิร์ก
import { createHmac, timingSafeEqual } from "node:crypto";
const verify = (rawBody, ts, sig, secret) => {
// missing headers
if (!ts || !sig) return false;
// reject replays
const age = Math.abs(Date.now() - Number(ts));
if (!Number.isFinite(age) || age > 5 * 60_000) return false;
const expected =
"sha256=" +
createHmac("sha256", secret)
.update(`${ts}.${rawBody}`)
.digest("hex");
const a = Buffer.from(expected), b = Buffer.from(sig);
return a.length === b.length && timingSafeEqual(a, b);
};เริ่มตั้งค่า
03 ขั้นตอน- 01
เข้าสู่ระบบด้วย Google
กรอกแบบฟอร์มยืนยันข้อมูลสั้น ๆ แล้วรอผู้ดูแลอนุมัติบัญชี จากนั้นสร้าง API Key ที่ขึ้นต้นด้วย pk_ ในแดชบอร์ด
- 02
เชื่อมต่อบัญชี LINE
เข้าสู่ระบบด้วย QR หรืออีเมลเพียงครั้งเดียว โดยใช้บัญชี LINE ที่รับการแจ้งเตือนจาก KBank หรือ SCB ระบบจะรักษาการเชื่อมต่อให้หลังจากนั้น
- 03
ลงทะเบียนปลายทาง
วาง URL คัดลอก Secret สำหรับลงลายเซ็น แล้วลองส่งข้อมูลทดสอบ เงินโอนเข้าครั้งถัดไปจะมาถึงเป็น POST พร้อมลายเซ็น
ไคลเอนต์ LINE นี้ไม่เป็นทางการและอยู่นอกข้อกำหนดการให้บริการของ LINE กรุณาใช้บัญชี LINE แยกสำหรับบริการนี้แทนบัญชีส่วนตัว
รอนานแค่ไหน ลองส่งใหม่บ่อยเท่าไร
ระบบส่งข้อมูลใช้ค่าเหล่านี้ ออกแบบปลายทางให้ตอบกลับภายในเวลาที่กำหนด และรองรับการได้รับอีเวนต์เดิมมากกว่าหนึ่งครั้ง
- ธนาคารที่รองรับ
- 2
- ลายเซ็น HMAC
- SHA-256
- เวลารอปลายทาง
- 10 วินาที
- จำนวนครั้งที่ลองส่งใหม่
- 8
- เริ่มลองใหม่หลัง
- 30 วินาที
- ช่วงรอนานที่สุด
- 24 ชม.
- ช่วงเวลารับคำขอในตัวอย่าง
- 5 นาที
- จำนวนการส่งต่ออีเวนต์
- ≥ 1
- POST
- 30s
- 2m
- 10m
- 30m
- 2h
- 6h
- 12h
- 24h
ทำอะไรได้ ขัดข้องแล้วเป็นอย่างไร และมีข้อจำกัดอะไร
- ตอนนี้รองรับธนาคารไหนบ้าง?
- KBank และ SCB ทั้งสองธนาคารส่งการแจ้งเตือนการโอนเป็นข้อความ Flex บน LINE ระบบอ่านได้ทั้งสองรูปแบบ ข้อความที่ไม่รู้จักจะบันทึกและข้ามไปโดยไม่เดาแล้วส่งต่อ
- เป็นการเชื่อมต่ออย่างเป็นทางการกับ LINE หรือธนาคารหรือไม่?
- ไม่ใช่ ระบบเข้าสู่ LINE ผ่านไคลเอนต์ที่ไม่เป็นทางการ ซึ่งอยู่นอกข้อกำหนดการให้บริการของ LINE และอ่านข้อความแจ้งเตือนแทนการเรียก API ธนาคาร กรุณาใช้บัญชี LINE แยกสำหรับบริการนี้แทนบัญชีส่วนตัว
- ถ้าปลายทางของฉันล่มจะเกิดอะไรขึ้น?
- ระบบจะลองส่งใหม่โดยเว้นช่วง 30 วินาที 2 นาที 10 นาที 30 นาที แล้วตามด้วย 2, 6, 12 และ 24 ชั่วโมง ทุกครั้งใช้ ID อีเวนต์เดิม คุณจึงละเว้นรายการที่ซ้ำได้อย่างปลอดภัย
- ระบบส่งต่อรายการอะไรบ้าง?
- เฉพาะเงินโอนเข้า รายการเงินออกและการโอนภายในจะบันทึกและแสดงในแดชบอร์ด แต่จะไม่ส่งไปยังปลายทางของคุณ
- หลังส่งแล้ว ยังเรียกดูอีเวนต์ได้หรือไม่?
- ได้ แดชบอร์ดแสดงทุกการแจ้งเตือนธนาคาร การลองส่ง และรหัส HTTP ที่ตอบกลับ REST API ให้ข้อมูลเดียวกันผ่าน GET /v1/transactions และ GET /v1/balance โดยใช้ pk_ Key ของคุณเป็น Bearer Token
- เริ่มใช้งานได้อย่างไร?
- เข้าสู่ระบบด้วย Google กรอกแบบฟอร์มยืนยันข้อมูล แล้วรอผู้ดูแลอนุมัติ จากนั้นสร้าง API Key ในแดชบอร์ด ซึ่งจะแสดงเพียงครั้งเดียว
เลิกคอยรีเฟรชแอปธนาคาร
เชื่อมต่อบัญชีวันนี้ รับ Webhook แรกทันทีที่มีคนโอนเงินให้คุณครั้งถัดไป