ภาพรวม
ScanFood API ให้ระบบของคุณอ่านข้อมูลที่เครื่องขายหน้าร้าน ScanFood บันทึกไว้อยู่แล้ว ทั้งข้อมูลสาขา บิลที่ปิดแล้ว และสมาชิกสะสมแต้ม เป็น API แบบอ่านอย่างเดียว ยืนยันตัวตนด้วยกุญแจ API ใบเดียว และออกแบบมาให้ดึงเป็นรอบ ไม่ได้ออกแบบมาให้ควบคุมเครื่องขาย
ทุกคำขอยิงไปที่ base URL เดียว
https://api.scanfood.co/extเลขเวอร์ชันเป็นส่วนหนึ่งของเส้นทางแต่ละเส้น URL เต็มจึงเป็นรูป
https://api.scanfood.co/ext/v1/shops
ใช้ทำอะไรได้บ้าง
หัวข้อที่มีชื่อว่า “ใช้ทำอะไรได้บ้าง”- ส่งออกเข้าระบบบัญชีและภาษี ดึงบิลที่ปิดแล้วของเมื่อวาน พร้อมเลขใบเสร็จ เลขใบกำกับภาษี ยอด VAT และการแยกช่องทางรับเงิน เข้าโปรแกรมบัญชีของคุณ
- รายงานและ BI โหลดบิลเข้าคลังข้อมูล แล้วดูแยกตามสาขา เครื่อง ช่องทางขาย หรือสินค้า
- รวมยอดระดับแฟรนไชส์ กุญแจระดับแฟรนไชส์ใบเดียวอ่านได้ทุกสาขา สำนักงานใหญ่จึงรวมยอดทั้งกลุ่มได้เองโดยไม่ต้องไล่ขอไฟล์จากแต่ละร้าน
- สมาชิกและ CRM อ่านข้อมูลสมาชิก แต้ม เครดิตร้าน ระดับ และคูปอง แล้วจับคู่กับบิลที่สมาชิกคนนั้นปรากฏอยู่
ขอบเขตของ API
หัวข้อที่มีชื่อว่า “ขอบเขตของ API”| ทรัพยากร | เส้น | คืนอะไร |
|---|---|---|
| สาขา | GET /v1/shops |
ทุกสาขาที่กุญแจใบนี้อ่านได้ พร้อมเขตเวลาและแบรนด์สมาชิกของสาขานั้น |
| รายการขาย | GET /v1/transactions · GET /v1/transactions/{id} |
บิลที่ปิดแล้วของร้านหนึ่งร้าน ทั้งรายการสินค้า ยอดเงิน การรับเงิน และสถานะ |
| สมาชิก | GET /v1/members · GET /v1/members/{memberToken} · GET /v1/members/lookup |
สมาชิกของแบรนด์หนึ่งแบรนด์ ทั้งแต้ม เครดิต ระดับ คูปอง และจำนวนครั้งที่มาใช้บริการ และโทเคนสมาชิกที่อยู่เบื้องหลัง LINE user id ที่คุณถืออยู่แล้ว |
| สเปก | GET /v1/openapi.json |
ตัวสัญญาที่เครื่องอ่านได้ เป็นเส้นเดียวที่ไม่ต้องใช้กุญแจ |
มีสองอย่างที่จริงเสมอทุกเส้น
- อ่านอย่างเดียวสำหรับข้อมูลของคุณ ทุกเส้นเป็น
GETไม่มีคำขอไหนสร้าง แก้ หรือลบ ข้อมูลของร้านได้ คำขอเดิมจึงยิงซ้ำได้อย่างปลอดภัยเสมอ ส่วนตัวคำขอเองเราบันทึกไว้ ทั้งเวลาที่ใช้กุญแจครั้งล่าสุด ตัวนับโควตารายวัน และสมุดคำขอ ซึ่งเก็บรหัสกุญแจ เส้นทาง ข้อความ query สถานะ จำนวนแถว และเวลาที่ใช้ เก็บไว้ 90 วันเพื่อใช้ช่วยเหลือผู้ใช้และรับมือการใช้งานผิดวัตถุประสงค์ ส่วนรหัสลับของกุญแจไม่ถูกเก็บไว้ - ดึงเอง ไม่มีการส่งกลับ คุณเป็นคนกำหนดว่าจะถามเมื่อไหร่ จังหวะที่ใช้กันทั่วไปคือ ทุก 15 นาทีสำหรับบิล และวันละครั้งสำหรับสมาชิก
สิ่งที่ยังไม่รองรับ
หัวข้อที่มีชื่อว่า “สิ่งที่ยังไม่รองรับ”บอกขอบเขตให้ชัดตั้งแต่ต้น ประหยัดเวลาถามกลับไปหนึ่งรอบ
- เขียนข้อมูลไม่ได้ สร้างบิล ยกเลิกบิล หรือแก้ข้อมูลสมาชิกผ่าน API นี้ไม่ได้
- ไม่มี webhook และไม่มีการแจ้งเตือนกลับ ไม่มีอะไรวิ่งไปหาเซิร์ฟเวอร์ของคุณ คุณเป็นฝ่ายดึงเอง
- เรียกจากเบราว์เซอร์ไม่ได้ คำขอข้ามโดเมนถูกปฏิเสธโดยเจตนา เพราะกุญแจที่ไปโผล่ในเบราว์เซอร์คือกุญแจที่หลุดไปแล้ว
- ไม่มีเส้นทะเบียนสินค้า สต็อก หรือ SKU รายการบนบิลมีรหัสสินค้าให้จับคู่กับแคตตาล็อกของคุณ แต่ไม่มี SKU และไม่มีบาร์โค้ด
- ไม่มีข้อมูลต้นทุนและสูตรวัตถุดิบ ต้นทุนต่อหน่วยและสูตรอาหารไม่ออกจาก ScanFood โดยนโยบาย
- ไม่มีรายการคืนเงินแยกต่างหาก การคืนเงินหน้าร้านคือการยกเลิกบิล
บิลนั้นจะกลับมาพร้อม
status: "void" - ไม่มีการแบ่งกลุ่มสมาชิกสำเร็จรูป คุณจะได้จำนวนครั้งที่มา วันที่มาล่าสุด และบิลทั้งหมด ส่วนเกณฑ์การแบ่งกลุ่มเป็นของคุณเอง
- ไม่มีระบบทดสอบแยก กุญแจทุกใบเป็นกุญแจจริงและอ่านข้อมูลจริงของคุณเอง ดูวิธีทดลองอย่างปลอดภัยที่ ข้อมูลสำหรับทดสอบ
- การซิงก์เฉพาะส่วนที่เปลี่ยนของสมาชิกยังไม่เปิด ฝั่งบิลใช้
updatedSinceได้ แต่ฝั่งสมาชิกต้องอ่านใหม่ทั้งชุด ดู การแบ่งหน้าและการซิงก์
การกำหนดเวอร์ชัน
หัวข้อที่มีชื่อว่า “การกำหนดเวอร์ชัน”เวอร์ชันอยู่ในเส้นทาง ทุกเส้นวันนี้อยู่ใต้ /v1/ ภายในเวอร์ชันเดียวกัน เราอาจ เพิ่ม
ช่องข้อมูลในผลลัพธ์ หรือรับพารามิเตอร์ ตัวเลือกใหม่ ซึ่งทั้งสองอย่างไม่ทำให้ระบบที่มองข้าม
สิ่งที่ไม่รู้จักพังลง
วิธีเขียนโค้ดให้ทนต่อการเพิ่มของ
- อ่านช่องข้อมูลด้วยชื่อ อย่ายึดลำดับหรือจำนวนช่อง
- แตกสาขาที่รหัส
errorไม่ใช่ที่ข้อความmessageเพราะข้อความเปลี่ยนได้ตลอด - ถือว่าค่าอย่าง
channel.codeเป็นสตริงเปิด ร้านเพิ่มช่องทางขายใหม่เมื่อไหร่ก็ได้
การเปลี่ยนที่ทำให้ของเดิมพังจะออกเป็นเส้นทางเวอร์ชันใหม่ ไม่ใช่การแก้ /v1/ เงียบ ๆ
สัญญาฉบับปัจจุบันดาวน์โหลดได้เสมอที่ GET /v1/openapi.json ซึ่งไม่ต้องใช้กุญแจ
ขั้นต่อไป
หัวข้อที่มีชื่อว่า “ขั้นต่อไป”- เริ่มใช้งานใน 5 นาที ยิงคำขอแรกให้ผ่าน
- การยืนยันตัวตน กุญแจและขอบเขตทำงานอย่างไร
- โครงสร้างข้อมูลและรหัสอ้างอิง รหัสต่าง ๆ ผูกกันอย่างไร
- เอกสารอ้างอิง API ทุกเส้น ทุกพารามิเตอร์ ทุกช่องข้อมูล