# PromptPay API คืออะไร? คู่มือเชื่อม QR Payment Laravel + Next.js สำหรับ SME ไทย 2026
ในยุคที่คนไทยใช้ QR Payment ในชีวิตประจำวันถึงกว่า 80% ของธุรกรรมรายย่อย PromptPay ได้กลายเป็นโครงสร้างพื้นฐานทางการเงินที่ไม่มีร้านค้าหรือเจ้าของธุรกิจออนไลน์รายไหนปฏิเสธได้ การฝัง QR Payment ลงบนหน้าจอชำระเงินช่วยลดต้นทุนค่าธรรมเนียม Credit Card 2-3% ให้เหลือเพียง 0% สำหรับธุรกรรมต่ำกว่า 2,000 บาท และลด Cart Abandonment ได้สูงสุด 15-20%
แต่เจ้าของธุรกิจ SME จำนวนมากยังเข้าใจผิดว่า PromptPay ใช้ได้แค่ใน Mobile Banking App เท่านั้น ความจริงคือธนาคารทุกแห่งในไทยเปิด Open API ให้นักพัฒนาเชื่อมต่อ PromptPay เข้ากับระบบของตัวเองได้แล้ว ตั้งแต่ปี 2024-2025 เป็นต้นมา ทำให้สตาร์ทอัพและ SME สามารถสร้าง Checkout Experience แบบ End-to-End ได้โดยไม่ต้องพึ่ง Payment Gateway ที่มีค่าธรรมเนียมสูง
บทความนี้จะอธิบายตั้งแต่แนวคิดของ PromptPay พื้นฐาน, สถาปัตยกรรมการเชื่อม API, ตัวอย่างโค้ด Laravel + Next.js และวิธีจัดการ Webhook + Reconciliation อย่างปลอดภัยสำหรับธุรกิจ SME ไทยในปี 2026
PromptPay พื้นฐานและประเภทการเชื่อมต่อ
PromptPay เป็นระบบโอนเงินแบบ Real-time พัฒนาโดย ITMX ภายใต้การกำกับของธนาคารแห่งประเทศไทย (BOT) รองรับการรับชำระเงินผ่าน 3 รูปแบบหลัก ได้แก่ PromptPay ID (เบอร์โทรศัพท์, เลขบัตรประชาชน, เลข e-Wallet), PromptPay Bill Payment (สร้าง Tag 30 พร้อม Reference 1 และ Reference 2 สำหรับ Reconciliation) และ PromptPay QR Code Standard ที่ใช้ EMVCo QR Standard Tag 29
| ประเภท QR | ใช้กับ | จุดเด่น |
|----------|---------|---------|
| Static QR | ลูกค้ากรอกยอดเอง | ทำง่าย ไม่ต้องเชื่อม API |
| Dynamic QR | ระบบ POS / Web สร้างแบบ Realtime | Match ยอดอัตโนมัติ ลดข้อผิดพลาด |
| Bill Payment QR | ค่าน้ำ ค่าไฟ ภาษี SaaS | Reconciliation ผ่าน Reference Number |
ตัวเลือก API Provider สำหรับ SME
ธุรกิจ SME ไม่จำเป็นต้องสมัครเป็น Payment Gateway โดยตรง สามารถเลือกใช้ API จากผู้ให้บริการ 3 กลุ่มหลัก ได้แก่:
สำหรับสตาร์ทอัพและ SME ที่ต้องการลดต้นทุน แนะนำให้ใช้ Bank Direct API แต่ถ้าทีมมีน้อยกว่า 3 คน Aggregator เหล่านี้คุ้มกว่า เพราะรวม PCI-DSS, Reconciliation Dashboard และ Customer Support ในแพ็กเกจเดียว
วิธีเชื่อมต่อ PromptPay API ใน Laravel
ขั้นตอนการ Integrate PromptPay กับ Laravel Backend แบ่งออกเป็น 4 ขั้นตอนหลัก ดังนี้:
Step 1: ติดตั้ง Library
```bash
composer require dpays/promptpay-qr
```
Step 2: สร้าง Service สำหรับสร้าง QR
```php
namespace App\Services;
use Dpays\PromptpayQr\Generator;
class PromptPayService {
public function generateQR(string $orderId, float $amount): string {
$payload = Generator::generate(
id: env('PROMPTPAY_ID'),
amount: $amount,
ref1: $orderId
);
return Generator::toBase64Image($payload);
}
}
```
Step 3: สร้าง Endpoint สำหรับ Frontend
```php
Route::post('/api/checkout/qr', function(Request $r) {
$qr = app(PromptPayService::class)->generateQR(
$r->order_id, $r->amount
);
return response()->json(['qr' => $qr]);
});
```
Step 4: รับ Webhook จากธนาคาร
ธนาคารจะส่ง Notification กลับมาที่ Endpoint ที่กำหนดเมื่อมีการชำระเงินเข้า — ต้องตรวจสอบ Signature ทุกครั้งเพื่อป้องกันการปลอมแปลง และต้องทำ Idempotency เพื่อกัน Webhook ส่งซ้ำ
วิธีแสดง QR ใน Next.js Frontend
หลังจากที่ Backend ส่ง QR Image กลับมา ฝั่ง Frontend ต้อง Fetch QR Image พร้อม Polling Status ทุก 3 วินาที หาก Status เปลี่ยนเป็น `paid` ให้ Redirect ไปหน้า Success และหาก Timeout 15 นาทีให้ยกเลิก Order อัตโนมัติ
ตัวอย่าง Hook สำหรับ Polling Order Status:
```tsx
useEffect(() => {
const interval = setInterval(async () => {
const res = await fetch(`/api/order/${orderId}/status`);
const { status } = await res.json();
if (status === 'paid') {
clearInterval(interval);
router.push('/success');
}
}, 3000);
return () => clearInterval(interval);
}, [orderId]);
```
ในระบบโปรดักชั่นแนะนำให้เปลี่ยนจาก Polling เป็น Server-Sent Events (SSE) หรือ WebSocket เพื่อลด Latency และจำนวน Request ที่กระทบ Database
Reconciliation, Webhook Security และ Best Practice
ข้อผิดพลาดที่พบบ่อยที่สุดในการเชื่อม PromptPay API ในโปรดักชั่น คือไม่ได้ทำ Idempotency กับ Webhook ทำให้เมื่อธนาคารส่งซ้ำ ระบบบันทึกออเดอร์ซ้ำ 2-3 ครั้ง วิธีแก้คือใช้ Database Transaction + Unique Constraint บน `transaction_id` ของธนาคาร
| ความเสี่ยง | วิธีป้องกัน |
|-----------|-------------|
| Webhook ปลอม | ตรวจสอบ HMAC Signature + IP Whitelist |
| ธุรกรรมซ้ำ | Idempotency Key + DB Unique Index |
| Replay Attack | ตรวจสอบ Timestamp + Nonce |
| ลูกค้าโอนผิดยอด | ใช้ Dynamic QR ที่ Lock Amount |
| ลืม Reconciliation รายวัน | Cron Job เทียบ Bank Statement |
แนะนำให้รัน Reconciliation Job ทุกเที่ยงคืน เพื่อเปรียบเทียบยอด Order Status `paid` กับ Bank Statement API ของวันก่อน และ Flag รายการที่ไม่ตรงให้ Admin ตรวจสอบ ป้องกันปัญหา "เงินเข้าแต่ออเดอร์ไม่อัปเดต" ซึ่งเป็นสาเหตุหลักของ Customer Complaint ในธุรกิจอีคอมเมิร์ซไทย
เปรียบเทียบ Bank API กับ Payment Aggregator
| หัวข้อ | Bank Direct (SCB / KBank) | Aggregator (Omise / 2C2P) |
|--------|--------------------------|--------------------------|
| ค่าธรรมเนียม | 0% (เฉพาะ PromptPay) | 0.6-1.2% |
| ระยะเวลา Onboard | 4-8 สัปดาห์ | 3-7 วัน |
| Dashboard | ต้องสร้างเอง | พร้อมใช้ |
| Multi-channel (Card+QR) | ต้องเชื่อมหลายระบบ | One Integration |
| PCI-DSS | ต้องดูแลเอง | Aggregator ดูแลให้ |
| ความเหมาะกับ SME | ขนาดกลาง-ใหญ่ | สตาร์ทอัพ-SME ขนาดเล็ก |
สรุปและ Call to Action
PromptPay API เป็นโครงสร้างพื้นฐานทางการเงินที่จำเป็นสำหรับธุรกิจไทยทุกขนาด การเชื่อมต่อด้วย Laravel + Next.js สามารถทำได้ภายใน 1-2 สัปดาห์ ลดต้นทุนค่าธรรมเนียมและสร้างประสบการณ์การชำระเงินที่ราบรื่น หากธุรกิจของคุณยังไม่มี QR Payment ในเว็บไซต์ ตอนนี้คือเวลาที่ดีที่สุดที่จะเริ่มต้น เพราะคู่แข่งของคุณกำลังลด Cart Abandonment ลงทุกวัน
Key Takeaways:
📞 ปรึกษาทีม ADS FIT สำหรับการวางระบบ Payment Integration ที่ปลอดภัยและขยายตัวได้ — [adsfit.co.th/contact](https://adsfit.co.th/contact)
อ่านบทความที่เกี่ยวข้อง: [Better Auth คืออะไร?](/blog/better-auth-typescript-authentication-framework-nextjs-laravel-guide-sme-thailand-2026), [PCI DSS v4.0.1 Compliance](/blog/pci-dss-v4-payment-card-industry-compliance-guide-sme-thailand-2026)