✅ ระบบส่ง Webhook ได้จริง

หน้านี้คือ “ระบบปลายทาง” ที่รับข้อมูลจาก WMS Pro — ได้รับและตรวจลายเซ็นผ่านแล้ว 9 เหตุการณ์

9
เหตุการณ์ที่รับจาก WMS
1
คำขอที่ถูกปฏิเสธ
เปิดอยู่
การตรวจลายเซ็น
อ่านหน้านี้อย่างไร — ทุกครั้งที่มีเหตุการณ์เกิดขึ้นใน WMS (สร้างออร์เดอร์ · จ่ายของ · อัปเดตเลขพัสดุ ฯลฯ) ระบบจะยิงข้อมูลมาที่นี่ทันที พร้อมลายเซ็นดิจิทัล
ตัวรับจะ ตรวจลายเซ็นก่อนเสมอ — ผ่านจึงตอบรับ (200) ถ้าไม่ผ่านจะปฏิเสธ (401) ดังนั้นรายการที่ขึ้นว่า “รับแล้ว” คือรายการที่ยืนยันแล้วว่ามาจาก WMS จริงและข้อมูลไม่ถูกแก้ระหว่างทาง
รายการ “ปฏิเสธ” ที่เห็นคือคำขอปลอมที่ชุดทดสอบจงใจยิงมา เพื่อพิสูจน์ว่าตัวรับกันของปลอมได้จริง — ไม่ใช่ความผิดพลาด

ข้อมูลที่ได้รับล่าสุด (10 รายการ)

รับแล้ว ยกเลิกออร์เดอร์ order.cancelled 27/9/2569 12:13:09
รหัสเหตุการณ์ evt_46a0cea07f006dfd92c5d6fc · ลายเซ็น ถูกต้อง · ขนาด 312 bytes
เลขที่ในคลังAO-202609-00001
เลขที่ของ OMSWNV-260927-JPNSER
เจ้าของสินค้าWAPI-TEST
สถานะcancelled
เหตุผลE2E ทดสอบเสร็จ
ข้อมูลดิบที่ได้รับทั้งหมด (JSON)
{
  "id": "evt_46a0cea07f006dfd92c5d6fc",
  "event": "order.cancelled",
  "created_at": "2026-09-27 05:13:09",
  "company_id": 1,
  "client_id": 13,
  "client_code": "WAPI-TEST",
  "attempt": 1,
  "data": {
    "order_no": "AO-202609-00001",
    "external_ref": "WNV-260927-JPNSER",
    "client_code": "WAPI-TEST",
    "status": "cancelled",
    "reason": "E2E ทดสอบเสร็จ"
  }
}
รับแล้ว สร้างออร์เดอร์ใหม่ order.created 27/9/2569 12:13:04
รหัสเหตุการณ์ evt_c1c57ea3932ee459e44dcd34 · ลายเซ็น ถูกต้อง · ขนาด 1227 bytes
เลขที่ในคลังAO-202609-00001
เลขที่ของ OMSWNV-260927-JPNSER
เจ้าของสินค้าWAPI-TEST
สถานะpending
รายการสินค้าในออร์เดอร์WAPI-TEST-SKU-01 × 1 (สินค้าทดสอบ UAT A1 (ไม่มีล็อต))
ข้อมูลดิบที่ได้รับทั้งหมด (JSON)
{
  "id": "evt_c1c57ea3932ee459e44dcd34",
  "event": "order.created",
  "created_at": "2026-09-27 05:13:03",
  "company_id": 1,
  "client_id": 13,
  "client_code": "WAPI-TEST",
  "attempt": 1,
  "data": {
    "order_no": "AO-202609-00001",
    "external_ref": "WNV-260927-JPNSER",
    "client_code": "WAPI-TEST",
    "status": "pending",
    "channel": "api",
    "warehouse": "BKK",
    "order_date": "2026-09-27",
    "customer": {
      "name": "ทดสอบ E2E WNV API (ห้ามจัดส่ง)",
      "phone": "0000000000",
      "address": "ออร์เดอร์ทดสอบระบบ ห้ามจัดส่ง กรุงเทพมหานคร 10000"
    },
    "shipment": {
      "carrier_code": null,
      "carrier_name": null,
      "tracking_no": null,
      "tracking_url": null,
      "status": null,
      "updated_at": null
    },
    "note": "[E2E WNV API — ทดสอบระบบ ยกเลิกได้ ห้ามจัดส่ง] · อ้างอิงลูกค้า E2E-20260927121302-1853 · [WNV API]",
    "fulfilled_at": null,
    "cancelled_at": null,
    "cancel_reason": null,
    "created_at": "2026-09-27 05:13:03",
    "updated_at": "2026-09-27 05:13:03",
    "client_id": 13,
    "fulfillment_status": "draft",
    "timestamps": {
      "confirmed_at": null,
      "pack_confirmed_at": null,
      "dispatched_at": null,
      "booked_at": null,
      "issued_at": null,
      "cancelled_at": null
    },
    "items": [
      {
        "line_no": 1,
        "sku": "WAPI-TEST-SKU-01",
        "client_sku": null,
        "name": "สินค้าทดสอบ UAT A1 (ไม่มีล็อต)",
        "uom": "PCS",
        "quantity": 1,
        "shipped_quantity": 0,
        "unit_price": 0,
        "amount": 0,
        "status": "open",
        "note": null
      }
    ]
  }
}
รับแล้ว รับสินค้าเข้าคลังแล้ว inbound.received 27/9/2569 12:11:14
รหัสเหตุการณ์ evt_191399ee42fb6edba5f875f9 · ลายเซ็น ถูกต้อง · ขนาด 578 bytes
สถานะputaway_pending
เลขที่รายการสต็อกIVT-202609-000005
สินค้าที่จ่ายออกWAPI-TESTB-SKU-01 × undefined · WAPI-TESTB-SKU-02 × undefined
ข้อมูลดิบที่ได้รับทั้งหมด (JSON)
{
  "id": "evt_191399ee42fb6edba5f875f9",
  "event": "inbound.received",
  "created_at": "2026-09-27 05:11:14",
  "company_id": 1,
  "client_id": 14,
  "client_code": "WAPI-TEST-B",
  "attempt": 1,
  "data": {
    "receipt_no": "GRN-2609-00002",
    "transaction_no": "IVT-202609-000005",
    "received_at": "2026-09-27T05:11:14.556Z",
    "qc_pending": false,
    "status": "putaway_pending",
    "lines": [
      {
        "sku": "WAPI-TESTB-SKU-01",
        "client_sku": null,
        "internal_code": "WNV000022",
        "qty": 0.05,
        "lot_no": null,
        "expiry_date": null
      },
      {
        "sku": "WAPI-TESTB-SKU-02",
        "client_sku": null,
        "internal_code": "WNV000023",
        "qty": 0.05,
        "lot_no": null,
        "expiry_date": null
      }
    ]
  }
}
รับแล้ว รับสินค้าเข้าคลังแล้ว inbound.received 27/9/2569 12:11:11
รหัสเหตุการณ์ evt_bcb3d4d40474114b0f652865 · ลายเซ็น ถูกต้อง · ขนาด 574 bytes
สถานะputaway_pending
เลขที่รายการสต็อกIVT-202609-000004
สินค้าที่จ่ายออกWAPI-TEST-SKU-01 × undefined · WAPI-TEST-LOT-01 × undefined
ข้อมูลดิบที่ได้รับทั้งหมด (JSON)
{
  "id": "evt_bcb3d4d40474114b0f652865",
  "event": "inbound.received",
  "created_at": "2026-09-27 05:11:11",
  "company_id": 1,
  "client_id": 13,
  "client_code": "WAPI-TEST",
  "attempt": 1,
  "data": {
    "receipt_no": "GRN-2609-00001",
    "transaction_no": "IVT-202609-000004",
    "received_at": "2026-09-27T05:11:11.376Z",
    "qc_pending": false,
    "status": "putaway_pending",
    "lines": [
      {
        "sku": "WAPI-TEST-SKU-01",
        "client_sku": null,
        "internal_code": "WNV000020",
        "qty": 0.05,
        "lot_no": null,
        "expiry_date": null
      },
      {
        "sku": "WAPI-TEST-LOT-01",
        "client_sku": null,
        "internal_code": "WNV000021",
        "qty": 0.05,
        "lot_no": null,
        "expiry_date": null
      }
    ]
  }
}
รับแล้ว ทดสอบการเชื่อมต่อ ping 27/9/2569 11:57:55
รหัสเหตุการณ์ evt_139a453b2919a07ac27fb21f · ลายเซ็น ถูกต้อง · ขนาด 253 bytes
ข้อความทดสอบการเชื่อมต่อจาก WMS Pro
ข้อมูลดิบที่ได้รับทั้งหมด (JSON)
{
  "id": "evt_139a453b2919a07ac27fb21f",
  "event": "ping",
  "created_at": "2026-09-27 04:57:55",
  "company_id": 1,
  "client_id": null,
  "client_code": null,
  "attempt": 1,
  "data": {
    "message": "ทดสอบการเชื่อมต่อจาก WMS Pro",
    "endpoint_id": 4,
    "sent_at": "2026-09-27T04:57:55.291Z"
  }
}
ปฏิเสธ 22/9/2569 15:07:19
ไม่มีรหัสเหตุการณ์ — ไม่ได้ส่งมาจาก WMS (เป็นคำขอทดสอบที่ยิงมาเพื่อพิสูจน์ว่าตัวรับกันของปลอมได้)
ข้อมูลดิบที่ได้รับทั้งหมด (JSON)
{}
รับแล้ว ยอดสต็อกเปลี่ยนแปลง stock.updated 22/9/2569 11:41:47
รหัสเหตุการณ์ evt_206c0699c93b94498a525009 · ลายเซ็น ถูกต้อง · ขนาด 266 bytes
เลขที่ในคลังSO-S-00012
เจ้าของสินค้าACME
เลขที่รายการสต็อกIVT-202609-000003
เหตุผลorder_fulfilled
ข้อมูลดิบที่ได้รับทั้งหมด (JSON)
{
  "id": "evt_206c0699c93b94498a525009",
  "event": "stock.updated",
  "created_at": "2026-09-22 04:41:46",
  "company_id": 1,
  "client_id": 1,
  "attempt": 1,
  "data": {
    "reason": "order_fulfilled",
    "order_no": "SO-S-00012",
    "client_code": "ACME",
    "transaction_no": "IVT-202609-000003",
    "items": []
  }
}
รับแล้ว สถานะออร์เดอร์เปลี่ยน order.status_changed 22/9/2569 11:41:46
รหัสเหตุการณ์ evt_1c5a9ec9d6981e47f36a8f10 · ลายเซ็น ถูกต้อง · ขนาด 562 bytes
เลขที่ในคลังSO-S-00012
เลขที่ของ OMStestzzzz
เจ้าของสินค้าACME
สถานะfulfilled
เลขที่รายการสต็อกIVT-202609-000003
สินค้าที่จ่ายออกBEV-1001 × 4 (ล็อต LOT-AQ2609 หมดอายุ 2027-07-24)
ข้อมูลดิบที่ได้รับทั้งหมด (JSON)
{
  "id": "evt_1c5a9ec9d6981e47f36a8f10",
  "event": "order.status_changed",
  "created_at": "2026-09-22 04:41:46",
  "company_id": 1,
  "client_id": 1,
  "attempt": 1,
  "data": {
    "order_no": "SO-S-00012",
    "external_ref": "testzzzz",
    "client_code": "ACME",
    "status": "fulfilled",
    "document_type": "online",
    "transaction_no": "IVT-202609-000003",
    "fulfilled_at": "2026-09-22T04:41:46.384Z",
    "lines": [
      {
        "sku": "BEV-1001",
        "product_name": "น้ำดื่มบริสุทธิ์ 600 มล.",
        "quantity": 4,
        "lot_no": "LOT-AQ2609",
        "expiry_date": "2027-07-24",
        "warehouse_code": "BKK",
        "location_code": "BKK-RCV-01"
      }
    ],
    "previous_status": "pending"
  }
}
รับแล้ว จ่ายของครบแล้ว (ตัดสต็อกเรียบร้อย) order.fulfilled 22/9/2569 11:41:46
รหัสเหตุการณ์ evt_9bd8025269d6067f9f6b4373 · ลายเซ็น ถูกต้อง · ขนาด 529 bytes
เลขที่ในคลังSO-S-00012
เลขที่ของ OMStestzzzz
เจ้าของสินค้าACME
สถานะfulfilled
เลขที่รายการสต็อกIVT-202609-000003
สินค้าที่จ่ายออกBEV-1001 × 4 (ล็อต LOT-AQ2609 หมดอายุ 2027-07-24)
ข้อมูลดิบที่ได้รับทั้งหมด (JSON)
{
  "id": "evt_9bd8025269d6067f9f6b4373",
  "event": "order.fulfilled",
  "created_at": "2026-09-22 04:41:46",
  "company_id": 1,
  "client_id": 1,
  "attempt": 1,
  "data": {
    "order_no": "SO-S-00012",
    "external_ref": "testzzzz",
    "client_code": "ACME",
    "status": "fulfilled",
    "document_type": "online",
    "transaction_no": "IVT-202609-000003",
    "fulfilled_at": "2026-09-22T04:41:46.384Z",
    "lines": [
      {
        "sku": "BEV-1001",
        "product_name": "น้ำดื่มบริสุทธิ์ 600 มล.",
        "quantity": 4,
        "lot_no": "LOT-AQ2609",
        "expiry_date": "2027-07-24",
        "warehouse_code": "BKK",
        "location_code": "BKK-RCV-01"
      }
    ]
  }
}
รับแล้ว order.packed order.packed 22/9/2569 11:39:28
รหัสเหตุการณ์ evt_ef929c5d38bef94b9df43386 · ลายเซ็น ถูกต้อง · ขนาด 189 bytes
เลขที่ในคลังSO-S-00012
ข้อมูลดิบที่ได้รับทั้งหมด (JSON)
{
  "id": "evt_ef929c5d38bef94b9df43386",
  "event": "order.packed",
  "created_at": "2026-09-22 04:39:28",
  "company_id": 1,
  "client_id": 1,
  "attempt": 1,
  "data": {
    "order_no": "SO-S-00012",
    "date": "2026-09-22"
  }
}

สำหรับผู้พัฒนา

POST / รับ webhook · ลายเซ็นผ่านตอบ 200 · ไม่ผ่านตอบ 401
GET /events ดูข้อมูลทั้งหมดเป็น JSON
โค้ดตัวรับตัวนี้อยู่ในชุดส่งมอบที่ scripts/demo/webhook-echo/_worker.js — นำไปดัดแปลงใช้กับระบบจริงได้ทันที