API Key Do Hệ Thống Cấp Riêng Cho Từng Tài Khoản. Vào Thông Tin Tài Khoản Để Xem Và Sao Chép. Không Cần Đăng Nhập Khi Gọi API.
Cách Gửi API Key (Chọn 1)
1. Header (Khuyến Nghị)
X-API-Key: e10adc3949ba59abbe56e057f20f883e
2. Query String
?api_key=e10adc3949ba59abbe56e057f20f883e
3. Body JSON (Cho POST)
{"api_key": "e10adc3949ba59abbe56e057f20f883e"}
Lưu Ý Quan Trọng
Thành Công
{
"success": true,
"message": "Lấy Số Dư Thành Công!",
"data": { }
}
Thất Bại
{
"success": false,
"message": "API Key Không Hợp Lệ...",
"data": null
}
| Trường | Kiểu | Mô Tả |
|---|---|---|
| success | boolean | true = Thành Công, false = Lỗi |
| message | string | Thông Báo Tiếng Việt Để Hiển Thị Cho Người Dùng |
| data | object / null | Dữ Liệu Chi Tiết, Null Khi Lỗi |
| STT | Tên API | Method | Endpoint | Mô Tả |
|---|---|---|---|---|
| 1 | Lấy Số Dư | GET | balance | Lấy Số Dư Hiện Tại Của Tài Khoản. |
| 2 | Lấy Giá Dịch Vụ | GET | services | Lấy Danh Sách Gói Dịch Vụ. Giá Trả Về Đã Được Tính Sẵn Theo Role Của Tài Khoản. |
| 3 | Mua Dịch Vụ | POST | order | Đặt Gói Dịch Vụ Bằng Mã Mời (Friend Code). Tự Động Trừ Số Dư. |
| 4 | Lịch Sử Mua Hàng | GET | orders | Lấy Danh Sách Đơn Hàng Đã Đặt Của Tài Khoản, Mới Nhất Trước. |
| 5 | Chi Tiết Đơn Hàng | GET | order-detail | Lấy Chi Tiết 1 Đơn Hàng Theo ID, Kèm Tiến Độ Xử Lý. |
Lấy Số Dư Hiện Tại Của Tài Khoản.
Tham Số
| Tham Số | Kiểu | Bắt Buộc | Mô Tả |
|---|---|---|---|
| api_key | string | TÙY CHỌN | API Key. Không Cần Nếu Đã Gửi Qua Header X-API-Key. |
cURL
curl -X GET "https://chungsuclienquan.com/api/v1/balance" \ -H "X-API-Key: e10adc3949ba59abbe56e057f20f883e"
PHP
$apiKey = 'e10adc3949ba59abbe56e057f20f883e'; // Lưu Ở Phía SERVER
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://chungsuclienquan.com/api/v1/balance',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: '.$apiKey],
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_TIMEOUT => 30,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if($result['success']){
echo 'Số Dư: '.number_format($result['data']['balance']).'đ';
}
JavaScript
async function getBalance(apiKey) {
const res = await fetch('https://chungsuclienquan.com/api/v1/balance', {
headers: { 'X-API-Key': apiKey }
});
const json = await res.json();
if (!json.success) throw new Error(json.message);
return json.data;
}
Phản Hồi Mẫu
{
"success": true,
"message": "Lấy Số Dư Thành Công!",
"data": {
"balance": 500000,
"balance_ref": 0,
"total_affiliate_earned": 0,
"currency": "VND"
}
}
Trường Dữ Liệu
| Trường | Kiểu | Mô Tả |
|---|---|---|
| balance | float | Số Dư Khả Dụng (VNĐ) |
| balance_ref | float | Số Dư Quy Đổi Tham Chiếu |
| total_affiliate_earned | int | Tổng Hoa Hồng Đã Nhận |
| currency | string | Luôn Là VND |
Lấy Danh Sách Gói Dịch Vụ. Giá Trả Về Đã Được Tính Sẵn Theo Role Của Tài Khoản.
Tham Số
| Tham Số | Kiểu | Bắt Buộc | Mô Tả |
|---|---|---|---|
| api_key | string | TÙY CHỌN | API Key. Không Cần Nếu Đã Gửi Qua Header X-API-Key. |
cURL
curl -X GET "https://chungsuclienquan.com/api/v1/services" \ -H "X-API-Key: e10adc3949ba59abbe56e057f20f883e"
PHP
$apiKey = 'e10adc3949ba59abbe56e057f20f883e';
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://chungsuclienquan.com/api/v1/services',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: '.$apiKey],
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_TIMEOUT => 30,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
foreach($result['data']['services'] as $svc){
echo $svc['name'].' - '.number_format($svc['price']).'đ';
}
JavaScript
async function getServices(apiKey) {
const res = await fetch('https://chungsuclienquan.com/api/v1/services', {
headers: { 'X-API-Key': apiKey }
});
const json = await res.json();
if (!json.success) throw new Error(json.message);
return json.data;
}
Phản Hồi Mẫu
{
"success": true,
"message": "Lấy Danh Sách Dịch Vụ Thành Công!",
"data": {
"role": "affiliate",
"currency": "VND",
"total": 1,
"services": [
{
"id": 3,
"name": "38 VÉ NHẢY",
"description": "Tốc độ siêu tốc",
"price": 4000,
"price_all_roles": {
"user": 6000,
"affiliate": 3500,
"agency": 3500,
"vip_partner": 3000
},
"quantity_included": 38,
"unit": "Bước Nhảy"
}
]
}
}
Trường Dữ Liệu
| Trường | Kiểu | Mô Tả |
|---|---|---|
| role | string | Role Tài Khoản: user, affiliate, agency, vip_partner |
| total | int | Tổng Số Gói Đang Hoạt Động |
| services | array | Danh Sách Gói Dịch Vụ |
| services[].id | int | Mã Gói - Dùng Để Gọi API Mua Dịch Vụ |
| services[].price | int | Giá Áp Dụng Cho Tài Khoản Này (Đã Tính Theo Role) |
| services[].price_all_roles | object | Bảng Giá Đầy Đủ Theo Từng Role |
| services[].quantity_included | int | Số Lượng Bước Nhảy Có Trong 1 Gói |
| services[].unit | string | Đơn Vị Tính |
Đặt Gói Dịch Vụ Bằng Mã Mời (Friend Code). Tự Động Trừ Số Dư.
Tham Số
| Tham Số | Kiểu | Bắt Buộc | Mô Tả |
|---|---|---|---|
| package_id | int | BẮT BUỘC | Mã Gói, Lấy Từ API services |
| quantity | int | TÙY CHỌN | Số Gói Mua. Mặc Định 1, Tối Đa 100 |
| referral_codes | array | BẮT BUỘC | Danh Sách Mã Mời. Tối Đa 500 Mã |
| note | string | TÙY CHỌN | Ghi Chú. Tối Đa 500 Ký Tự |
| api_key | string | TÙY CHỌN | Chỉ Cần Khi Không Gửi Header X-API-Key |
cURL
curl -X POST "https://chungsuclienquan.com/api/v1/order" \
-H "X-API-Key: e10adc3949ba59abbe56e057f20f883e" \
-H "Content-Type: application/json" \
-d '{
"package_id": 3,
"quantity": 2,
"referral_codes": ["CODEAAA111", "CODEBBB222"],
"note": "Giao hàng giúp khách"
}'
PHP
$apiKey = 'e10adc3949ba59abbe56e057f20f883e';
$payload = [
'package_id' => 3,
'quantity' => 2,
'referral_codes' => ['CODEAAA111', 'CODEBBB222'],
'note' => 'Giao hàng giúp khách',
];
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://chungsuclienquan.com/api/v1/order',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
CURLOPT_HTTPHEADER => ['X-API-Key: '.$apiKey, 'Content-Type: application/json'],
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_TIMEOUT => 30,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
JavaScript
async function buyService(apiKey, packageId, quantity, referralCodes, note) {
const res = await fetch('https://chungsuclienquan.com/api/v1/order', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-API-Key': apiKey },
body: JSON.stringify({ package_id: packageId, quantity, referral_codes: referralCodes, note })
});
const json = await res.json();
if (!json.success) throw new Error(json.message);
return json.data;
}
Phản Hồi Mẫu
{
"success": true,
"message": "Đặt Hàng Thành Công 2 Đơn (2 Gói x 38). Vui Lòng Chờ Hệ Thống Xử Lý Trong Giây Lát!",
"data": {
"order_ids": [
120,
121
],
"count": 2,
"package_name": "38 VÉ NHẢY",
"quantity": 2,
"tickets_per_order": 76,
"total_price": 24000,
"balance": 476000,
"currency": "VND"
}
}
Trường Dữ Liệu
| Trường | Kiểu | Mô Tả |
|---|---|---|
| order_ids | array | Mã Các Đơn Vừa Tạo - Dùng Để Tra Cứu Chi Tiết |
| count | int | Số Đơn Đã Tạo |
| package_name | string | Tên Gói |
| quantity | int | Số Gói Đã Mua |
| tickets_per_order | int | Số Bước Nhảy Của Mỗi Đơn |
| total_price | int | Tổng Tiền Đã Trừ |
| balance | float | Số Dư Còn Lại Sau Khi Mua |
Lấy Danh Sách Đơn Hàng Đã Đặt Của Tài Khoản, Mới Nhất Trước.
Tham Số
| Tham Số | Kiểu | Bắt Buộc | Mô Tả |
|---|---|---|---|
| page | int | TÙY CHỌN | Trang Hiện Tại. Mặc Định 1 |
| limit | int | TÙY CHỌN | Số Đơn mỗi Trang. Mặc Định 20, Tối Đa 100 |
| status | string | TÙY CHỌN | Lọc: pending, processing, completed, cancelled |
| api_key | string | TÙY CHỌN | API Key. Không Cần Nếu Đã Gửi Quac Header X-API-Key. |
cURL
curl -X GET "https://chungsuclienquan.com/api/v1/orders?page=1&limit=20&status=completed" \ -H "X-API-Key: e10adc3949ba59abbe56e057f20f883e"
PHP
$apiKey = 'e10adc3949ba59abbe56e057f20f883e';
$url = 'https://chungsuclienquan.com/api/v1/orders?page=1&limit=20';
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: '.$apiKey],
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_TIMEOUT => 30,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
foreach($result['data']['orders'] as $order){
echo '#'.$order['id'].' - '.$order['status_label'];
}
JavaScript
async function getOrders(apiKey, page = 1, limit = 20, status = '') {
let url = 'https://chungsuclienquan.com/api/v1/orders?page=' + page + '&limit=' + limit;
if (status) url += '&status=' + encodeURIComponent(status);
const res = await fetch(url, { headers: { 'X-API-Key': apiKey } });
const json = await res.json();
if (!json.success) throw new Error(json.message);
return json.data;
}
Phản Hồi Mẫu
{
"success": true,
"message": "Lấy Lịch Sử Mua Hàng Thành Công!",
"data": {
"orders": [
{
"id": 121,
"package_id": 3,
"package_name": "38 VÉ NHẢY",
"tickets": 76,
"price_per_ticket": 12000,
"total_price": 12000,
"referral_code": "CODEBBB222",
"status": "pending",
"status_label": "Đang Chờ",
"paid": true,
"created_at": "2026-10-22 22:17:55",
"processed_at": null
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 2,
"total_pages": 1
},
"filters": {
"status": "completed"
},
"currency": "VND"
}
}
Trường Dữ Liệu
| Trường | Kiểu | Mô Tả |
|---|---|---|
| orders | array | Danh Sách Đơn Hàng |
| orders[].id | int | Mã Đơn - Dùng Để Gọi API Chi Tiết |
| orders[].status | string | pending | processing | completed | cancelled |
| orders[].status_label | string | Nhãn Tiếng Việt Để Hiện Thị |
| orders[].total_price | int | Tổng Tiển Đơn Này |
| orders[].referral_code | string | Mã Mời Đã Dùng |
| orders[].paid | boolean | Đã Thanh Toán Hay Chưa |
| orders[].created_at | string | Thời Gian Đặt (Y-m-d H:i:s) |
| orders[].processed_at | string | Thời Gian Xử Lý Xong |
| pagination | object | Thông Tin Phân Trang |
Lấy Chi Tiết 1 Đơn Hàng Theo ID, Kèm Tiến Độ Xử Lý.
Tham Số
| Tham Số | Kiểu | Bắt Buộc | Mô Tả |
|---|---|---|---|
| order_id | int | BẮT BUỘC | Mã Đơn Hàng Đã Xem |
| api_key | string | TÙY CHỌN | API Key. Không Cần Nếu Đã Gửi Qua Header X-API-Key. |
cURL
curl -X GET "https://chungsuclienquan.com/api/v1/order-detail?order_id=120" \ -H "X-API-Key: e10adc3949ba59abbe56e057f20f883e"
PHP
$apiKey = 'e10adc3949ba59abbe56e057f20f883e';
$url = 'https://chungsuclienquan.com/api/v1/order-detail?order_id=120';
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: '.$apiKey],
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_TIMEOUT => 30,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
echo 'Tiến Độ: '.$result['data']['order']['progress'].'%';
JavaScript
async function getOrderDetail(apiKey, orderId) {
const res = await fetch('https://chungsuclienquan.com/api/v1/order-detail?order_id=' + orderId, {
headers: { 'X-API-Key': apiKey }
});
const json = await res.json();
if (!json.success) throw new Error(json.message);
return json.data;
}
Phản Hồi Mẫu
{
"success": true,
"message": "Lấy Chi Tiết Đơn Hàng Thành Công!",
"data": {
"order": {
"id": 120,
"package_id": 3,
"package_name": "38 VÉ NHẢY",
"referral_code": "CODEAAA111",
"tickets": 76,
"price_per_ticket": 12000,
"total_price": 12000,
"status": "processing",
"status_label": "Đang Xử Lý",
"progress": 45,
"progress_tickets": 23,
"paid": true,
"note": "Giao Hàng Giúp Khách",
"admin_note": "",
"created_at": "2026-10-22 22:17:55",
"start_processing_at": "2026-10-22 22:20:00",
"processed_at": null
},
"currency": "VND"
}
}
Trường Dữ Liệu
| Trường | Kiểu | Mô Tả |
|---|---|---|
| order.id | int | Mã Đơn |
| order.status | string | Trạng Thái Đơn |
| order.progress | int | Tiến Độ Xử Lý (0 -> 100) |
| order.progress_tickets | int | Số Bước Nhảy Đã Cày Xong |
| order.tickets | int | Tổng Số Bước Nhảy Cần Cày |
| order.paid | boolean | Đã Thanh Toán Hay Chưa |
| order.note | string | Ghi Chú Người Mua |
| order.admin_note | string | Ghi Chú Của Đơn Vị Vận Hành |
| order.start_processing_at | string | Thời Gian Bắt Đầu Xử Lý |
| order.processed_at | string | Thời Gian Hoàn Thành |
| Mã | Ý Nghĩa | Xử Lý |
|---|---|---|
| 200 | Thành Công | - |
| 400 | Sai Tham Số Đầu Vào | Kiểm Tra Lại Tham Số Gửi Lên |
| 401 | API Key Sai / Tài Khoản Bị Khóa | Kiểm Tra Lại API Key Trong Thông Tin Tài Khoản |
| 404 | Không Tìm Thấy Đơn Hàng | Kiểm Tra Lại ID Đơn Hàng |
| 405 | Sai Phương Thức HTTP | Đọc Mỗi Endpoint Dùng GET Hay POST |
| 409 | Số Dư Không Đủ (Đã Bị Xử Lý Bởi Request Khác) | Tải Lại Số Dư Và Thử Lại |
| 429 | Gọi Quá Nhanh, Bị Giới Hạn | Chờ Vài Giây Rồi Thử Lại |
| 500 | Lỗi Hệ Thống | Thử Lại Sau, Nếu Vẫn Lỗi Liên Hệ Chúng Tôi |
Checklist Bảo Mật