nirva|deploy
2026-05-15·5 min read·NirvaDeploy team
#PromptPay#fintech#template#Thailand

สร้าง 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

  1. ไปที่ /dashboard/templates
  2. Click promptpay-qr
  3. Click Deploy
  4. ตั้ง env vars (template นี้ไม่ต้องการ)
  5. 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 ของผม) บน NirvaDeploy

Limitations + 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

เริ่มเลย →