คู่มือการใช้งาน API ของ Paynoi
https://paynoi.com/ppay_apiapplication/jsonapi_key จากตาราง usersสร้างธุรกรรมพร้อมเพย์และ QR Code โดยรับ amount เป็นจำนวนเต็ม (หน่วยบาท) และ API จะสุ่มทศนิยม 2 ตำแหน่ง (เช่น 100 บาทอาจกลายเป็น 100.24 บาท) ** สุ่มเริ่มตั้งแต่ .00-.99
Endpoint: /ppay_api
{
"method": "create",
"api_key": "your_test_api_key",
"amount": 100,
"ref1": "testpay",
"key_id": "100568",
"account": "1234567890",
"type": "1"
}
method คงที่เป็น "create"api_key API key จากตาราง usersamount จำนวนเต็ม (หน่วยบาท เช่น 100)ref1 อ้างอิงธุรกรรม (เช่น รหัสคำสั่งซื้อ)key_id รหัสธนาคาร 6 หลัก — ระบบ SMS รองรับ 3 ธนาคาร: 100568 กสิกรไทย, 100569 กรุงศรีอยุธยา, 100570 ไทยพาณิชย์account เลขที่พร้อมเพย์ (เบอร์มือถือ หรือ เลขบัตรประชาชน)type ประเภทบัญชี (1: เบอร์มือถือ หรือ 2: เลขบัตรประชาชน)Success (สมมติสุ่มทศนิยมได้ 0.24):
{
"status": 1,
"trans_id": "PPAY_123456789",
"qr_image_base64": "data:image/png;base64,iVBORw0KGgoAAA...",
"amount_check": 10024,
"amount": "100.24",
"expire_at": "2026-08-05 23:28:20"
}
status 1 (สำเร็จ)trans_id รหัสธุรกรรมที่สร้างqr_image_base64 รูป QR Code ในรูปแบบ Base64amount_check ยอดรวม (สตางค์ เช่น 10024)amount ยอดรวมที่มีทศนิยม (บาท เช่น 100.24)qr_image_base64 ขึ้นต้นด้วย data:image/png;base64, ใส่ใน <img src="..."> ได้ทันทีexpire_at เวลาหมดอายุ รูปแบบ Y-m-d H:i:s (2 ชั่วโมงจากเวลาสร้าง)check คืนค่าเป็น ISO 8601 ต่างจาก createError:
{
"status": 0,
"msg": "จำนวนเงิน, ref1, key_id, หรือ account ไม่ถูกต้อง"
}
status ใน JSON เสมอ (1 = สำเร็จ, 0 = ล้มเหลว)
msg ที่พบได้:API key ไม่ถูกต้องจำนวนเงิน (X บาท) ต่ำกว่ายอดขั้นต่ำ (Y บาท)ไม่พบการตั้งค่าสำหรับ key_id นี้ — ยังไม่ได้ตั้งค่าธนาคารสำหรับ key_id นั้นจำนวนเงิน, ref1, key_id, หรือ account ไม่ถูกต้อง — พารามิเตอร์ไม่ครบเมธอดไม่ถูกต้อง — method ไม่ใช่ create / cancel / checkยกเลิกธุรกรรมที่อยู่ในสถานะ pending หรือหมดอายุ (เกิน 15 นาทีจาก created_at)
Endpoint: /ppay_api
{
"method": "cancel",
"api_key": "your_test_api_key",
"trans_id": "PPAY_123456789"
}
method คงที่เป็น "cancel"api_key API key จากตาราง userstrans_id รหัสธุรกรรมจากคำขอ createSuccess:
{
"status": 1
}
Error:
{
"status": 0,
"msg": "ธุรกรรมยังไม่หมดอายุและอยู่ในสถานะที่ไม่สามารถยกเลิกได้"
}
ตรวจสอบสถานะและรายละเอียดของธุรกรรม
Endpoint: /ppay_api
{
"method": "check",
"api_key": "your_test_api_key",
"trans_id": "PPAY_123456789"
}
method คงที่เป็น "check"api_key API key จากตาราง userstrans_id รหัสธุรกรรมจากคำขอ createSuccess:
{
"status": 1,
"trans_id": "PPAY_123456789",
"amount_check": 10024,
"amount": "100.24",
"ref1": "testpay",
"payment_status": "pending",
"created_at": "2025-04-28 12:00:00",
"expire_at": "2025-04-28T12:15:00+07:00",
"type": "1",
"key_id": "100568"
}
status 1 (สำเร็จ)trans_id รหัสธุรกรรมamount_check ยอดรวม (สตางค์ เช่น 10024)amount ยอดรวมที่มีทศนิยม (บาท เช่น 100.24)ref1 อ้างอิงธุรกรรมpayment_status สถานะการชำระเงิน (เช่น pending, completed, failed)created_at เวลาสร้างexpire_at เวลาหมดอายุ (ISO 8601)type ชนิดพร้อมเพย์ (1 = เบอร์โทร, 2 = เลขบัตรประชาชน)key_id รหัส 6 หลัก (เช่น 100568)Error:
{
"status": 0,
"msg": "ไม่พบธุรกรรม"
}
เมื่อมีการชำระเงินสำเร็จ API จะส่ง webhook ไปยัง webhook_url ที่กำหนดใน user_settings
{
"data": {
"trans_id": "PPAY_123456789",
"ref1": "testpay",
"amount_check": 10024,
"amount": "100.24",
"transaction_date: "2025-04-28",
"transaction_time: "12:00:00",
"status": "1",
"payment_status": "completed"
},
"signature": "hmac_signature"
}
data ข้อมูลการชำระเงินsignature ลายเซ็น HMAC-SHA256 (ใช้ api_key จาก users)Webhook endpoint ต้องตอบกลับ:
{
"status": 1
}
ตัวอย่างโค้ด PHP สำหรับเรียก API โดยใช้ cURL
<?php
function callPromptPayApi($method, $data) {
$url = 'https://paynoi.com/ppay_api';
$payload = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return [
'http_code' => $httpCode,
'response' => json_decode($response, true)
];
}
// ตัวอย่าง: Create Transaction
$createData = [
'method' => 'create',
'api_key' => 'your_test_api_key',
'amount' => 100,
'ref1' => 'testpay',
'key_id' => '100568',
'account' => '1234567890',
'type' => '1'
];
$result = callPromptPayApi('create', $createData);
echo "Create Response: " . print_r($result, true) . "\n";
// ตัวอย่าง: Cancel Transaction
$cancelData = [
'method' => 'cancel',
'api_key' => 'your_test_api_key',
'trans_id' => 'PPAY_123456789'
];
$result = callPromptPayApi('cancel', $cancelData);
echo "Cancel Response: " . print_r($result, true) . "\n";
// ตัวอย่าง: Check Transaction
$checkData = [
'method' => 'check',
'api_key' => 'your_test_api_key',
'trans_id' => 'PPAY_123456789'
];
$result = callPromptPayApi('check', $checkData);
echo "Check Response: " . print_r($result, true) . "\n";
?>
100568 กสิกรไทย · 100569 กรุงศรีอยุธยา · 100570 ไทยพาณิชย์api_key อย่างปลอดภัยlogs/app.logสำหรับการตั้งค่า user_settings หรือการเชื่อมต่อธนาคาร กรุณาติดต่อทีมพัฒนา
<img src="https://promptpay.paynoi.com/api.php?id=หมายเลขพร้อมเพย์&amount=จำนวนเงิน">รองรับ เบอร์มือถือ 10 หลัก · บัตรประชาชน / Tax ID 13 หลัก · e-Wallet 15 หลัก (เช่น G Wallet)
เพิ่ม &format=svg หรือ &format=json เพื่อรับผลลัพธ์รูปแบบอื่น ·
ดูเอกสารฉบับเต็ม →
ข้อดีของการใช้พร้อมเพย์ QR CODE ในการรับเงิน คือ สามารถล็อคจำนวนเงินที่ให้ลูกค้าชำระได้ ทำให้ง่ายและสะดวกในการตรวจสอบรายการโอนเงินเพื่อยืนยันตนในการชำระเงินของลูกค้าในยอดจำนวนเงินนั้นๆได้