OTP24HR Reseller API
เชื่อมต่อระบบ OTP ของเราเข้ากับเว็บ/แอปของคุณ — ใช้ API key เดียวรับ OTP ได้จากทุกบริการ
API Key ของฉัน
เริ่มต้นใช้งาน
1. Base URL
2. Authentication — ส่ง API Key ได้ 4 วิธี
3. รูปแบบ Response
ทุก endpoint ตอบกลับเป็น JSON ที่มี field ok บอกสถานะ:
Endpoints
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| country | int optional | รหัสประเทศ default = 52 (ไทย) |
ตัวอย่าง Response
Body (JSON)
| Parameter | Type | Description |
|---|---|---|
| service | string required | service code เช่น ka, fb, tg |
| country | int optional | รหัสประเทศ default = 52 |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| order_id | int required | order ID จาก response ของ /buy |
Response
💡 Tips: Poll endpoint นี้ทุก 5-10 วินาทีจนกว่า otp_code จะมีค่า หรือ status เปลี่ยนเป็น terminal state
| Parameter | Type | Description |
|---|---|---|
| order_id | int required | order ID ที่ต้องการยกเลิก |
| Parameter | Type | Description |
|---|---|---|
| order_id | int required | order ID |
| Parameter | Type | Description |
|---|---|---|
| limit | int optional | จำนวนรายการ default 50, max 200 |
| offset | int optional | เริ่มที่รายการที่... default 0 |
เมื่อไหร่ควรเรียก: เมื่อ order เดิมได้รับ OTP สำเร็จแล้ว (
status=success) แต่ต้องการรหัสยืนยันอีกครั้งบนเบอร์เดียวกัน (เช่นยืนยันซ้ำ 2 ขั้นตอน)วิธีรัน: ส่ง
order_id ของ order เดิมที่ success แล้ว → จะได้ order_id ใหม่กลับมาให้ไป poll /status.php ต่อ
Body (JSON)
| Parameter | Type | Description |
|---|---|---|
| order_id | int required | order ID เดิมที่ต้อง status=success แล้วเท่านั้น |
Response (สำเร็จ)
Response (ผิดพลาด)
| error | สาเหตุ |
|---|---|
| NOT_SUCCESS | order เดิมยังไม่ success — ขอรอบ 2 ได้เฉพาะหลังได้ OTP แล้ว |
| ALREADY_PENDING | มี order รอบ 2 รอ OTP อยู่แล้วสำหรับเบอร์นี้ |
| PROVIDER_REJECTED | เบอร์นี้ปิดที่ provider แล้ว ไม่สามารถขอรหัสซ้ำได้อีก |
💡 Tips: ใช้ order_id ใหม่ที่ได้กลับมา poll /status.php ต่อได้เลย ไม่ต้องเรียก /buy.php ใหม่
TrueMoney Angpao Redeem API
API สำหรับรับอั่งเปา TrueMoney ของลูกค้า — เติมเครดิตเข้า wallet อัตโนมัติ
ใช้ทำอะไร: ส่งลิงค์อั่งเปา TrueMoney มา → ระบบจะแลกรับอัตโนมัติ → เครดิตเข้า wallet ของ API Key
หมายเหตุ: อั่งเปาต้องยังไม่ถูกใช้ และจำนวนเงินอยู่ระหว่าง 10–10,000 บาท
📥 Parameters
| Parameter | Type | Required | คำอธิบาย |
|---|---|---|---|
| api_key | string | ✓ | API Key ของคุณ |
| voucher_url | string | ✓ | ลิงค์อั่งเปา TrueMoney เช่น https://gift.truemoney.com/campaign/?v=xxxxx |
📤 Response สำเร็จ
{
"ok": true,
"amount": 100.00,
"balance": 1350.00,
"message": "รับอั่งเปา ฿100.00 สำเร็จ"
}📤 Response ล้มเหลว
{
"ok": false,
"error": "อั่งเปานี้ถูกใช้ไปแล้ว"
}⚠️ Error Codes
API key requiredไม่ได้ส่ง api_keyInvalid API keyAPI key ไม่ถูกต้องvoucher_url requiredไม่ได้ส่งลิงค์อั่งเปาInvalid voucher URLลิงค์ไม่ถูกรูปแบบอั่งเปานี้ถูกใช้ไปแล้วvoucher ถูก redeem แล้วอั่งเปาหมดอายุvoucher expire แล้ว📝 ตัวอย่าง PHP
<?php
$ch = curl_init('https://otp24hr.store/api/v1/truemoney_redeem.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'api_key' => 'YOUR_API_KEY',
'voucher_url' => 'https://gift.truemoney.com/campaign/?v=xxxxx',
]),
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
if ($result['ok']) {
echo "รับ ฿" . $result['amount'] . " สำเร็จ!";
echo "ยอดคงเหลือ: ฿" . $result['balance'];
} else {
echo "ล้มเหลว: " . $result['error'];
}
?>Slip Verify Reseller API
API ตรวจสอบสลิปโอนเงินธนาคาร — ส่งรูปสลิปมาตรวจ ได้ผลลัพธ์ยอดโอน ผู้โอน ผู้รับ ทันที
ใช้ทำอะไร: ส่งรูปสลิปธนาคาร (QR data หรือ URL) → ระบบตรวจสอบกับธนาคาร → คืนข้อมูลยอดโอน ผู้โอน ผู้รับ วันที่
รองรับ: กสิกร, กรุงเทพ, กรุงไทย, ไทยพาณิชย์, กรุงศรี, ออมสิน, ทหารไทยธนชาต และอื่นๆ
ค่าธรรมเนียม: 0.00 บาท
📥 Parameters
| Parameter | Type | Required | คำอธิบาย |
|---|---|---|---|
| api_key | string | ✓ | API Key ของคุณ |
| file | file | ✓* | ไฟล์รูปสลิป (jpg/png) — ส่งแบบ multipart/form-data |
| qrcode_text | string | ✓* | QR code data ที่อ่านจากสลิป (ถ้าไม่ส่งไฟล์) |
| receiver_account | string | - | เลขบัญชีผู้รับ — ถ้าระบุจะตรวจว่าตรงกันหรือไม่ |
| amount | number | - | จำนวนเงินที่ต้องตรวจ — ถ้าระบุจะตรวจว่ายอดตรงกันหรือไม่ |
* ส่งอย่างน้อย 1 อย่าง: file (multipart) หรือ qrcode_text (POST/JSON)
📤 Response สำเร็จ
{
"ok": true,
"data": {
"transaction_id": "20260712153045001",
"date": "2026-07-12",
"time": "15:30:45",
"amount": 500.00,
"fee": 0.00,
"sender": {
"name": "นาย ทดสอบ ระบบ",
"bank": "KBANK",
"account": "xxx-x-xx678-x"
},
"receiver": {
"name": "นาย ผู้รับ เงิน",
"bank": "SCB",
"account": "xxx-x-xx123-x"
},
"verified": true,
"receiver_match": true,
"amount_match": true
},
"fee_charged": 0.00
}📤 Response ล้มเหลว
{
"ok": false,
"error": "INVALID_SLIP",
"code": "INVALID_SLIP"
}📤 Response สลิปซ้ำ (HTTP 409)
{
"ok": false,
"error": "DUPLICATE_SLIP",
"message": "สลิปนี้เคยถูกตรวจสอบแล้ว",
"fee_charged": 0
}⚠️ Error Codes
INVALID_SLIPอ่านสลิปไม่ได้ / QR ไม่ถูกต้องDUPLICATE_SLIPสลิปนี้เคยถูกตรวจสอบแล้ว — ไม่หักค่าธรรมเนียม (HTTP 409)EXPIRED_SLIPสลิปเก่าเกินกำหนดAMOUNT_MISMATCHยอดเงินไม่ตรงกับที่ระบุRECEIVER_MISMATCHบัญชีผู้รับไม่ตรงINSUFFICIENT_BALANCEเครดิตไม่พอจ่ายค่าธรรมเนียม🏦 Bank Codes
📦 ไฟล์ตัวอย่างพร้อมใช้
ดาวน์โหลดชุดไฟล์ตัวอย่าง PHP สำหรับ Slip Verify — พร้อมใช้งานทันที มี 3 ไฟล์:
config.php — ตั้งค่า API Key, เลขบัญชี, bank_codeindex.php — หน้าอัปโหลดสลิป + สแกน QR อัตโนมัติ (jsQR)check_slip_api.php — เรียก API ตรวจสลิป + เช็คชื่อ/ธนาคาร/เวลา + กันสลิปซ้ำ
🏦 Bank Codes
รหัสธนาคารที่อยู่ใน response field sender.bank และ receiver.bank
| Code | ธนาคาร |
|---|---|
| 099 | พร้อมเพย์ (PromptPay) |
| 002 | ธ.กรุงเทพ (BBL) |
| 004 | ธ.กสิกรไทย (KBANK) |
| 006 | ธ.กรุงไทย (KTB) |
| 011 | ธ.ทหารไทยธนชาต (TTB) |
| 014 | ธ.ไทยพาณิชย์ (SCB) |
| 025 | ธ.กรุงศรีอยุธยา (BAY) |
| 069 | ธ.เกียรตินาคินภัทร (KKP) |
| 022 | ธ.ซีไอเอ็มบีไทย (CIMBT) |
| 067 | ธ.ทิสโก้ (TISCO) |
| 024 | ธ.ยูโอบี (UOB) |
| 071 | ธ.ไทยเครดิตเพื่อรายย่อย |
| 073 | ธ.แลนด์ แอนด์ เฮ้าส์ (LHBANK) |
| 070 | ธ.ไอซีบีซี (ไทย) (ICBC) |
| 034 | ธ.เพื่อการเกษตรและสหกรณ์การเกษตร (BAAC) |
| 030 | ธ.ออมสิน (GSB) |
| 033 | ธ.อาคารสงเคราะห์ (GHB) |
| 066 | ธ.อิสลามแห่งประเทศไทย (ISBT) |
| 088 | ธ.คลิกซ์ (CLICX) |
📝 ตัวอย่าง PHP (ส่งไฟล์)
<?php
$ch = curl_init('https://otp24hr.store/api/v1/slip_verify.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'api_key' => 'YOUR_API_KEY',
'file' => new CURLFile('/path/to/slip.jpg', 'image/jpeg'),
],
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
if ($result['ok']) {
echo "ยอดโอน: ฿" . $result['data']['amount'];
echo "ผู้โอน: " . $result['data']['sender']['name'];
echo "ตรวจสอบผ่าน: " . ($result['data']['verified'] ? 'ใช่' : 'ไม่');
}
?>📝 ตัวอย่าง PHP (ส่ง QR data)
<?php
$ch = curl_init('https://otp24hr.store/api/v1/slip_verify.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'api_key' => 'YOUR_API_KEY',
'qrcode_text' => '00020101021230...', // QR data จากสลิป
]),
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
?>Example Flow — ขั้นตอนการใช้งาน
ตัวอย่าง flow การซื้อ OTP สำหรับ Shopee:
Error Codes
NO_API_KEYไม่ได้ส่ง API key มาINVALID_API_KEYAPI key ไม่ถูกต้องAPI_KEY_DISABLEDAPI key ถูกปิดใช้งานIP_NOT_ALLOWEDIP ไม่อยู่ใน whitelistRATE_LIMITส่ง request เกินขีดจำกัดต่อนาทีSERVICE_REQUIREDไม่ได้ระบุ serviceSERVICE_NOT_FOUNDไม่พบ service codeINSUFFICIENT_BALANCEยอดในกระเป๋าไม่พอPROVIDER_ERRORprovider ปลายทางมีปัญหาORDER_NOT_FOUNDไม่พบออเดอร์ที่ระบุFORBIDDENออเดอร์นี้ไม่ใช่ของ key คุณEARLY_CANCEL_DENIEDยังยกเลิกไม่ได้ (ต้องผ่าน 2 นาที)INVALID_AMOUNTจำนวนเงินไม่อยู่ในช่วงที่กำหนดTXN_ID_REQUIREDไม่ได้ส่ง txnId มาTXN_NOT_FOUNDไม่พบรายการ txnId ที่ระบุUPSTREAM_ERRORเชื่อมต่อ provider ปลายทางไม่สำเร็จGIFT_REQUIREDไม่ได้ส่งโค้ด/ลิงก์อั่งเปามาINVALID_GIFTโค้ดอั่งเปาไม่ถูกต้องGIFT_USEDอั่งเปานี้ถูกใช้งานไปแล้วAMOUNT_TOO_LOWยอดในซองต่ำกว่าขั้นต่ำที่กำหนดNO_INPUTไม่ได้ส่งไฟล์สลิปหรือ qrcode_text มาSMM API (ปั้มโซเชียล)
ระบบปั้มไลค์ ฟอลโล วิว สำหรับโซเชียลมีเดีย — เชื่อมต่อผ่าน API เพื่อสั่งซื้อและเช็คสถานะอัตโนมัติ
Base URL:
https://otp24hr.store/api/v1/smm.phpทุก request ส่ง api_key ผ่าน parameter
📋 รายการบริการ (services)
?action=services&api_key=YOUR_KEY
คืนรายการบริการทั้งหมดที่เปิดให้ใช้งาน พร้อมราคาที่คำนวณส่วนลดตาม API key ของคุณแล้ว
Response
[
{
"service": 14157,
"name": "Facebook Page Likes",
"category": "Facebook",
"type": "Default",
"rate": 45.5000,
"min": 100,
"max": 100000
},
...
]| Field | คำอธิบาย |
|---|---|
| service | ID ของบริการ ใช้ตอนสั่งซื้อ |
| name | ชื่อบริการ |
| category | หมวดหมู่ เช่น Facebook, Instagram, TikTok |
| rate | ราคาต่อ 1,000 (บาท) — คำนวณส่วนลดแล้ว |
| min | จำนวนขั้นต่ำที่สั่งได้ |
| max | จำนวนสูงสุดที่สั่งได้ |
🛒 สั่งซื้อ (add)
?action=add
| Parameter | Type | Required | คำอธิบาย |
|---|---|---|---|
| api_key | string | ✓ | API Key ของคุณ |
| action | string | ✓ | add |
| service | int | ✓ | Service ID จากรายการบริการ |
| link | string | ✓ | URL โพสต์/เพจ/โปรไฟล์ที่ต้องการปั้ม |
| quantity | int | ✓ | จำนวนที่ต้องการ (ต้องอยู่ระหว่าง min–max) |
Response สำเร็จ
{
"order": 12345
}Response ล้มเหลว
{
"error": "Insufficient balance"
}📊 เช็คสถานะ (status)
?action=status
| Parameter | Type | Required | คำอธิบาย |
|---|---|---|---|
| api_key | string | ✓ | API Key ของคุณ |
| action | string | ✓ | status |
| order | int | ✓ | Order ID ที่ได้จากการสั่งซื้อ |
Response
{
"order": 12345,
"charge": "45.5000",
"status": "Processing",
"remains": 200,
"start_count": 1500,
"currency": "THB"
}| Field | คำอธิบาย |
|---|---|
| status | Pending → Processing → Completed / Partial / Canceled |
| remains | จำนวนที่เหลือ (กรณี Partial) |
| start_count | จำนวนเริ่มต้นตอนสั่ง |
💰 เช็คยอดเงิน (balance)
?action=balance&api_key=YOUR_KEY
Response
{
"balance": "1250.0000",
"currency": "THB"
}🧮 วิธีคำนวณราคา
ราคาต่อ 1,000: ค่า rate ที่แสดงคือราคาต่อ 1,000 ยูนิต
สูตร: ราคา = (rate / 1000) × quantity
ตัวอย่าง: rate = 45.50, quantity = 5000
ราคา = (45.50 / 1000) × 5000 = ฿227.50
📝 ตัวอย่างการใช้งาน (PHP)
<?php
$apiKey = 'YOUR_API_KEY';
$baseUrl = 'https://otp24hr.store/api/v1/smm.php';
// 1. ดูรายการบริการ
$services = json_decode(file_get_contents(
"$baseUrl?action=services&api_key=$apiKey"
), true);
// 2. สั่งซื้อ
$ch = curl_init("$baseUrl?action=add");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'api_key' => $apiKey,
'action' => 'add',
'service' => 14157, // Service ID
'link' => 'https://facebook.com/your-page',
'quantity' => 1000,
]),
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
$orderId = $result['order'];
// 3. เช็คสถานะ
$status = json_decode(file_get_contents(
"$baseUrl?action=status&api_key=$apiKey&order=$orderId"
), true);
echo $status['status']; // Processing, Completed, etc.
?>import requests
API_KEY = 'YOUR_API_KEY'
BASE = 'https://otp24hr.store/api/v1/smm.php'
# 1. ดูบริการ
services = requests.get(BASE, params={
'action': 'services', 'api_key': API_KEY
}).json()
# 2. สั่งซื้อ
order = requests.post(BASE, data={
'action': 'add',
'api_key': API_KEY,
'service': 14157,
'link': 'https://facebook.com/your-page',
'quantity': 1000,
}).json()
order_id = order['order']
# 3. เช็คสถานะ
status = requests.post(BASE, data={
'action': 'status',
'api_key': API_KEY,
'order': order_id,
}).json()
print(status['status'])⚠️ Error Codes (SMM)
API key requiredไม่ได้ส่ง api_keyInvalid API keyAPI key ไม่ถูกต้องService not foundไม่พบ service ID ที่ระบุLink requiredไม่ได้ส่ง link มาMin quantity is Xจำนวนต่ำกว่าขั้นต่ำMax quantity is XจำนวนเกินสูงสุดInsufficient balanceยอดเงินไม่พอOrder not foundไม่พบ order ID ที่ระบุGame Top-up API
API เติมเกมออนไลน์ 50+ เกม — รองรับ ROV, Free Fire, Genshin Impact, Roblox, PUBG และอีกมากมาย
Base URL:
https://otp24hr.store/api/v1/game.php🎮 รายการเกม (products)
?action=products&api_key=YOUR_KEYResponse
{
"ok": true,
"data": [
{
"product_code": "102",
"name": "Garena RoV",
"image": "https://...",
"min_price": 10.50
}, ...
]
}📦 แพ็คเกจ (packages)
?action=packages&api_key=YOUR_KEY&product_code=102| Parameter | Required | คำอธิบาย |
|---|---|---|
| product_code | ✓ | รหัสเกมจาก products |
Response
{
"ok": true,
"data": [
{ "package_id": "60", "name": "40 คูปอง", "price": 42.80 },
{ "package_id": "61", "name": "90 คูปอง", "price": 96.30 }, ...
]
}🛒 สั่งเติม (order)
?action=order| Parameter | Type | Required | คำอธิบาย |
|---|---|---|---|
| api_key | string | ✓ | API Key |
| action | string | ✓ | order |
| product_code | string | ✓ | รหัสเกม |
| package_id | string | ✓ | รหัสแพ็คเกจ |
| uid | string | ✓ | Player ID ในเกม |
Response สำเร็จ
{
"ok": true,
"order_id": 456,
"game": "Garena RoV",
"package": "40 คูปอง",
"price": 42.80,
"status": "pending"
}📊 เช็คสถานะ (status)
?action=status&api_key=YOUR_KEY&order_id=456Response
{
"ok": true,
"order_id": 456,
"game": "Garena RoV",
"package": "Garena RoV - 40 คูปอง",
"player_id": "10062885063",
"price": 42.80,
"status": "success"
}📝 ตัวอย่าง (PHP)
<?php
$key = 'YOUR_API_KEY';
$api = 'https://otp24hr.store/api/v1/game.php';
// 1. ดูรายการเกม
$games = json_decode(file_get_contents("$api?action=products&api_key=$key"), true);
// 2. ดูแพ็คเกจ
$pkgs = json_decode(file_get_contents("$api?action=packages&api_key=$key&product_code=102"), true);
// 3. สั่งเติม
$ch = curl_init("$api?action=order");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'api_key' => $key, 'action' => 'order',
'product_code' => '102', 'package_id' => '60',
'uid' => '10062885063',
]),
CURLOPT_RETURNTRANSFER => true,
]);
$result = json_decode(curl_exec($ch), true);
// 4. เช็คสถานะ
$status = json_decode(file_get_contents(
"$api?action=status&api_key=$key&order_id=" . $result['order_id']
), true);
?>API Playground
ทดสอบ API ได้เลยโดยไม่ต้องเขียนโค้ด — เลือก endpoint กรอก parameter แล้วกด Send