Tài liệu API

Sử dụng API để tích hợp với hệ thống một cách dễ dàng

Thông tin chung

  • Địa chỉ gốc (Endpoint): https://dichvudev.fun/api.php
  • Phương thức hỗ trợ: GET và POST (tất cả hành động đều hỗ trợ cả hai)
  • Định dạng dữ liệu: JSON (UTF-8)
  • Mã hóa: UTF-8

Xác thực

Tất cả yêu cầu đều cần token để xác thực người dùng. Token được cấp trong trang Hồ sơ cá nhân (tab API Token).

Gửi token qua tham số api_token trong URL hoặc dữ liệu POST:

https://dichvudev.fun/api.php?action=get_products&api_token=TOKEN_CUA_BAN
Token có hiệu lực 30 ngày kể từ khi tạo. Hãy bảo mật token tuyệt đối, không chia sẻ với người khác.

Định dạng phản hồi

Mọi phản hồi đều có cấu trúc JSON chung:

{ "success": true, // true nếu thành công, false nếu thất bại "message": "Thông báo", // Mô tả kết quả "data": { ... } // Dữ liệu trả về (nếu có), có thể là object hoặc array }

Danh sách hành động

1. Lấy danh sách sản phẩm

GET https://dichvudev.fun/api.php?action=get_products

Mô tả: Lấy danh sách sản phẩm đang bán, có phân trang và lọc theo danh mục.

Tham số

TênKiểuBắt buộcMô tả
category_idintegerKhôngLọc theo ID danh mục (nếu không có thì lấy tất cả)
pageintegerKhôngSố trang hiện tại (mặc định: 1)
limitintegerKhôngSố sản phẩm mỗi trang, tối đa 50 (mặc định: 10)

Ví dụ request

https://dichvudev.fun/api.php?action=get_products&category_id=2&page=1&limit=5&api_token=TOKEN

Ví dụ response (thành công)

{ "success": true, "message": "Lấy danh sách sản phẩm thành công.", "data": { "total": 15, "page": 1, "limit": 5, "total_pages": 3, "products": [ { "id": 1, "category_id": 2, "product_name": "UG 4H Loaclstoge", "description": "Định dạng loaclstoge ug 4h", "thumbnail": "uploads/products/...", "price_xu": 150, "price_vnd": "150.00", "status": 1, "xuly": 0, "min_quantity": 1, "max_quantity": 999, "created_at": "2026-05-21 21:01:08", "updated_at": "2026-07-07 10:33:27", "category_name": "UG 4H", "stock": 110 // Số lượng còn trong kho } // ... các sản phẩm khác ] } }

2. Lấy chi tiết sản phẩm

GET https://dichvudev.fun/api.php?action=get_product

Mô tả: Lấy thông tin chi tiết của một sản phẩm cụ thể.

Tham số

TênKiểuBắt buộcMô tả
product_idintegerID của sản phẩm cần xem

Ví dụ request

https://dichvudev.fun/api.php?action=get_product&product_id=1&api_token=TOKEN

Ví dụ response (thành công)

{ "success": true, "message": "Lấy thông tin sản phẩm thành công.", "data": { "id": 1, "category_id": 2, "product_name": "UG 4H Loaclstoge", "description": "Định dạng loaclstoge ug 4h", "thumbnail": "uploads/products/...", "price_xu": 150, "price_vnd": "150.00", "status": 1, "xuly": 0, "min_quantity": 1, "max_quantity": 999, "created_at": "2026-05-21 21:01:08", "updated_at": "2026-07-07 10:33:27", "category_name": "UG 4H", "stock": 110 } }

Ví dụ response (không tìm thấy)

{ "success": false, "message": "Sản phẩm không tồn tại.", "data": null }

3. Kiểm tra đơn hàng

GET https://dichvudev.fun/api.php?action=get_order

Mô tả: Lấy thông tin chi tiết của một đơn hàng mà bạn đã mua.

Bạn chỉ có thể xem đơn hàng của chính mình. Nếu bạn không phải chủ sở hữu đơn hàng, API sẽ trả về lỗi 404.

Tham số

TênKiểuBắt buộcMô tả
order_idintegerID của đơn hàng cần kiểm tra

Ví dụ request

https://dichvudev.fun/api.php?action=get_order&order_id=3124&api_token=TOKEN

Ví dụ response (thành công)

{ "success": true, "message": "Lấy thông tin đơn hàng thành công.", "data": { "id": 3124, "user_id": 1, "product_id": 1, "product_name": "UG 4H Loaclstoge", "price_xu": 150, "price_vnd": "0.00", "payment_type": "xu", "status": 1, // 0: chờ xử lý, 1: hoàn thành, 2: thất bại "created_at": "2026-07-23 08:24:02", "product_name_ref": "UG 4H Loaclstoge" } }
Lưu ý: Trường account_info (thông tin tài khoản) bị ẩn đi để bảo mật. Nếu bạn muốn xem, hãy đăng nhập và xem trong lịch sử đơn hàng.

4. Mua hàng

POST https://dichvudev.fun/api.php?action=buy_product

Mô tả: Thực hiện mua một sản phẩm. Hành động này sẽ trừ tiền từ số dư của bạn và trả về thông tin tài khoản (nếu sản phẩm được xử lý tự động).

Cảnh báo: Hành động này sẽ trừ tiền ngay lập tức. Hãy kiểm tra kỹ số dư và sản phẩm trước khi gọi.

Tham số

TênKiểuBắt buộcMô tả
product_idintegerID của sản phẩm cần mua
quantityintegerKhôngSố lượng tài khoản cần mua (mặc định: 1)
payment_typestring"xu" hoặc "vnd"

Ví dụ request (dạng JSON – khuyến nghị)

POST https://dichvudev.fun/api.php?action=buy_product Content-Type: application/json { "product_id": 1, "quantity": 1, "payment_type": "xu", "api_token": "TOKEN" }

Ví dụ request (dạng form-data hoặc query string)

https://dichvudev.fun/api.php?action=buy_product&product_id=1&quantity=1&payment_type=xu&api_token=TOKEN

Ví dụ response (thành công – sản phẩm tự động)

{ "success": true, "message": "Mua hàng thành công.", "data": { "order_id": "3124", "product_name": "UG 4H Loaclstoge", "quantity": 1, "total_price": 150, "payment_type": "xu", "status": "Hoàn thành", "account_info": "{\"UGPHONE-ID\": \"4de627f9-...\", ...}" } }

Ví dụ response (thành công – sản phẩm cần xử lý thủ công)

{ "success": true, "message": "Mua hàng thành công.", "data": { "order_id": "3123", "product_name": "Gmail Edu .Live 10 Phút", "quantity": 1, "total_price": 70, "payment_type": "xu", "status": "Chờ xử lý", "account_info": "Đơn hàng đang chờ xử lý, admin sẽ giao tài khoản sớm." } }

Ví dụ response (lỗi – không đủ số dư)

{ "success": false, "message": "Số dư không đủ. Cần 150 Xu, hiện có 100 Xu.", "data": null }

Ví dụ response (lỗi – hết hàng)

{ "success": false, "message": "Không đủ hàng. Còn 0 tài khoản.", "data": null }

5. Lấy số dư tài khoản

GET https://dichvudev.fun/api.php?action=get_balance

Mô tả: Lấy số dư hiện tại của tài khoản (cả VNĐ và Xu).

Tham số

Không có tham số bắt buộc ngoài api_token.

Ví dụ request

https://dichvudev.fun/api.php?action=get_balance&api_token=TOKEN

Ví dụ response (thành công)

{ "success": true, "message": "Lấy số dư thành công.", "data": { "balance_vnd": 250000, "balance_xu": 15000 } }

Mã lỗi HTTP

Ý nghĩa
200Thành công
400Dữ liệu đầu vào không hợp lệ (thiếu tham số, sai kiểu dữ liệu)
401Token không hợp lệ hoặc đã hết hạn
404Không tìm thấy tài nguyên (sản phẩm, đơn hàng)
429Quá nhiều yêu cầu (vượt giới hạn rate limit)
500Lỗi máy chủ nội bộ

Giới hạn tốc độ (Rate Limit)

Mỗi token được phép gọi tối đa 30 yêu cầu mỗi phút. Nếu vượt quá, API sẽ trả về mã lỗi 429 với thông báo:

{ "success": false, "message": "Quá nhiều yêu cầu. Vui lòng thử lại sau.", "data": null }
Nếu bạn cần tăng giới hạn, vui lòng liên hệ quản trị viên.

Lưu ý bảo mật

  • Luôn sử dụng HTTPS trong môi trường sản xuất để bảo vệ token và dữ liệu.
  • Không chia sẻ token với bất kỳ ai.
  • Token được mã hóa bằng bcrypt trong cơ sở dữ liệu, không thể giải mã ngược.
  • Hạn chế gửi token qua URL nếu không cần thiết, ưu tiên gửi qua Header hoặc dữ liệu POST.
  • Thường xuyên kiểm tra và xóa các token không sử dụng trong trang hồ sơ.

Hỗ trợ

Nếu bạn gặp vấn đề khi sử dụng API, vui lòng liên hệ bộ phận hỗ trợ qua:

  • Email: support@dichvudev.fun
  • Hoặc đặt câu hỏi trong nhóm hỗ trợ của hệ thống.

Chúng tôi sẽ phản hồi trong thời gian sớm nhất.