Developer Guide & Docs

วิธีเชื่อมต่อ API (PHP)

คู่มือการเตรียมระบบและเขียนโค้ด PHP เพื่อเชื่อมต่อกับ ThaiQRCODE API อย่างปลอดภัยและแม่นยำ รองรับทั้ง QR Code ทั่วไปและ PromptPay

สิ่งที่ต้องเตรียม (Prerequisites)

  • API Key: ต้องมี API Key จาก ThaiQRCODE (สามารถขอได้จากหน้า API Pricing)
  • PHP Version: 7.4 ขึ้นไป (แนะนำ PHP 8.0+)
  • cURL Extension: ต้องเปิดใช้งาน php_curl ในเซิร์ฟเวอร์ของคุณ
  • HTTPS & Domain Whitelist: เซิร์ฟเวอร์ของคุณต้องรองรับ SSL และ API Key จะถูกล็อคให้ใช้งานได้เฉพาะโดเมนที่คุณแจ้งตอนสมัครเท่านั้น
1

เตรียม Environment Variables (ไม่แนะนำให้ Hardcode)

เพื่อความปลอดภัยสูงสุด ห้ามวาง API Key ไว้ในไฟล์ที่ส่งไป Frontend (เช่น HTML/JavaScript) เด็ดขาด ควรเก็บไว้ในไฟล์ PHP ที่อยู่นอก public_html

// ไฟล์ config.php ของคุณ (ที่อยู่นอกโฟลเดอร์ public_html)
define('THAIQR_API_KEY', 'tqr_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
2

ตัวอย่างโค้ด: QR Code API (ทั่วไป)

ใช้สำหรับสร้าง QR Code จากข้อความหรือ URL

Request Parameters (JSON)
ParameterTypeDescription
text*RequiredThe text or URL to encode (Max 1000 chars).
sizeIntegerImage size. Allowed: 128, 256, 512, 1024. Default: 256.
<?php
$api_key = 'tqr_live_YOUR_API_KEY';
$payload = [
  'text' => 'https://example.com',
  'size' => 256
];

$ch = curl_init('https://thaiqrcode.com/api/v1/qrcode.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  'Content-Type: application/json',
  'X-API-Key: ' . $api_key
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
if ($data['success']) {
  echo "<img src='{$data['data']['qr_image_url']}'>";
}
?>
3

ตัวอย่างโค้ด: PromptPay QR Code API

ใช้สำหรับสร้าง QR Code สำหรับรับเงินผ่านระบบ PromptPay (รองรับทุกธนาคารในไทย)

Request Parameters (JSON)
ParameterTypeDescription
target*RequiredThai phone number (10 digits) or National ID (13 digits).
amountFloatThe amount to pay (e.g., 199.50). If omitted, generates a static QR.
<?php
$api_key = 'tqr_live_YOUR_API_KEY';
$payload = [
  'target' => '0812345678', // เบอร์โทร 10 หลัก หรือ บัตรประชาชน 13 หลัก
  'amount' => 150.50 // ถ้าไม่ใส่ จะเป็น QR แบบไม่มียอด (Static)
];

$ch = curl_init('https://thaiqrcode.com/api/promptpay.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  'Content-Type: application/json',
  'X-API-Key: ' . $api_key
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
if ($data['success']) {
  echo "<img src='{$data['data']['qr_image_url']}'>";
}
?>
4

Response & Error Handling

เมื่อเรียก API สำเร็จ ระบบจะส่งข้อมูลกลับมาในรูปแบบ JSON ดังนี้:

// Example Success Response (HTTP 200)
{
  "success": true,
  "data": {
    "content": "https://example.com",
    "qr_image_url": "https://thaiqrcode.com/uploads/api_qr_xxxxx.png"
  }
}
HTTP Status Codes
HTTP Codeความหมายวิธีจัดการ (Handling)
200 OK สำเร็จ ดึง data.qr_image_url ไปใช้งานได้เลย
401/403 API Key ผิด / ถูกระงับ / หมดอายุ / โดเมนไม่ตรง เช็คว่า API Key ถูกต้อง และเรียกจากโดเมนที่ลงทะเบียนไว้
429 Rate Limit Exceeded (เรียกเกินโควต้า) ควรทำระบบ Cache รูปภาพ หรือหน่วงเวลาการเรียกครั้งถัดไป
5

คำถามที่พบบ่อย & การแก้ปัญหา (FAQ)

เนื่องจากระบบของเรามีการรักษาความปลอดภัยแบบ Domain Whitelist เพื่อป้องกันการถูกขโมย API Key ไปใช้งานที่อื่น ระบบจะตรวจสอบทุกครั้งว่าคำขอถูกส่งมาจากโดเมนใด (ผ่าน Header Origin หรือ Referer) หากคุณทดสอบผ่าน Postman หรือ Terminal (cURL) โดยตรง จะไม่มีการส่งโดเมนมา จึงทำให้ระบบปฏิเสธการทำงาน

วิธีแก้: คุณควรทดสอบโดยเขียนโค้ด PHP ฝั่ง Server (Backend) และรันผ่านเว็บเซิร์ฟเวอร์ของคุณเท่านั้น ไม่แนะนำให้ทดสอบผ่าน Postman ครับ

เพื่อความปลอดภัยสูงสุด ห้ามนำ API Key ไปวางใน HTML หรือ JavaScript ที่ผู้ใช้สามารถกด View Source ดูได้ หากคุณต้องการสร้าง QR Code ผ่าน JavaScript คุณต้องสร้างหน้า PHP ฝั่ง Server รับคำขอ (Proxy) แล้วให้ JavaScript เรียกหน้า PHP ของคุณเอง แล้ว PHP ของคุณจึงเรียก API ของเราต่อครับ

ปกติ API ของเราตอบสนองภายใน 0.5 - 1 วินาที แต่หากคุณสร้าง QR Code จำนวนมากๆ พร้อมกันบนหน้าเว็บ อาจจะทำให้หน้าเว็บดูช้าได้

แนะนำ: คุณควรทำระบบ Caching บนเซิร์ฟเวอร์ของคุณ คือหากมีการสร้าง QR Code สำหรับ URL เดิมซ้ำๆ ให้บันทึกไฟล์รูปภาพนั้นไว้ที่เซิร์ฟเวอร์ของคุณ แล้วดึงมาแสดงผลโดยไม่ต้องเรียก API ของเราซ้ำ จะช่วยประหยัดเวลาและประหยัดโควต้า API ได้มากครับ

ได้แน่นอนครับ คุณสามารถเขียน PHP Code เพื่อเรียก API ไปแปะไว้ใน functions.php ของ Theme หรือสร้าง Plugin เล็กๆ ได้ ตัวอย่างเช่น การสร้าง QR Code สำหรับหน้าสินค้า หรือสร้าง PromptPay QR สำหรับหน้า Checkout โดยใช้ตัวอย่างโค้ด PHP (cURL) ที่เราให้ไว้ด้านบนได้เลยครับ

หากคุณย้ายเว็บไซต์ไปโดเมนใหม่ และต้องการเปลี่ยนโดเมนที่ผูกกับ API Key กรุณาติดต่อทีมงานผ่านหน้า Contact Us พร้อมแจ้งชื่อบริษัทและ API Key ของคุณ เพื่อให้ทีมงานทำการอัปเดตโดเมนให้ครับ

พร้อมที่จะเริ่มต้นหรือยัง?

หากคุณมี API Key แล้ว ลองนำโค้ดด้านบนไปทดสอบได้เลย หรือหากยังไม่มี สามารถเลือกแพ็กเกจได้ที่ปุ่มด้านล่าง

รับ API Key ของคุณ