การเชื่อมโยงระบบ POS กับ Loga

Mathisa Makhanuwong
Loga App
Published in
4 min readMar 7, 2019

--

ร้านที่มีระบบ Point-of-Sales (POS) ที่รองรับการขายและออกใบเสร็จให้ลูกค้าอยู่แล้ว หากมีความประสงค์จะใช้งาน Loga ร่วมกับ POS ที่มีอยู่ สามารถทำได้โดย ปรับระบบ POS ให้เชื่อมโยงกับระบบ Loga ผ่าน Loga API บทความนี้จะอธิบายรายละเอียดวิธีการเชื่อมโยง สำหรับการใช้งานในรูปแบบต่างๆ

เตรียมการเบื้องต้น

การแสดงตัวอย่างทั้งหมดในบทความนี้ จะใช้ บัตรทดสอบ ซึ่งเป็นบัตรสมาชิกที่มีอยู่จริงในแอป Loga ซึ่งท่านสามารถสมัครเป็นสมาชิกได้โดยไม่เสียค่าใช้จ่ายจาก QR code ในภาพด้านล่าง หรือถ้าท่านยังใหม่กับ Loga โปรดดู ​​ทดลองใช้งานจริง

เริ่มต้นด้วย Login

ในการเรียกใช้งานฟังก์ชั่นใดๆ ของ Loga API ท่านจะต้อง Login เข้าสู่ระบบในฐานะร้านค้าก่อน โดยท่านจะต้องเตรียมบัญชีผู้ใช้และรหัสผ่านในฐานะร้านค้า ซึ่งคือบัญชีผู้ใช้ Longdo.com ของท่าน ที่ท่านใช้ตอนสมัครเป็นร้านค้าใน Loga (ซึ่งอาจจะเป็นตัวเดียวกันหรือคนละตัวกับ บัญชีผู้ใช้ในฐานะผู้ใช้ ในหัวข้อก่อนหน้านี้ก็เป็นได้)

เพื่อความสะดวก ในบทความนี้จะใช้บัญชีผู้ใช้ทดสอบ ชื่อ carddemo

การ Login สามารถทำได้โดยการเรียก service login ของ Loga API โดยมีตัวแปรที่สำคัญที่ต้องส่งไป คือ

  • user ชื่อบัญชีผู้ใช้ของร้านค้า เช่น carddemo
  • pass รหัสผ่าน เข้ารหัสด้วย MD5 เช่น longdocards1234 เข้ารหัสแล้วจะกลายเป็น c8eda2afe10aa5ac8ef0fd0af8389fdf
  • uuid unique ID ที่ระบุถึงตัว device ที่เรียกใช้ (ซึ่งไม่ควรจะซ้ำกัน ในกรณีที่เรียกใช้จากหลายเครื่อง) ซึ่งท่านสามารถกำหนดเป็นค่าอะไรก็ได้ ตัวอย่าง เช่น pos_station_1

ตัวอย่างการเรียก service login
https://card.longdo.com/api/main/login?user=carddemo&pass=c8eda2afe10aa5ac8ef0fd0af8389fdf&uuid=pos_station_1

หลังจากที่ Login แล้ว จะได้ผลลัพธ์ในรูปแบบ JSON ตัวอย่าง เช่น {“code”:200,”msg”:”ok”,”data”:{“token”:”9ca98513a374721298653cc13f8a48d965431bc6",”mid”:”1",”name”:”Longdo.COM”,”position”:”S”,”store_id”:”0"}}
ซึ่งมีสิ่งที่สำคัญคือ Token 9ca98513a374721298653cc13f8a48d965431bc6 ซึ่งให้เก็บค่าไว้ใช้เรียก web service อื่นๆ ต่อไป

การพิมพ์ตั๋วแต้ม

เมื่อลูกค้ามีการใช้จ่ายที่ร้าน และร้านค้าต้องการให้แต้มแก่ลูกค้า วิธีหนึ่งที่ทำได้ คือ ให้ระบบ POS พิมพ์ QR Code ของตั๋วแต้ม ต่อท้ายในใบเสร็จที่มอบให้แก่ลูกค้าเลย ลักษณะจะเป็นคล้ายตัวอย่างในภาพด้านล่าง และลูกค้าสามารถเปิดแอป Loga ขึ้นมากดสแกนเพื่อรับแต้มจากตั๋วแต้มดังกล่าวได้ โดยตั๋วแต้ม 1 ใบ จะสามารถใช้ได้เพียง 1 ครั้ง ไม่สามารถใช้ซ้ำได้

การพิมพ์ตั๋วแต้ม QR สำหรับรับแต้มในใบเสร็จ มีข้อดีคือ ผู้ใช้ที่ยังไม่ได้ติดตั้งแอป สามารถนำใบเสร็จกลับไปค่อยๆ ลองทำที่บ้านได้ ไม่เกิดการล่าช้าที่แคชเชียร์
วิธีการสร้างตั๋วแต้ม QR ดังกล่าว คือ ให้ระบบ POS เรียก service create_ticket โดยมีตัวแปรที่จะต้องส่งดังนี้

  • card_id รหัสบัตรสมาชิกของร้านค้าท่าน ซึ่งจะได้ตอนสร้างบัตรสมาชิก ตัวอย่าง เช่น บัตรทดสอบ มีค่า card_id 44
  • amount จำนวนแต้มที่จะมอบให้กับลูกค้า เช่น 8
  • token ค่า Token ที่ได้จากการเรียก service login ก่อนหน้านี้
  • uuid unique ID ที่ระบุถึงตัว device ที่เรียกใช้ เช่น pos_station_1

ตัวอย่างการเรียกใช้ service create_ticket ดังนี้
https://card.longdo.com//api/points/create_ticket?card_id=44&amount=1&token=9ca98513a374721298653cc13f8a48d965431bc6&uuid=pos_station_1
ผลลัพธ์ที่ได้ คือ ค่า Serial สำหรับ QR Code ที่จะพิมพ์ออกในใบเสร็จ ตัวอย่างผลลัพธ์ เช่น

{“code”:200,”msg”:”ok”,”data”:{“serial”:”5268083668312354"}}

ค่า serial ที่ได้ (5268083668312354) ให้นำมาเติมด้านหน้าด้วย TK: ให้กลายเป็น TK:5268083668312354 แล้วนำไปสร้างเป็นรหัส QR Code พิมพ์ออกต่อท้ายในใบเสร็จสำหรับให้ลูกค้า ตามตัวอย่าง ดังภาพ

การระบุตัวตนลูกค้า

ลูกค้าที่ลงแอปลองดูการ์ดหรือ Custom App ของร้านค้าท่าน และเข้าสู่ระบบเรียบร้อยแล้ว จะมีเลข id ประจำตัว เรียกว่า uid (User ID) อยู่ ซึ่งหากระบบ POS ต้องการทราบหมายเลข uid อันนี้ สามารถขอให้ลูกค้าเปิดหน้าจอบัตรสมาชิกร้านของท่านในแอป ซึ่งจะมีรหัส QR code ที่มีค่าเลข uid อยู่ แล้วเจ้าหน้าที่ร้านใช้อุปกรณ์ Bar code reader อ่านค่า QR code จากหน้าจอของลูกค้า ตามตัวอย่างหน้าจอดังภาพ

การสแกน QR code จากหน้าจอลูกค้า จะได้ผลลัพธ์ เช่น
c1:266099:5BA9:219:A7KFOWYJ:311322
ซึ่งมีค่าที่สำคัญที่เราสนใจ คือ รหัสประจำตัวผู้ใช้ uid ซึ่งจะอยู่ในคอลัมน์ที่สอง จากตัวอย่างข้างต้น ค่า uid จะเป็น 266099 ซึ่งระบบ POS สามารถเก็บค่านี้ไว้ เพื่อใช้ในการดึงข้อมูลเพิ่มเติมเกี่ยวกับผู้ใช้, ให้หรือตัดแต้ม, และอื่นๆ ต่อไป

การให้แต้ม

นอกเหนือจากวิธีการพิมพ์ตั๋วแต้ม QR, ระบบ POS สามารถเพิ่มแต้มให้ลูกค้าได้โดยตรงเข้าสู่แอปของลูกค้าเลย โดยขั้นแรกให้ลูกค้าเปิดหน้าจอบัตรสมาชิกร้านของท่านในแอป Loga แล้วทางร้านใช้ QR reader เพื่อระบุตัวตนให้ได้ uid ของลูกค้าก่อนตามที่อธิบายไปในหัวข้อก่อนหน้านี้
จากนั้นให้เรียก service add_customer_point เพื่อเพิ่มแต้มให้ลูกค้า โดยต้องส่งพารามิเตอร์ดังต่อไปนี้

  • card_id รหัสบัตรสมาชิกของร้านค้าท่าน ซึ่งจะได้ตอนสร้างบัตรสมาชิก ตัวอย่าง เช่น บัตรทดสอบ มีค่า card_id 44
  • cuid รหัสประจำตัวผู้ใช้ uid ของลูกค้าที่เราต้องการจะให้แต้ม ที่ได้จากการสแกนหน้าจอลูกค้า เช่น 266099
  • point จำนวนแต้มที่จะมอบให้กับลูกค้า
  • remark ข้อความหมายเหตุซึ่งจะปรากฎในหน้าจอของลูกค้า

ตัวอย่างการเรียก service เพื่อให้คะแนน 8 แต้ม แก่ผู้ใช้ carddemo โดยมีรายละเอียดว่า “From POS” เป็นดังนี้
https://card.longdo.com/api/points/add_customer_point?card_id=44&point=8&remark=From%20POS&cuid=266099&token=9ca98513a374721298653cc13f8a48d965431bc6&uuid=pos_station_1

หลังจากที่เรียก service แล้ว ที่หน้าจอลูกค้าจะปรากฎรายการได้รับแต้มเพิ่มขึ้นมาตามตัวอย่างดังภาพ

การใช้แต้ม

เมื่อลูกค้าขอใช้แต้มแลกของรางวัลกับทางร้าน ระบบ POS สามารถสั่งตัดแต้มโดยตรงจากลูกค้าได้โดยการเรียก service bulk_use_point โดยต้องส่งพารามิเตอร์ดังต่อไปนี้ (ระวัง: ฟังก์ชั่นนี้รับค่าที่ส่งเป็น array ดังนั้นจึงต้องมีตัวอักษร [] ต่อท้ายชื่อตัวแปร)

  • card_id รหัสบัตรสมาชิกของร้านค้าท่าน ซึ่งจะได้ตอนสร้างบัตรสมาชิก ตัวอย่าง เช่น บัตรทดสอบ มีค่า card_id 44
  • cuid[] รหัสประจำตัวผู้ใช้ uid ของลูกค้าที่เราต้องการจะให้แต้ม ที่ได้จากการสแกนหน้าจอลูกค้า เช่น 266099
  • point[] จำนวนแต้มที่จะหักจากลูกค้า
  • remark[] ข้อความหมายเหตุซึ่งจะปรากฎในหน้าจอของลูกค้า

ตัวอย่างการเรียก service เพื่อตัดแต้ม 4 แต้มจากลูกค้า เพื่อแลกของรางวัลสมมติชื่อ “Test Reward 1” เป็นดังนี้
https://card.longdo.com/api/points/bulk_use_point?card_id=44&point[]=1&remark[]=Test%20Reward%201&cuid[]=266099&token=9ca98513a374721298653cc13f8a48d965431bc6&uuid=pos_station_1
เมื่อลูกค้าเปิดแอปขึ้นมาดูจะพบรายการตัดแต้มดังต่อไปนี้

การดูรายละเอียดลูกค้า

ร้านค้าสามารถขอทราบรายละเอียดของลูกค้าได้ โดยให้ลูกค้าแสดงหน้าจอ App แล้ว Scan QR เพื่อดึงข้อมูล รหัสประจำตัวผู้ใช้ uid ของลูกค้า หลังจากนั้น สามารถเรียกดึงข้อมูลรายละเอียดพื้นฐานของผู้ใช้แอปที่เป็นสมาชิกบัตรของร้านได้ผ่าน service get_customer_info โดยส่งพารามิเตอร์ดังต่อไปนี้

  • card_id รหัสบัตรสมาชิกของร้านค้าท่าน ซึ่งจะได้ตอนสร้างบัตรสมาชิก ตัวอย่าง เช่น บัตรทดสอบ มีค่า card_id 44
  • cuid รหัสประจำตัวผู้ใช้ uid ของลูกค้า เช่น 266099 หรือ หมายเลขโทรศัพท์ของลูกค้า เช่น 0811234567

ตัวอย่างการเรียก service get_customer_info โดยระบุ uid (ซึ่งได้จากการสแกนหน้าจอแอปลูกค้า)
https://card.longdo.com/api/main/get_customer_info?card_id=44&cuid=266099&token=9ca98513a374721298653cc13f8a48d965431bc6&uuid=pos_station_1

ตัวอย่างการเรียก service get_customer_info โดยระบุหมายเลขโทรศัพท์มือถือของลูกค้า
https://card.longdo.com/api/main/get_customer_info?card_id=44&cuid=0811234567&token=9ca98513a374721298653cc13f8a48d965431bc6&uuid=pos_station_1

ผลลัพธ์ที่ได้ จะเป็นรายละเอียดต่างๆ เกี่ยวกับผู้ใช้ ในรูปแบบ JSON เช่น

  • mail อีเมล์
  • fname ชื่อผู้ใช้
  • level และ level_text ระดับชั้นของผู้ใช้ เช่น 0 — Standard, 1 — VIP ซึ่งแล้วแต่ร้านค้าจะเป็นผู้กำหนดเอง

ตัวอย่างผลลัพธ์ของ service get_customer_info (ดูบริเวณที่มีการ hi-light)

การเปลี่ยนระดับลูกค้า

Loga มีฟีเจอร์ที่ร้านค้าสามารถตั้งค่าบัตรสมาชิกให้มีหลายระดับได้ เช่น Standard, VIP เพื่อสิทธิ์ประโยชน์ที่ต่างกัน เช่น สมาชิกทุกคนเริ่มต้นจะอยู่ที่ระดับ Standard และหากถ้าใช้จ่ายครบตามยอดที่กำหนด หรือเมื่อชำระค่าธรรมเนียมเพิ่มเติม ก็จะเปลี่ยนไปอยู่ในระดับ VIP ที่สูงขึ้น ได้รับสิทธิ์ประโยชน์ที่สูงขึ้น เป็นต้น

เมื่อร้านค้าต้องการเปลี่ยนระดับลูกค้า สามารถเรียกใช้ service set_customer_profile และระบุค่า level ให้เป็นระดับที่สูงขึ้น โดยต้องใส่พารามิเตอร์เพิ่มเติมดังนี้

  • cuid รหัสประจำตัวผู้ใช้ uid ของลูกค้า เช่น 266099 หรือ หมายเลขโทรศัพท์ของลูกค้า เช่น 0811234567
  • level ระดับลูกค้าที่ต้องการเปลี่ยนให้เป็น (เป็นค่า level id เช่น 0, 1, 2)

ตัวอย่างการเรียก service get_customer_info โดยตั้งให้ผู้ใช้หมายเลข 266099 เปลี่ยนระดับเป็น VIP (level id = 1)
https://card.longdo.com/api/main/set_customer_profile?card_id=44&cuid=266099&token=9ca98513a374721298653cc13f8a48d965431bc6&uuid=pos_station_1&level=1

--

--