Facebook Messenger · SlipMatrix

คู่มือเชื่อม Facebook Messenger เพื่อตรวจสลิป

เชื่อมเพจ Facebook กับ SlipMatrix ยืนยัน webhook ตั้งเงื่อนไขผู้รับและยอดเงิน แยกผลตรวจสลิปจากสถานะส่ง Messenger และตรวจความพร้อมก่อนใช้งานจริง

เตรียมบัญชีและสิทธิ์

ใช้เพจ 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

  1. ให้ผู้ดูแลเตรียมบริการ Facebook

    ผู้ดูแล SlipMatrix ต้องตั้งค่า Meta App, App Secret, verify token, Graph API version และ public API URL ฝั่งเซิร์ฟเวอร์ก่อน เจ้าของร้านเพิ่มเพจไม่ได้ขณะบริการยังไม่พร้อม

  2. เพิ่มเพจจาก Merchant Portal

    เปิด Facebook Messenger แล้วเลือกเพิ่มเพจ กรอก Page ID เป็นข้อความและ Page access token ของเพจที่ออกโดยแอปที่ระบบรองรับ เลือกสาขา ประเภทสลิป และยอดเงิน ระบบตรวจตัวตนและสิทธิ์ก่อนบันทึก

  3. ตั้งค่า callback และสมัครรับข้อความ

    คัดลอก URL webhook ที่หน้าเพจแสดงให้ผู้ดูแลตั้งใน Meta พร้อม verify token ของระบบ สมัครรับ events ของเพจสำหรับ messages การตอบ GET challenge สำเร็จอย่างเดียวยังไม่เปิดรับภาพสลิป

  4. ส่งรหัสทดสอบจากบัญชีบุคคล

    กดสร้างรหัสทดสอบ แล้วส่งข้อความ SLIPMATRIX-SETUP ที่แสดงทั้งหมดไปยังเพจจากบัญชีบุคคลภายใน 10 นาที อย่าส่งเป็นข้อความตอบจากตัวเพจ รหัสนี้ไม่ใช้เครดิตและไม่ใช่สลิปสำหรับตรวจยอดเงิน

  5. ยืนยันแล้วทดสอบภาพสลิป

    กดโหลดสถานะใหม่ เมื่อพบรหัสแล้วกดยืนยันการเชื่อมต่อ ระบบตรวจว่าแอปสมัครรับข้อความของเพจอยู่ รอแสดงพร้อมรับสลิปตามประเภทที่เลือก แล้วทดสอบภาพและข้อความตอบกลับกับผู้ให้บริการจริงก่อนเปิดให้ลูกค้าใช้

เปิดหน้าตั้งค่า Facebook ใน Merchant Portal ↗

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

เลือกประเภทสลิปและเงื่อนไข

BANK
อ่าน QR ธนาคารจากภาพ แล้วตรวจธุรกรรมผ่านบริการธนาคาร ภาพต้องอ่าน QR ได้ชัดเจน
TRUEWALLET
ส่งภาพให้ผู้ให้บริการ TrueMoney ที่ตั้งค่าไว้โดยตรง ต้องมีผู้ให้บริการพร้อมใช้งาน ไม่ใช่การตรวจธุรกรรมจาก SCB
AUTO
ลองอ่าน QR ธนาคารก่อน หากไม่พบเลขอ้างอิงธนาคารจึงใช้ Wallet เมื่อพร้อมใช้งาน ภาพที่ไม่ใช่สลิปอาจใช้โควตาผู้ให้บริการ จึงควรทดสอบชนิดภาพที่ร้านรับ

ภาพจาก Facebook รองรับ JPEG, PNG, WebP และ GIF ไม่เกิน 4 MiB และ 12 ล้านพิกเซลรวมทุกเฟรม ระบบตรวจชนิดและอ่านภาพจริง ไม่ใช้ข้อความธรรมดาหรือไฟล์เอกสารเป็นสลิป

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

ตั้งผู้รับและเวลาโอนที่ตั้งค่าร้านค้า เงื่อนไขร้านกับเพจต้องผ่านทั้งสองชั้น การไม่กำหนดผู้รับไม่แปลว่าระบบยืนยันผู้รับถูกต้อง ชื่อหรือเลขท้ายที่ถูกปิดบังไม่ใช่หลักฐานอนุญาตผู้รับ

Facebook รับภาพเป็นคำขอตรวจสลิปแยกต่างหาก ยังไม่รองรับการแนบ orderId เพื่อปิดออเดอร์ธนาคารหรือ Wallet อัตโนมัติ

แยกผลตรวจจากผลส่งกลับ

  1. 1ประมวลผลภาพ
  2. 2ผลตรวจสลิป
  3. 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
อ่านประวัติภาพ ผลตรวจ และผลส่งกลับ ไม่มีคำสั่งส่งซ้ำ
ตัวอย่าง body เพิ่มเพจ · ข้อมูล placeholder
{
  "pageId": "12345678901234567890",
  "accessToken": "REPLACE_WITH_PAGE_TOKEN_FROM_CONFIGURED_APP",
  "branchId": null,
  "verificationRail": "BANK",
  "expectedAmount": "150.50",
  "minAmount": "100.00",
  "maxAmount": "200.00"
}
ตัวอย่าง body ยืนยันรอบปัจจุบัน
{
  "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 และบัญชีจริงก่อนเปิดใช้งาน

เริ่มด้วยเพจทดสอบ ก่อนเปิดรับสลิปจากลูกค้า

เปิดหน้าตั้งค่า Facebook ใน Merchant Portal ↗คู่มือตรวจสลิป