🔌 Tài liệu Tích hợp API Đối tác (Partner API)
Đăng ký tài khoản, vào menu API đối tác để tạo mã Token Bearer.
Nạp tiền vào ví đại lý qua VietQR tự động để sẵn sàng gọi lệnh trừ tiền theo từng đơn.
Gọi GET /sim-plans để lấy ID gói và đơn giá ngày đã trừ chiết khấu.
Gọi POST /sim-activations để nạp theo số ngày (1–30 ngày).
1. Xác thực (Authorization)
Mọi request gửi lên hệ thống bắt buộc phải gửi kèm Token trong HTTP Header:
Authorization: Bearer vicstar_live_xxxxxxxxxxxxxxxxxxxxxxxx Content-Type: application/json Accept: application/json
* Toàn bộ dữ liệu trả về ở định dạng JSON chuẩn. Token sai, bị khoá hoặc thiếu header sẽ nhận lỗi 401 Unauthorized.
2. Kiểm tra số dư ví đại lý
Trả về số dư ví hiện tại của đối tác. Khuyến nghị hệ thống của bạn kiểm tra số dư trước khi kích hoạt gói để chủ động nạp thêm tiền khi ví sắp hết.
{
"success": true,
"balance": 2500000
}
3. Danh sách gói SIM vật lý & Đơn giá
Trả về danh sách các gói cước SIM vật lý đã được Quản trị viên cấp quyền tích hợp cho tài khoản đối tác của bạn. Giá trả về (price) đã tự động trừ chiết khấu riêng của tài khoản.
is_daily: true: Gói tính theo ngày. Cho phép nạp từ 1 đến 30 ngày (days: 1..30). Đơn giá ngày giảm dần theo số ngày nạp (càng nạp nhiều ngày đơn giá mỗi ngày càng rẻ).is_daily: false: Gói trọn gói với số ngày cố định (validity_days).
{
"success": true,
"count": 2,
"plans": [
{
"plan_id": 9,
"name": "Nhật Bản Softbank 1GB/ngày",
"country": "Nhật Bản",
"operator": "Softbank",
"data_amount": "1GB/ngày",
"validity_days": 1,
"is_daily": true,
"price": 9000,
"min_days": 1,
"max_days": 30,
"price_day_1": 18000,
"price_day_30": 270000,
"note": "Gói tính theo ngày: truyền tham số days (1-30). Đơn giá ngày giảm dần theo số ngày nạp."
},
{
"plan_id": 15,
"name": "Thái Lan TrueMove 15GB 8 ngày",
"country": "Thái Lan",
"operator": "TrueMove",
"data_amount": "Tổng 15GB",
"validity_days": 8,
"is_daily": false,
"price": 115000,
"note": "Gói trọn gói: tính theo giá cố định của gói."
}
]
}
4. Kích hoạt SIM vật lý theo ngày (1 – 30 ngày)
Nạp cước cho 1 số thẻ SIM (ICCID). Hệ thống sẽ tự động trừ số dư ví đại lý theo đơn giá đã chiết khấu, tự động gửi lệnh kích hoạt sang nhà mạng và tự động hoàn tiền 100% về ví trong tích tắc nếu thẻ SIM bị lỗi.
| Field | Kiểu | Bắt buộc | Mô tả chi tiết |
|---|---|---|---|
| plan_id | int | Có | ID của gói cước SIM vật lý (lấy từ API danh sách gói cước). |
| iccid | string | Có | Dãy 18 – 22 chữ số in trên phôi thẻ SIM vật lý. |
| days | int | Tùy chọn | Số ngày nạp (từ 1 đến 30 ngày đối với gói có is_daily: true). Mặc định là 1 nếu không truyền. |
| partner_ref | string | Khuyến nghị | Mã đơn hàng duy nhất phía đối tác để đối soát và chống nạp trùng 2 lần (Idempotency). Nếu gửi lại cùng mã này, hệ thống sẽ trả lại kết quả cũ mà không trừ tiền lần 2. |
| dry_run | boolean | Tùy chọn | Chế độ chạy thử: truyền true để kiểm tra tính hợp lệ và xem trước số tiền cần trừ ví mà KHÔNG trừ tiền ví thật, KHÔNG gửi lệnh kích hoạt thật. |
{
"plan_id": 9,
"iccid": "8984040000000000001",
"days": 7,
"partner_ref": "MY-ACT-2026-001",
"dry_run": false
}
{
"success": true,
"activation_id": 105,
"status": "pending",
"partner_ref": "MY-ACT-2026-001",
"days": 7,
"fee": 79000,
"balance": 2421000,
"message": "Yêu cầu nạp SIM đã được gửi thành công tới nhà mạng."
}
{
"success": true,
"dry_run": true,
"plan_id": 9,
"plan_name": "Nhật Bản Softbank 1GB/ngày",
"is_daily": true,
"iccid": "8984040000000000001",
"days": 7,
"fee": 79000,
"balance": 2500000,
"has_sufficient_balance": true,
"message": "Dữ liệu hợp lệ. Số dư ví đủ (2.500.000đ >= 79.000đ). Sẵn sàng kích hoạt thật."
}
5. Tra cứu trạng thái đơn kích hoạt SIM
Tra cứu kết quả xử lý của đơn nạp. Tham số {ref} có thể là partner_ref của phía bạn hoặc activation_id do hệ thống trả về.
{
"success": true,
"activation_id": 105,
"iccid": "8984040000000000001",
"status": "completed",
"partner_ref": "MY-ACT-2026-001",
"days": 7,
"fee": 79000,
"error": null,
"created_at": "2026-10-05 01:15:00"
}
6. Tra cứu lưu lượng & Hạn dùng số thẻ ICCID
Kiểm tra thông tin tình trạng thẻ SIM, lưu lượng dữ liệu đã tiêu thụ, ngày bắt đầu và kết thúc sử dụng gói cước.
{
"success": true,
"found": true,
"iccid": "8984040000000000001",
"status_label": "Đang hoạt động (Active)",
"plan_start": "2026-10-01 08:30:00",
"plan_end": "2026-10-08 08:30:00",
"data_used_label": "2.45 GB",
"usage_history": []
}
7. Mã nguồn mẫu tích hợp
curl -X POST 'https://esim.vicstar.vn/api/v1/sim-activations' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
"plan_id": 9,
"iccid": "8984040000000000001",
"days": 7,
"partner_ref": "REF-ORDER-001",
"dry_run": false
}'
8. Bảng mã phản hồi & Xử lý lỗi
| HTTP Code | Ý nghĩa | Giải pháp xử lý |
|---|---|---|
| 200 OK | Thành công (success: true) |
Giao dịch đã được hệ thống tiếp nhận, tiền ví đã trừ thành công. |
| 400 Bad Request | Số dư ví không đủ hoặc tham số không hợp lệ | Nạp thêm tiền vào ví đại lý hoặc kiểm tra lại trường error. |
| 401 Unauthorized | Thiếu Token hoặc Token không hợp lệ / bị thu hồi | Kiểm tra lại header Authorization: Bearer {token}. |
| 403 Forbidden | Cổng API đang tạm đóng hoặc Token bị tạm khoá do lỗi domain | Liên hệ với Quản trị viên Vicstar để mở quyền hoặc kiểm tra tên miền website. |
| 404 Not Found | Không tìm thấy mã gói cước hoặc mã đơn hàng | Kiểm tra lại plan_id hoặc partner_ref. |
| 422 Unprocessable | Dữ liệu không hợp lệ (sai số thẻ ICCID, số ngày ngoài 1–30) | Đảm bảo ICCID có 18–22 chữ số và số ngày nạp hợp lệ. |
| 429 Too Many Requests | Gửi lặp lại quá nhanh trong cùng 1 khoảng thời gian (Rate limit) | Giãn cách thời gian gửi request tối thiểu 1 – 2 giây. |