เตรียมบัญชีและสิทธิ์
ใช้เพจ Facebook ที่ร้านมีสิทธิ์ดูแลและบัญชีเจ้าของร้าน SlipMatrix สำหรับตั้งค่า ระบบยังไม่รองรับการเชื่อมตัวตนพนักงาน Facebook หรือการตั้งค่าเพจด้วยบัญชีพนักงาน
- ระบบตรวจว่า Page token ใช้ได้กับ Page ID และ Meta App ที่ผู้ดูแลกำหนด พร้อมสิทธิ์ pages_messaging และ pages_manage_metadata สำหรับเพจนี้
- เก็บ App Secret และ verify token ฝั่งผู้ดูแลเซิร์ฟเวอร์เท่านั้น Page token กรอกเฉพาะหน้าตั้งค่าที่เชื่อถือได้ ไม่ใส่ใน URL รูปหรือส่งให้ลูกค้า
- หากยังไม่มี Meta App หรือ Page ให้เตรียมเพจทดสอบก่อน การตั้งค่าระบบและการตรวจใน localhost ไม่ยืนยันสิทธิ์ใช้งานจริงจาก Meta
สถานะ CONFIGURED_UNTESTED หรือการยืนยัน webhook สำเร็จบอกเพียงความพร้อมทางเทคนิค ไม่ได้เปลี่ยน liveAcceptanceVerified เป็น true และไม่ใช่ผลทดสอบธนาคารหรือ Wallet จริง
เชื่อมเพจและยืนยัน webhook
ให้ผู้ดูแลเตรียมบริการ Facebook
ผู้ดูแล SlipMatrix ต้องตั้งค่า Meta App, App Secret, verify token, Graph API version และ public API URL ฝั่งเซิร์ฟเวอร์ก่อน เจ้าของร้านเพิ่มเพจไม่ได้ขณะบริการยังไม่พร้อม
เพิ่มเพจจาก Merchant Portal
เปิด Facebook Messenger แล้วเลือกเพิ่มเพจ กรอก Page ID เป็นข้อความและ Page access token ของเพจที่ออกโดยแอปที่ระบบรองรับ เลือกสาขา ประเภทสลิป และยอดเงิน ระบบตรวจตัวตนและสิทธิ์ก่อนบันทึก
ตั้งค่า callback และสมัครรับข้อความ
คัดลอก URL webhook ที่หน้าเพจแสดงให้ผู้ดูแลตั้งใน Meta พร้อม verify token ของระบบ สมัครรับ events ของเพจสำหรับ messages การตอบ GET challenge สำเร็จอย่างเดียวยังไม่เปิดรับภาพสลิป
ส่งรหัสทดสอบจากบัญชีบุคคล
กดสร้างรหัสทดสอบ แล้วส่งข้อความ SLIPMATRIX-SETUP ที่แสดงทั้งหมดไปยังเพจจากบัญชีบุคคลภายใน 10 นาที อย่าส่งเป็นข้อความตอบจากตัวเพจ รหัสนี้ไม่ใช้เครดิตและไม่ใช่สลิปสำหรับตรวจยอดเงิน
ยืนยันแล้วทดสอบภาพสลิป
กดโหลดสถานะใหม่ เมื่อพบรหัสแล้วกดยืนยันการเชื่อมต่อ ระบบตรวจว่าแอปสมัครรับข้อความของเพจอยู่ รอแสดงพร้อมรับสลิปตามประเภทที่เลือก แล้วทดสอบภาพและข้อความตอบกลับกับผู้ให้บริการจริงก่อนเปิดให้ลูกค้าใช้
รหัสทดสอบผูกกับเพจ สาขา ข้อมูลรับรอง และรอบปัจจุบัน เปลี่ยนสาขา เปิดปิดเพจ หรือเปลี่ยน token แล้วต้องยืนยันใหม่ รายการเก่ายังคงใช้บริบทเดิมและไม่ถูกส่งซ้ำเอง
เลือกประเภทสลิปและเงื่อนไข
BANK- อ่าน QR ธนาคารจากภาพ แล้วตรวจธุรกรรมผ่านบริการธนาคาร ภาพต้องอ่าน QR ได้ชัดเจน
TRUEWALLET- ส่งภาพให้ผู้ให้บริการ TrueMoney ที่ตั้งค่าไว้โดยตรง ต้องมีผู้ให้บริการพร้อมใช้งาน ไม่ใช่การตรวจธุรกรรมจาก SCB
AUTO- ลองอ่าน QR ธนาคารก่อน หากไม่พบเลขอ้างอิงธนาคารจึงใช้ Wallet เมื่อพร้อมใช้งาน ภาพที่ไม่ใช่สลิปอาจใช้โควตาผู้ให้บริการ จึงควรทดสอบชนิดภาพที่ร้านรับ
ภาพจาก Facebook รองรับ JPEG, PNG, WebP และ GIF ไม่เกิน 4 MiB และ 12 ล้านพิกเซลรวมทุกเฟรม ระบบตรวจชนิดและอ่านภาพจริง ไม่ใช้ข้อความธรรมดาหรือไฟล์เอกสารเป็นสลิป
กำหนดยอดเงินของเพจเป็นข้อความทศนิยม เช่น 150.50 ไม่เกินสองตำแหน่ง ยอดที่คาดหวังต้องอยู่ในช่วงขั้นต่ำและสูงสุด เว้นว่างในฟอร์มเพื่อล้างเงื่อนไขยอดของเพจ
ตั้งผู้รับและเวลาโอนที่ตั้งค่าร้านค้า เงื่อนไขร้านกับเพจต้องผ่านทั้งสองชั้น การไม่กำหนดผู้รับไม่แปลว่าระบบยืนยันผู้รับถูกต้อง ชื่อหรือเลขท้ายที่ถูกปิดบังไม่ใช่หลักฐานอนุญาตผู้รับ
Facebook รับภาพเป็นคำขอตรวจสลิปแยกต่างหาก ยังไม่รองรับการแนบ orderId เพื่อปิดออเดอร์ธนาคารหรือ Wallet อัตโนมัติ
แยกผลตรวจจากผลส่งกลับ
- 1ประมวลผลภาพ
- 2ผลตรวจสลิป
- 3ส่งผลกลับ Messenger
สถานะประมวลผลภาพ
PENDING / PROCESSING- รอหรือกำลังประมวลผลภาพ ไม่ใช่ผลตรวจผ่านหรือหลักฐานรับเงิน
COMPLETE- ประมวลผลภาพครบแล้ว แต่แต่ละภาพอาจถูกส่งตรวจหรือปฏิเสธ ต้องอ่านผลตรวจของรายการนั้นต่อ
BLOCKED / EXPIRED- หยุดประมวลผลหรือหมดเวลา ตรวจสาขา การเชื่อมต่อ และรายการเดิมก่อนส่งใหม่
สถานะภาพแต่ละไฟล์เป็น PENDING เมื่อรอดาวน์โหลด, SUBMITTED เมื่อผูกกับคำขอตรวจแล้ว, REJECTED เมื่อภาพถูกปฏิเสธก่อนตรวจ หรือ EXPIRED เมื่อหมดเวลา SUBMITTED ยังไม่แปลว่าตรวจผ่าน ให้ติดตาม transactionId ของภาพนั้น
ผลตรวจสลิป
VERIFIED- ผู้ให้บริการคืนหลักฐานและผ่านเงื่อนไขที่กำหนด ตรวจรายการกับออเดอร์และยอดเงินเข้าบัญชีก่อนยืนยันรับเงิน
INVALID / FAILED / DUPLICATE- ไม่ผ่านเงื่อนไข ตรวจไม่สำเร็จ หรือพบสลิปซ้ำ อ่านรายละเอียดในรายการเดิมและไม่ใช้ยืนยันชำระเงินซ้ำ
สถานะส่งผลกลับ
PENDING / PROCESSING- รอหรือกำลังส่งผลกลับ ติดตามรายการเดิม ไม่ต้องส่งภาพใหม่เพื่อให้ตอบซ้ำ
DELIVERED- Meta รับคำขอส่งข้อความแล้ว ไม่ได้ยืนยันว่าลูกค้าอ่านข้อความหรือร้านได้รับเงิน
UNKNOWN- ไม่ทราบว่าข้อความถูกส่งหรือไม่ ระบบไม่ส่งซ้ำอัตโนมัติ ตรวจบทสนทนา Messenger และติดต่อผู้ดูแลก่อนดำเนินการ
BLOCKED / EXHAUSTED- หยุดส่งหรือใช้จำนวนครั้งที่ลองส่งครบแล้ว การเชื่อมต่อใหม่ไม่ส่งรายการเก่าซ้ำเอง
NOT_PREPARED- ยังไม่มีข้อความผลตรวจเตรียมไว้ ไม่ใช่สถานะส่งสำเร็จ
ภาพอาจประมวลผลครบและตรวจผ่านแล้ว แต่การส่งกลับเป็น UNKNOWN หรือ BLOCKED ให้ดู transactionId เดิม ไม่ส่งภาพใหม่เพื่อสร้างรายการซ้ำ และไม่ตัดสินการรับเงินจากข้อความตอบกลับเพียงอย่างเดียว
ระบบเก็บเวลาตอบกลับสูงสุด 24 ชั่วโมงจากข้อความต้นฉบับ ไม่ต่อเวลาเมื่อมี callback ซ้ำ เปลี่ยน token หรือเปิดเพจใหม่ ประวัติยังดูได้เมื่อเพจหรือบริการหยุดรับภาพ
แก้ปัญหาและติดตามรายการเดิม
- ยังไม่พบรหัสทดสอบ
- ตรวจว่าข้อความตรงกับรหัสรอบล่าสุด ส่งจากบัญชีบุคคลไปยัง Page ID ที่ผูกไว้ และยังไม่หมดอายุ ให้ผู้ดูแลตรวจ callback, verify token, App Secret และ messages subscription
- ปิดหน้าแล้วรหัสหายหรือหมดอายุ
- รหัสแสดงเฉพาะตอนสร้างและไม่เก็บ plaintext ในประวัติ หากยังไม่ได้ส่งและทำหาย ให้สร้างรอบใหม่ รออย่างน้อย 15 วินาทีก่อนสร้างซ้ำ รอบใหม่ใช้หลักฐานรอบเก่าไม่ได้
- พบรหัสแล้วแต่ยืนยันไม่สำเร็จ
- หากระบบตรวจ subscription ไม่ได้ ให้ลองยืนยัน checkId เดิมก่อนหมดอายุ ไม่จำเป็นต้องสร้างรหัสใหม่ทุกครั้ง ให้ผู้ดูแลตรวจสิทธิ์และการสมัครเพจกับแอปที่ตั้งค่าไว้
- คำขอหมดเวลาหรือไม่ทราบผลบันทึก
- โหลดสถานะเพจก่อนลองใหม่ เพราะคำขอเดิมอาจบันทึกสำเร็จแล้ว ห้ามสร้างเพจหรือภาพสลิปใหม่เพื่อหลบรายการเดิม
- เพจเคยพร้อมแต่หยุดรับสลิป
- ตรวจ token และสิทธิ์ที่ถูกเพิกถอน สาขาหรือร้านที่ปิดใช้งาน และการตั้งค่า staff-only ซึ่งยังไม่รองรับตัวตนพนักงาน Facebook เปลี่ยนสาขา เปิดปิดเพจ หรือเปลี่ยนข้อมูลรับรองต้องยืนยัน webhook ใหม่
- FACEBOOK_RATE_LIMITED
- ติดตามเวลารอในประวัติ ระบบจะรอตามกำหนดภายในหน้าต่างเดิม ถ้าระยะรอเลยเวลาตอบกลับ รายการจะหยุด ไม่ควรส่งใหม่เพื่อข้ามข้อจำกัด
- FACEBOOK_DELIVERY_UNKNOWN
- การตรวจสลิปอาจสำเร็จแล้วแต่ผลส่งไม่แน่นอน ตรวจยอดเงินและบทสนทนาเดิม ระบบไม่มีปุ่มส่งซ้ำสำหรับสถานะ UNKNOWN
เปิดดูประวัติรับสลิปของเพจ กรองสถานะภาพ ผลส่ง รหัสรายการ และช่วงวันที่รับภาพตามเวลาไทย การอัปเดตทุก 30 วินาทีเป็นการอ่านสถานะเท่านั้น ไม่สั่งส่งซ้ำหรือคิดเครดิตเพิ่ม
ข้อมูลสำหรับทีมพัฒนา
เส้นทางตั้งค่าเพจใช้ Authorization: Bearer ของ session เจ้าของร้าน ไม่ใช่ x-app-id หรือ x-api-key และไม่รับ session พนักงาน ล็อกอินผ่าน Merchant Portal ตามปกติและไม่แจก session token ให้ลูกค้า
- GET
/api/merchant/facebook-pages/configuration - อ่านสถานะบริการและ URL webhook ที่ผู้ดูแลตั้งไว้
- GET
/api/merchant/facebook-pages - อ่านเพจของร้านและสถานะรหัสทดสอบปัจจุบัน
- POST
/api/merchant/facebook-pages - ตรวจข้อมูลรับรองแล้วเพิ่มเพจ สาขา และเงื่อนไขยอดเงิน
- PATCH
/api/merchant/facebook-pages/{id} - แก้สาขา ประเภทสลิป เงื่อนไขยอดเงิน และสถานะเปิดใช้งาน
- PATCH
/api/merchant/facebook-pages/{id}/credentials - เปลี่ยน token ของ Page ID เดิม แล้วเริ่มยืนยัน webhook ใหม่
- POST
/api/merchant/facebook-pages/{id}/webhook-check - สร้างรหัสทดสอบอายุ 10 นาที ไม่ใช้เครดิต ส่ง body ว่าง {}
- POST
/api/merchant/facebook-pages/{id}/webhook-check/confirm - ยืนยันรหัสรอบปัจจุบันด้วย checkId หลังพบข้อความและตรวจ subscription
- GET
/api/merchant/facebook-pages/{id}/activity - อ่านประวัติภาพ ผลตรวจ และผลส่งกลับ ไม่มีคำสั่งส่งซ้ำ
{
"pageId": "12345678901234567890",
"accessToken": "REPLACE_WITH_PAGE_TOKEN_FROM_CONFIGURED_APP",
"branchId": null,
"verificationRail": "BANK",
"expectedAmount": "150.50",
"minAmount": "100.00",
"maxAmount": "200.00"
}{
"checkId": "00000000-0000-4000-8000-000000000001"
}id ในเส้นทางคือ UUID การเชื่อมต่อที่ SlipMatrix ส่งกลับ ไม่ใช่เลข Page ID ของ Meta ข้อมูลตัวอย่างเป็น placeholder ต้องใช้ checkId ของรอบปัจจุบันที่ระบบสร้าง ห้ามสร้างรหัสหรือระบุ merchantId เอง
ตัวกรอง activity ได้แก่ messageState, imageState, replyStatus, transactionId, startDate, endDate, page และ limit วันที่เป็น YYYY-MM-DD ตามเวลาไทย ค่าเริ่มต้นย้อนหลัง 30 วัน ช่วงสูงสุด 366 วัน และ limit สูงสุด 100
GET /webhooks/facebook และ POST /webhooks/facebook เป็นเส้นทางสำหรับ Meta แยกจาก /api การรับ POST ตรวจ X-Hub-Signature-256 จาก bytes ต้นฉบับและ App Secret ก่อนบันทึก ภาพยังไม่เข้าคิวถ้าเพจไม่ได้ยืนยันรอบปัจจุบัน
callback ของ Meta กับ Signed Webhook ที่ร้านตั้งไว้เป็นคนละช่องทาง ไม่ใช้ verify token ของ Meta หรือ Page token แทน secret ตรวจ HMAC ของ callback ร้านค้า
อ่าน Signed Webhook สำหรับระบบร้านค้า ↗ตรวจความพร้อมก่อนเปิดรับลูกค้า
- ยืนยันสิทธิ์และเงื่อนไขการเปิดแอปให้ลูกค้าจริงกับ Meta ก่อนใช้งาน การทดสอบบัญชีที่มีสิทธิ์ในแอปไม่พิสูจน์ว่าลูกค้าทั่วไปใช้ได้
- ทดสอบสลิปจริงที่ได้รับอนุญาต ทั้งผู้รับตรงและไม่ตรง ยอดเงินนอกช่วง สลิปซ้ำ และข้อความตอบกลับ ตรวจว่ารายการที่ตรวจผ่านถูกตัดเครดิตเพียงครั้งเดียว
- ตรวจ BANK และ TrueMoney แยกกัน ผู้ให้บริการ Wallet ต้องพร้อมและผ่านการทดสอบจริงก่อนเลือก TRUEWALLET หรือรับภาพ Wallet ด้วย AUTO
- ทดสอบการเพิกถอนสิทธิ์หรือเปลี่ยน token กับเพจทดสอบ และตรวจว่ารายการเดิมไม่ย้ายสาขาหรือส่งซ้ำหลังเชื่อมใหม่
- กำหนดผู้รับผิดชอบสถานะ UNKNOWN และการเทียบยอดเข้าบัญชี ห้ามยืนยันรับเงินจากสถานะภาพหรือข้อความตอบกลับเพียงอย่างเดียว
เอกสารอ้างอิง Meta
ขั้นตอนนี้อธิบายพฤติกรรม SlipMatrix ส่วนชื่อเมนู สิทธิ์ App Review และ Graph API version ให้ผู้ดูแลตรวจตามเอกสาร Meta และบัญชีจริงก่อนเปิดใช้งาน
- Meta Messenger Platform · Get started ↗
- Meta Messenger Platform · Webhooks ↗
- Meta · Messenger Platform samples ↗