เริ่มต้น - ทำความเข้าใจ Payment Gateway และ Interface
ยินดีต้อนรับสู่ Workshop การสร้างระบบ Payment Gateway! ในบทแรกนี้ เราจะมาปูพื้นฐานความรู้ที่จำเป็น เพื่อให้คุณเข้าใจภาพรวมของการทำงาน และเตรียมพร้อมสำหรับการสร้างระบบที่รองรับทั้ง Stripe และ PayPal ได้อย่างราบรื่น
Payment Gateway คืออะไร?
ลองนึกภาพว่าคุณกำลังซื้อของออนไลน์บนเว็บไซต์แห่งหนึ่ง เมื่อถึงขั้นตอนการชำระเงิน คุณจะต้องกรอกข้อมูลบัตรเครดิต หรือเลือกช่องทางการชำระเงินอื่นๆ สิ่งที่อยู่เบื้องหลังการทำงานที่ช่วยให้คุณชำระเงินได้อย่างปลอดภัยและราบรื่น ก็คือ Payment Gateway
Payment Gateway เปรียบเสมือน "ประตู" ที่เชื่อมต่อร้านค้าออนไลน์ของคุณกับธนาคาร หรือผู้ให้บริการชำระเงินต่างๆ หน้าที่หลักของมันคือ:
- รับข้อมูลการชำระเงิน: เก็บรวบรวมข้อมูลที่ลูกค้ากรอก เช่น หมายเลขบัตรเครดิต, วันหมดอายุ, รหัส CVV
- เข้ารหัสข้อมูล: ป้องกันข้อมูลสำคัญจากการถูกขโมยระหว่างการส่ง
- ส่งข้อมูลไปยังธนาคาร/ผู้ให้บริการ: ส่งข้อมูลที่เข้ารหัสไปยังธนาคาร หรือผู้ให้บริการชำระเงิน เช่น Stripe, PayPal
- รับผลการอนุมัติ/ปฏิเสธ: รับผลการทำรายการจากธนาคาร/ผู้ให้บริการ ว่าการชำระเงินสำเร็จหรือไม่
- แจ้งผลให้ร้านค้าทราบ: แจ้งผลการทำรายการให้ร้านค้าทราบ เพื่อดำเนินการต่อไป (เช่น ส่งสินค้า, แสดงข้อความขอบคุณ)
พูดง่ายๆ คือ Payment Gateway ช่วยให้ร้านค้าออนไลน์รับเงินจากลูกค้าได้อย่างปลอดภัย โดยไม่ต้องจัดการเรื่องความปลอดภัยของข้อมูลบัตรเครดิตเอง
ความแตกต่างระหว่าง Stripe และ PayPal
Stripe และ PayPal เป็นผู้ให้บริการ Payment Gateway ที่ได้รับความนิยมอย่างมาก แต่ก็มีความแตกต่างกันในหลายๆ ด้าน:
- Stripe:
- เน้นที่การพัฒนา: Stripe มุ่งเน้นไปที่นักพัฒนา (developers) มี API ที่ยืดหยุ่นและสามารถปรับแต่งได้สูง
- บูรณาการที่กำหนดเอง: Stripe ช่วยให้คุณสามารถสร้างประสบการณ์การชำระเงินที่กำหนดเองได้อย่างเต็มที่
- ค่าธรรมเนียม: โดยทั่วไป Stripe จะมีค่าธรรมเนียมที่โปร่งใสและสามารถแข่งขันได้
- รองรับการชำระเงินหลากหลาย: รองรับบัตรเครดิต, บัตรเดบิต และวิธีการชำระเงินอื่นๆ อีกมากมาย
- PayPal:
- เป็นที่รู้จักและน่าเชื่อถือ: PayPal เป็นแบรนด์ที่ผู้บริโภครู้จักและไว้วางใจ
- ง่ายต่อการใช้งาน: PayPal ใช้งานง่าย ทั้งสำหรับร้านค้าและลูกค้า
- มีผู้ใช้จำนวนมาก: PayPal มีฐานผู้ใช้งานขนาดใหญ่ ทำให้ร้านค้าเข้าถึงลูกค้าได้มากขึ้น
- รองรับการชำระเงินด้วยบัญชี PayPal: ลูกค้าสามารถชำระเงินได้โดยใช้บัญชี PayPal ของตนเอง
สรุป: หากคุณต้องการความยืดหยุ่นและการปรับแต่งที่สูง Stripe อาจเป็นตัวเลือกที่ดีกว่า แต่หากคุณต้องการความง่ายในการใช้งานและความน่าเชื่อถือ PayPal อาจเป็นตัวเลือกที่เหมาะสมกว่า
Interface คืออะไร และทำไมต้องใช้?
ก่อนที่เราจะลงมือเขียนโค้ด เรามาทำความเข้าใจแนวคิดของ Interface กันก่อน
ในโลกของการเขียนโปรแกรม Interface คือ "สัญญา" หรือ "พิมพ์เขียว" ที่กำหนดว่าคลาส (class) ต่างๆ จะต้องมีคุณสมบัติ (properties) และเมธอด (methods) อะไรบ้าง
ตัวอย่าง: สมมติว่าเรามี Interface ชื่อ `Animal` ที่กำหนดว่าสัตว์ทุกตัวจะต้องมีเมธอด `makeSound()` และ `eat()`
interface Animal {
public function makeSound(): string;
public function eat(string $food): void;
}
จากนั้น เราสามารถสร้างคลาส `Dog` และ `Cat` ที่ "Implement" Interface `Animal` ได้
class Dog implements Animal {
public function makeSound(): string {
return "Woof!";
}
public function eat(string $food): void {
echo "Dog is eating " . $food;
}
}
class Cat implements Animal {
public function makeSound(): string {
return "Meow!";
}
public function eat(string $food): void {
echo "Cat is eating " . $food;
}
}
ทำไมต้องใช้ Interface?
- Abstraction: Interface ช่วยให้เราซ่อนรายละเอียดการทำงานภายในของคลาส และโฟกัสไปที่พฤติกรรมที่สำคัญ
- Loose Coupling: Interface ช่วยลดการพึ่งพากันระหว่างคลาส ทำให้โค้ดมีความยืดหยุ่นและง่ายต่อการแก้ไข
- Polymorphism: Interface ช่วยให้เราสามารถใช้งานคลาสต่างๆ ที่ Implement Interface เดียวกันได้อย่างสอดคล้องกัน
ใน Workshop นี้ เราจะใช้ Interface เพื่อกำหนดโครงสร้างของ Payment Gateway ของเรา ทำให้เราสามารถสลับสับเปลี่ยนระหว่าง Stripe และ PayPal ได้อย่างง่ายดาย โดยไม่ต้องแก้ไขโค้ดส่วนอื่นๆ ของระบบ
ตัวอย่าง: เราจะสร้าง Interface ชื่อ `PaymentGatewayInterface` ที่กำหนดว่า Payment Gateway ทุกตัวจะต้องมีเมธอด `charge()` เพื่อทำการชำระเงิน
ในบทถัดไป เราจะมาเตรียมความพร้อมสำหรับการพัฒนา โดยการติดตั้ง PHP และ Composer