API Documentation

Payment Gateway REST API — สร้าง QR PromptPay, ตรวจสอบยอดอัตโนมัติผ่าน LINE

Authentication

ส่ง API Key ผ่าน header ทุก request

X-API-Key: your-api-key-here

API Key ได้จากหน้า Dashboard > API Keys หรือจาก Admin

POST /pay/create

สร้าง payment ใหม่ + QR PromptPay

Request Body

FieldTypeRequiredDescription
amountnumberYesจำนวนเงิน (THB) เช่น 100, 299.00
con_idnumberYesBank Connection ID — ระบุว่าจะใช้บัญชีธนาคารไหน
refstringNoReference ของคุณ เช่น order ID, player UID
callback_urlstringNoURL สำหรับ webhook เมื่อชำระสำเร็จ (override merchant default)
metadataobjectNoข้อมูลเพิ่มเติมที่จะส่งกลับใน callback

Example

curl -X POST https://your-domain.com/pay/create \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-api-key" \
  -d '{
    "amount": 100,
    "con_id": 1,
    "ref": "order-001",
    "metadata": {"uid": "player-123"}
  }'

Response

{
  "code": 0,
  "data": {
    "id": "payment-uuid",
    "amount": 100.01,
    "base_amount": 100,
    "connection_id": 1,
    "status": "pending",
    "expires_at": "2024-01-01T00:15:00.000Z",
    "qr_url": "/pay/qr/payment-uuid"
  }
}

amount จะมีสตางค์เพิ่มเพื่อแยกรายการ (เช่น 100.01, 100.02) — ให้แสดง QR ด้วยยอดนี้

GET /pay/qr/:id

ดึง QR Code เป็นรูป PNG

ParamDescription
:idPayment ID ที่ได้จาก /pay/create
?format=base64ส่งกลับเป็น JSON + base64 data URI แทน

ใช้เป็น <img src="/pay/qr/uuid"> ได้เลย

GET /pay/status/:id

ตรวจสอบสถานะ payment

Response

{
  "code": 0,
  "data": {
    "id": "payment-uuid",
    "status": "confirmed",
    "amount": 100.01,
    "base_amount": 100,
    "ref": "order-001",
    "created_at": "...",
    "expires_at": "...",
    "confirmed_at": "..."
  }
}

Status: pendingconfirmed / expired / cancelled

POST /pay/cancel/:id

ยกเลิก payment ที่ยัง pending

ต้องใช้ X-API-Key ของ merchant เจ้าของ payment

Webhook Callback

เมื่อชำระสำเร็จ ระบบจะ POST ไปที่ callback_url

POST your-callback-url
Content-Type: application/json

{
  "event": "payment.confirmed",
  "payment_id": "uuid",
  "ref": "order-001",
  "amount": 100.01,
  "base_amount": 100,
  "confirmed_at": "2024-01-01T00:05:00.000Z",
  "metadata": {"uid": "player-123"}
}

POST /merchant/sync

Sync LINE token จาก Chrome Extension

Request Body

{
  "sync_key": "your-sync-key",
  "cookies": [{"name": "lct", "value": "token..."}]
}

Sync Key ได้จากหน้า Dashboard > API Keys

Chrome Extension — ติดตั้งและเชื่อมต่อ

Extension นี้ใช้ดึง LINE token จาก LINE Chrome Extension เพื่อให้ระบบ monitor ข้อความแจ้งเตือนธนาคารได้

ขั้นตอนที่ 1: ติดตั้ง LINE Chrome Extension

  1. เปิด Chrome → ไปที่ Chrome Web Store
  2. ค้นหา "LINE" → ติดตั้ง LINE extension อย่างเป็นทางการ
  3. เปิด LINE extension → Login ด้วย LINE account ที่เพิ่ม OA ธนาคาร (เช่น Krungthai Connext)

ขั้นตอนที่ 2: ติดตั้ง Sync Extension

  1. ดาวน์โหลดไฟล์ Extension จาก Admin หรือที่ได้รับมา (โฟลเดอร์ที่มี manifest.json)
  2. เปิด Chrome → ไปที่ chrome://extensions
  3. เปิด Developer mode (มุมขวาบน)
  4. กด "Load unpacked" → เลือกโฟลเดอร์ Extension

ขั้นตอนที่ 3: ตั้งค่า Extension

  1. คลิกไอคอน Extension → ตั้งค่า
  2. ใส่ Server URL: https://salmongateway.com
  3. ใส่ Sync Key: ได้จากหน้า Dashboard → API Keys → Sync Key
  4. กด Sync → Extension จะส่ง LINE token มาให้ระบบ

ขั้นตอนที่ 4: Detect Bank MID

  1. Sync สำเร็จ → กลับมาที่ Dashboard
  2. ที่ tab Bank Connections กด "Detect Bank MID"
  3. ระบบจะหา OA ธนาคาร (เช่น Krungthai Connext) ใน LINE chat list อัตโนมัติ
  4. ถ้าสำเร็จ → คอลัมน์ Bank MID จะแสดง MID ของ OA ธนาคาร
สำคัญ: LINE account ที่ใช้ต้องเพิ่ม OA ธนาคาร (เช่น Krungthai Connext) เป็นเพื่อนแล้ว และต้องเปิดการแจ้งเตือนเงินเข้าในแอปธนาคาร เพื่อให้ OA ส่งข้อความเข้า LINE เมื่อมีเงินเข้า

Flow การทำงาน

  1. สมัครสมาชิก → ได้ Merchant account + API Key + Sync Key
  2. เพิ่ม Bank Connection → เลือกธนาคาร + ใส่เลข PromptPay → ได้ con_id
  3. ติดตั้ง LINE Chrome Extension + Sync Extension → sync token เข้าระบบ
  4. กด Detect Bank MID → ระบบหา OA ธนาคารอัตโนมัติ
  5. เรียก POST /pay/create ด้วย con_id → ได้ QR Code
  6. ลูกค้าสแกนจ่าย → ธนาคารแจ้งเตือนผ่าน LINE → ระบบ match ยอด + confirm อัตโนมัติ
  7. Callback POST ไปที่ URL ที่ตั้งไว้ → ระบบคุณรับ callback แล้วเติมเงิน/ปลดล็อค

Error Codes

CodeMeaning
0Success
400Bad request — ข้อมูลไม่ครบหรือไม่ถูกต้อง
401Unauthorized — API Key ไม่ถูกต้อง
402Insufficient credit — เครดิตไม่พอ
403Forbidden — ไม่มีสิทธิ์
404Not found
409Conflict — สตางค์เต็มหมดสำหรับยอดนี้
500Internal error