LOSLES - ระบบชำระเงินอัตโนมัติที่ใช้จำนวนเงินเป็นตัวระบุการชำระเงินโดยตรง
(github.com/ai1023dev)ผมได้สร้างและเผยแพร่ระบบประมวลผลการชำระเงินแบบโอเพนซอร์สชื่อ LOSLES ในฐานะโปรเจกต์ส่วนตัว
แนวคิดหลักของโปรเจกต์นี้คือ "ตรวจจับการโอนเงินเข้าบัญชี + ใช้จำนวนเงินนั้นเองเหมือนเป็นรหัสคำสั่งซื้อ"
โดยทั่วไป การชำระเงินผ่านการโอนเข้าบัญชีมักต้องผ่านกระบวนการดังต่อไปนี้
- สมัครผู้ให้บริการ PG
- จดทะเบียนธุรกิจ
- ผ่านการตรวจพิจารณา
- เชื่อมต่อ API
- มีค่าธรรมเนียมการชำระเงิน
- รอการโอนยอดชำระ
สำหรับนักพัฒนาเดี่ยวหรือโปรเจกต์ขนาดเล็ก สิ่งเหล่านี้มักเป็นภาระไม่น้อย
จึงเกิดแนวคิดว่า "เราจะระบุคำสั่งซื้อได้จากจำนวนเงินเพียงอย่างเดียวหรือไม่?" และได้สร้างระบบนี้ขึ้นมา
ตัวอย่างเช่น หากราคาสินค้าอยู่ที่ 10,000 วอน
คำสั่งซื้อแรก:
10,000 วอน
คำสั่งซื้อที่สองของสินค้าชิ้นเดียวกันภายใน 30 นาที:
9,999 วอน
คำสั่งซื้อที่สาม:
9,998 วอน
คำสั่งซื้อที่สี่:
9,997 วอน
...
ระบบจะกำหนดจำนวนเงินเฉพาะให้กับแต่ละคำสั่งซื้อในลักษณะนี้
(ในการใช้งานจริง จะเริ่มจากส่วนลด 99 วอน แล้วหักเป็น 98 วอน, 97 วอน, 96 วอน... ตามลำดับ)
ดังนั้นฝั่งเซิร์ฟเวอร์จึงสามารถระบุได้ว่าเป็นคำสั่งซื้อใดจากจำนวนเงินเพียงอย่างเดียว โดยไม่ต้องให้กรอกเลขคำสั่งซื้อแยกต่างหาก
แอป LOSLES Android มีหน้าที่ตรวจจับการแจ้งเตือนการเติมเงินของ KakaoPay และส่งข้อมูลไปยังเซิร์ฟเวอร์ภายนอกโดยอัตโนมัติ
แอปใช้สิทธิ์เข้าถึงการแจ้งเตือนของ Android (Notification Listener) เพื่อตรวจสอบการแจ้งเตือนจากแอป KakaoTalk และ KakaoPay แบบเรียลไทม์
เมื่อได้รับการแจ้งเตือนที่มีจำนวนเงินเติมเข้า ระบบจะดึงจำนวนเงินนั้นออกมาและส่งคำขอ POST ไปยัง URL ของเซิร์ฟเวอร์ที่ตั้งค่าไว้
เมื่อนำไปใช้ร่วมกับ LOSLES WEB Server ก็จะสามารถทำให้กระบวนการตั้งแต่ผู้ใช้โอนเงินไปจนถึงการประมวลผลว่าชำระเงินเสร็จสมบูรณ์เป็นแบบอัตโนมัติได้
โฟลว์ทั้งหมด
- ผู้ใช้สร้างคำสั่งซื้อ
- เซิร์ฟเวอร์กำหนดจำนวนเงินเฉพาะ
- ผู้ใช้โอนเงินเข้าบัญชีตามจำนวนดังกล่าว (ปัจจุบันรองรับเฉพาะ KakaoPay)
- แอป Android ตรวจจับการแจ้งเตือนการเติมเงิน
- ส่งจำนวนเงินไปยังเซิร์ฟเวอร์
- เซิร์ฟเวอร์จับคู่จำนวนเงินกับคำสั่งซื้อ
- ประมวลผลการชำระเงินเสร็จสิ้นโดยอัตโนมัติ
กล่าวคือ
ไม่ใช่ยึดตาม "ใครเป็นคนส่ง"
แต่ยึดตาม "ส่งมาเป็นจำนวนเท่าไร" เพื่อใช้ระบุการชำระเงิน
ข้อควรระวัง
ประเด็นสำคัญคือ LOSLES ไม่ใช่โปรเจกต์ที่ต้องการมาแทนที่ผู้ให้บริการ PG อย่างเป็นทางการ
สำหรับบริการขนาดใหญ่ ความสามารถด้านการคืนเงิน การโอนยอดชำระ ใบเสร็จ การจัดการข้อพิพาท และฟังก์ชันด้านความปลอดภัยที่ผู้ให้บริการ PG มอบให้นั้นยังคงมีความสำคัญ
อย่างไรก็ตาม สำหรับโปรเจกต์ส่วนตัวหรือการขายคอนเทนต์ดิจิทัลขนาดเล็ก
สถานการณ์ที่ว่า "แค่จะรับชำระเงินก็ต้องเริ่มตั้งแต่จดทะเบียนธุรกิจแล้วไปจนถึงผ่านการตรวจของ PG"
ทำให้รู้สึกว่าหนักเกินไป
จึงเป็นโปรเจกต์ที่ทดลองวิธีทำระบบชำระเงินอัตโนมัติโดยไม่ต้องผ่านกระบวนการดังกล่าว
ขณะนี้ยังอยู่ในเวอร์ชันเบต้าและกำลังเปิดรับฟีดแบ็ก
โดยเฉพาะอยากขอความเห็นในประเด็นด้านล่างนี้
- ปัญหาของวิธีระบุตัวตนด้วยจำนวนเงิน
- วิธีจัดการคำสั่งซื้อซ้ำ
- ไอเดียในการปรับปรุงความปลอดภัย
- ความเห็นจากผู้ที่มีประสบการณ์ใช้งานจริง
ขอบคุณครับ
6 ความคิดเห็น
ตัวอย่างเช่น ถ้าในร้านอาหารที่ซุปกิมจิก็ 10,000 วอน และซุปเต้าเจี้ยวก็ 10,000 วอน มีออเดอร์ 10,000 วอนเข้ามา แบบนี้ก็จะแยกไม่ออกใช่ไหมครับว่าสั่งเมนูไหน?
แม้จะเป็นสินค้าคนละชิ้นแต่ราคาเท่ากัน ก็จำเป็นต้องตั้งส่วนลดให้ต่างกันทีละ 1 วอนด้วย เวลาใช้งานจริง ระบบจะไม่ได้ลงทะเบียนสินค้าไว้บนเซิร์ฟเวอร์ LosLes แต่จะดูราคาปกติของสินค้าแล้วปรับส่วนลดให้แตกต่างกันเอง
งั้นก็ต้องขายสินค้าเดียวกันซ้ำ ๆ ในราคาที่ต่างกันเหรอ?
ถูกครึ่งหนึ่งผิดครึ่งหนึ่ง คือราคาปกติ 10,000 วอนนั้นเหมือนกัน
แต่คำขอชำระเงินครั้งแรกภายใน 30 นาทีจะลด 99 วอน
คำขอชำระเงินครั้งที่สองภายใน 30 นาทีจะลด 98 วอน เป็นลักษณะนี้ครับ ดูเหมือนว่าในบทความจะสื่อสารได้ไม่ชัดเจนนัก
ถ้าลูกค้าส่งเงินผิดพลาด การจับคู่ก็คงพังเลยนะครับ
นั่นเป็นข้อเสียที่ใหญ่ที่สุดจริง ๆ
โครงการขนาดเล็กที่สามารถติดต่อสอบถามทาง DM ด้วยตนเองได้ก็อาจจะโอเค
แต่สำหรับบริษัทใหญ่ ๆ ดูเหมือนว่าทำสัญญากับผู้ให้บริการ PG แล้วใช้งานจะดีกว่า