สร้าง PromptPay QR API ฟรีบน NirvaDeploy — Template tour
ใช้ NirvaDeploy template promptpay-qr สร้าง REST API generate PromptPay QR ภายใน 3 นาทีPromptPay QR คืออะไร
PromptPay = ระบบ instant payment ของไทย (Bank of Thailand). User scan QR แล้วโอนเข้าบัญชี/เบอร์/ID card.
QR format = EMVCo standard (เหมือนทั่วโลก) + Thai-specific fields:
- Merchant ID (เบอร์โทรหรือเลขประจำตัวประชาชน)
- จำนวนเงิน (optional — ถ้าไม่ใส่ user พิมพ์เอง)
- Reference (optional — ใช้ track invoice)
Use cases
- 🛒 E-commerce checkout — แสดง QR แทน redirect ไป gateway
- 📱 In-app payment — สำหรับ Thai customer ที่ไม่ใช้บัตร
- 🎟 Event ticket — invoice + QR ในใบเดียว
- 💰 Donation page — non-profit สร้าง QR สำหรับรับบริจาค
- 📊 SaaS billing — invoice link มี QR ฝัง
Template details
Slug: promptpay-qr Repo: nirvadeploy/template-promptpay-qr Price: ฟรี (free template) Runtime: Node.js + Express Dependencies: promptpay-qr npm package + qrcode Add-ons: ไม่มี (stateless service)
API endpoints
GET /qr?id=0812345678&amount=99.00
→ Returns PNG QR code (200×200 px)
GET /qr.svg?id=0812345678&amount=99.00
→ Returns SVG QR code (vector, any size)
GET /qr.json?id=0812345678&amount=99.00
→ Returns { qrString: "...", payload: {...} }Deploy ใน 3 นาที
Via Claude (recommended)
คุณ: Deploy template promptpay-qr บน NirvaDeploy>
Claude: (เรียกnirvadeploy_deploy_template) ✅ Template 'promptpay-qr' deploy แล้ว 📦 project_id:proj-pp-001🔧 service_id:svc-pp-001🔗 service URL:promptpay-qr.nirvadeploy.com⏱ Build 30-60 วินาที — เช็คสถานะด้วย list_deployments
Via Web UI
- ไปที่ /dashboard/templates
- Click
promptpay-qr - Click Deploy
- ตั้ง env vars (template นี้ไม่ต้องการ)
- Click Deploy now → service URL พร้อมใช้ใน 30-60 วินาที
ทดสอบ
# จำนวนเงิน 99 บาท ไปยังเบอร์ 0812345678
curl -L https://promptpay-qr.nirvadeploy.com/qr?id=0812345678&amount=99.00 > qr.png
open qr.pngหรือเปิดใน browser:
https://promptpay-qr.nirvadeploy.com/qr?id=0812345678&amount=99.00→ จะเห็น QR code ที่ scan ด้วย mobile banking app ได้
ใส่ลงเว็บคุณ
HTML
<img
src="https://promptpay-qr.nirvadeploy.com/qr?id=0812345678&amount=99"
alt="PromptPay QR"
width="240"
height="240"
/>
<p>Scan เพื่อจ่าย ฿99</p>Next.js
export function PaymentQR({ amount }: { amount: number }) {
const url = `https://promptpay-qr.nirvadeploy.com/qr.svg?id=0812345678&amount=${amount}`;
return (
<div>
<img src={url} alt="PromptPay QR" className="w-60 h-60" />
<p className="text-center">Scan เพื่อจ่าย ฿{amount.toLocaleString()}</p>
</div>
);
}Server-side (avoid CORS in production)
ดี practice: อย่า hardcode URL ใน frontend — proxy ผ่าน API route ของคุณ + cache:
// app/api/qr/route.ts (Next.js)
export async function GET(req: Request) {
const { searchParams } = new URL(req.url);
const amount = searchParams.get("amount");
const qrUrl = `https://promptpay-qr.nirvadeploy.com/qr.svg?id=YOUR_PROMPTPAY_ID&amount=${amount}`;
const r = await fetch(qrUrl, { next: { revalidate: 3600 } });
return new Response(await r.text(), {
headers: { "Content-Type": "image/svg+xml", "Cache-Control": "public, max-age=3600" },
});
}Customize template
Template ของเรา = open source บน GitHub. Fork ได้ + แก้:
git clone https://github.com/nirvadeploy/template-promptpay-qr.git
cd template-promptpay-qr
npm install
npm run dev
# แก้ logo, branding, error messages, ฯลฯแล้ว deploy fork ของคุณบน NirvaDeploy:
คุณ: Deploy myorg/template-promptpay-qr (fork ของผม) บน NirvaDeployLimitations + best practices
Static merchant ID (template default)
Template default ตั้ง merchant ID จาก URL parameter — ไม่ได้ check ว่าเป็น ID ที่ verified. Production:
- ใส่ merchant ID จาก env var เท่านั้น
- Validate amount > 0 + < limit
- Rate limit: ~10 req/sec per IP (Phase 2.x จะมี built-in)
ไม่ verify payment
API นี้แค่ generate QR — ไม่ confirm ว่า payment สำเร็จ. Production:
- ใช้ Bank API (SCB Easy / KBank K+ / SCB Open API) สำหรับ confirmation webhook
- หรือใช้ Omise/2C2P/Stripe Thailand ที่มี PromptPay built-in + webhook
Reference / order ID
Template ไม่ใส่ reference field default. ถ้าต้องการ track payment back to order:
// fork: เพิ่มใน server.js
const ref = req.query.ref || generateUniqueRef();
const payload = generatePayload(merchantId, { amount, ref1: ref });ราคา / cost
- NirvaDeploy Free tier: $0/mo — เพียงพอสำหรับ ≤ 50K req/day (sleep หลัง 15 min idle → ปลุกผ่าน scheduled ping)
- NirvaDeploy Hobby ฿111/mo: always-on, 1 GB RAM — แนะนำสำหรับ production e-commerce
ไม่มี per-request fee — รัน 24/7 ในราคาคงที่
Template อื่นที่เกี่ยวข้อง
NirvaDeploy template marketplace มี 10 ตัว — ดู templates ทั้งหมด:
- 💬 LINE OA Bot Starter (ฟรี)
- 🧠 Thai NLP API (ฟรี — PyThaiNLP wrapper)
- 📮 Thai Address Validator (ฟรี — 77 จังหวัด)
- 🧾 Bank Slip Parser (฿599 — ใช้ OCR + Claude)
- 🛒 Shopee Scraper (฿299)
- 📊 Bank Statement Parser (฿2,990 — SCB/KBank/BBL/KTB/...)
เริ่มเลย
Sign in ที่ nirvadeploy.com → /dashboard/templates → Deploy promptpay-qr → API พร้อมใช้ใน 3 นาที.
ฟรีตลอดชีพ. ไม่ต้องใส่บัตร.
Subscribe Line OA `@nirvadeploy` รับ tutorial ใหม่
ชอบบทความนี้?
ลอง NirvaDeploy ฟรี
Free tier ตลอดชีพ · ไม่ต้องใส่บัตร · Sign in ด้วย Line/Google
เริ่มเลย →