ข้ามไปยังเนื้อหา
พร้อมรับข้อมูลอ่านและส่งต่อการแจ้งเตือนจาก KBank และ SCB

เงินเข้า ส่ง Webhook ทันที

เชื่อมต่อบัญชี LINE ที่รับการแจ้งเตือนจาก KBank หรือ SCB ของคุณ แล้วลงทะเบียนปลายทาง ทุกรายการเงินเข้าจะส่งเป็น POST พร้อมลายเซ็น HMAC ภายในไม่กี่วินาที

วิธีการทำงาน
  • ไม่ต้องใช้ API ธนาคาร
  • POST พร้อมลายเซ็น HMAC
  • ลองส่งใหม่ 8 ครั้ง เว้นช่วงสูงสุด 24 ชม.
PromptPayหนึ่งรายการโอน ตั้งแต่ต้นจนจบตัวอย่าง
01หน้าชำระเงินของคุณ
ชำระด้วย Thai QR฿1,250.00
ตัวอย่าง QR พร้อมเพย์
คำสั่งซื้อ #1042รอดำเนินการ
02LINE
KKBank14:03

รายการเงินเข้า

21/09/69 14:03 น.

เข้าบัญชี
xxx-x-x1234-x
จำนวนเงิน
1,250.00 บาท
ยอดเงินคงเหลือ
8,410.55 บาท
03เซิร์ฟเวอร์ของคุณ

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
ทำอะไรได้บ้าง04 ฟีเจอร์

เปลี่ยนการแจ้งเตือนบน 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
ผลตรวจสอบตรงกัน, 200

ยืนยันด้วยลายเซ็น

ทุก POST มี x-webhook-timestamp และ x-webhook-signature โดยสร้าง HMAC-SHA256 จาก timestamp.rawBody ด้วย Secret ของปลายทาง เพื่อป้องกันการนำคำขอที่ดักจับไว้มาใช้ซ้ำภายหลัง

การส่งอีเวนต์ 10428ตัวอย่าง
  1. 0114:03:04503ไม่สำเร็จ
  2. 02+ 30 วินาที503ไม่สำเร็จ
  3. 03+ 2 นาที503รอส่งใหม่

ลองใหม่ใน 10 นาที โดยใช้ ID เดิม

ส่งแบบอย่างน้อยหนึ่งครั้ง

หากส่งไม่สำเร็จ ระบบจะลองใหม่ 8 ครั้ง โดยเว้นช่วงตั้งแต่ 30 วินาทีถึง 24 ชั่วโมง ทุกครั้งใช้ ID อีเวนต์เดิม ระบบของคุณจึงตรวจสอบและตัดรายการซ้ำได้

การแจ้งเตือนธนาคารล่าสุดตัวอย่าง
21 ก.ย. 14:03kbankเงินเข้า฿1,250.001 ส่งสำเร็จ
21 ก.ย. 13:41scbเงินเข้า฿320.001 ส่งสำเร็จ
21 ก.ย. 12:15kbankเงินออก฿4,000.00ไม่ส่งต่อ
21 ก.ย. 11:52kbankเงินเข้า฿89.001 รอส่งใหม่

เรียกดูย้อนหลังได้

เรียกดูทุกอีเวนต์ย้อนหลังได้ผ่าน GET /v1/transactions โดยใช้ Bearer Key ที่ขึ้นต้นด้วย pk_ พร้อมแดชบอร์ดแสดงสถานะการรับและส่งข้อมูลแยกตามปลายทาง รายการเงินออกจะบันทึกไว้แต่ไม่ส่งต่อ

ข้อมูลที่คุณจะได้รับข้อมูล

หนึ่ง POST หนึ่งลายเซ็น หนึ่ง ID

รายละเอียดคำขอทั้งหมดอยู่ในหน้าจอเดียว นี่คือข้อมูลที่ปลายทางของคุณจะได้รับ พร้อมคำอธิบายส่วนสำคัญ

POST/hooks/promptpayตัวอย่าง
x-webhook-timestamp: 1789974184118
1x-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"
}
  1. 01

    ลายเซ็น

    HMAC-SHA256 ของ timestamp.rawBody โดยใช้ Secret ของปลายทางเป็นกุญแจ

  2. 02

    ประเภท

    ส่งต่อเฉพาะ money_in ส่วนเงินออกและการโอนดูได้ในแดชบอร์ด

  3. 03

    ยอดเงินสองรูปแบบ

    จำนวนบาทสำหรับอ่าน และ amount_satang เป็นจำนวนเต็มสำหรับคำนวณ

  4. 04

    กุญแจป้องกันรายการซ้ำ

    ทุกครั้งที่ส่งใหม่จะใช้ ID เดิม ใช้ค่านี้ตัดรายการซ้ำ

  5. 05

    ธนาคาร

    รหัสธนาคารที่ส่งการแจ้งเตือนนี้

  6. 06

    เวลาของธนาคาร

    ไม่ว่าจะเป็นปี พ.ศ. หรือ ค.ศ. จะแปลงเป็นเวลา ISO รูปแบบเดียวกัน

ตรวจสอบก่อนเชื่อถือ

ตรวจสอบลายเซ็นกับข้อมูลคำขอเดิม การแปลง JSON ใหม่จะทำให้ไบต์เปลี่ยนและตรวจสอบไม่ผ่าน แดชบอร์ดมีฟังก์ชันนี้พร้อมตัวอย่างใช้งานสำหรับแต่ละเฟรมเวิร์ก

verify.js
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 ขั้นตอน
  1. 01

    เข้าสู่ระบบด้วย Google

    กรอกแบบฟอร์มยืนยันข้อมูลสั้น ๆ แล้วรอผู้ดูแลอนุมัติบัญชี จากนั้นสร้าง API Key ที่ขึ้นต้นด้วย pk_ ในแดชบอร์ด

  2. 02

    เชื่อมต่อบัญชี LINE

    เข้าสู่ระบบด้วย QR หรืออีเมลเพียงครั้งเดียว โดยใช้บัญชี LINE ที่รับการแจ้งเตือนจาก KBank หรือ SCB ระบบจะรักษาการเชื่อมต่อให้หลังจากนั้น

  3. 03

    ลงทะเบียนปลายทาง

    วาง URL คัดลอก Secret สำหรับลงลายเซ็น แล้วลองส่งข้อมูลทดสอบ เงินโอนเข้าครั้งถัดไปจะมาถึงเป็น POST พร้อมลายเซ็น

ไคลเอนต์ LINE นี้ไม่เป็นทางการและอยู่นอกข้อกำหนดการให้บริการของ LINE กรุณาใช้บัญชี LINE แยกสำหรับบริการนี้แทนบัญชีส่วนตัว

ตัวเลขการทำงาน08 ข้อ

รอนานแค่ไหน ลองส่งใหม่บ่อยเท่าไร

ระบบส่งข้อมูลใช้ค่าเหล่านี้ ออกแบบปลายทางให้ตอบกลับภายในเวลาที่กำหนด และรองรับการได้รับอีเวนต์เดิมมากกว่าหนึ่งครั้ง

ธนาคารที่รองรับ
2
ลายเซ็น HMAC
SHA-256
เวลารอปลายทาง
10 วินาที
จำนวนครั้งที่ลองส่งใหม่
8
เริ่มลองใหม่หลัง
30 วินาที
ช่วงรอนานที่สุด
24 ชม.
ช่วงเวลารับคำขอในตัวอย่าง
5 นาที
จำนวนการส่งต่ออีเวนต์
≥ 1
  1. POST
  2. 30s
  3. 2m
  4. 10m
  5. 30m
  6. 2h
  7. 6h
  8. 12h
  9. 24h
ส่งครั้งแรก แล้วลองใหม่อีก 8 ครั้ง โดยเว้นช่วงนานขึ้นเรื่อย ๆ ทุกครั้งใช้ ID อีเวนต์เดิม
คำถามที่พบบ่อยคำถาม

ทำอะไรได้ ขัดข้องแล้วเป็นอย่างไร และมีข้อจำกัดอะไร

ตอนนี้รองรับธนาคารไหนบ้าง?
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 แรกทันทีที่มีคนโอนเงินให้คุณครั้งถัดไป