📚 API Documentation

SIM Register Service - API Reference

Base URL: https://portal.thong2303.io.vn

Lưu ý về Authentication: Hầu hết các API yêu cầu token. Gửi token trong header Authorization: <token> hoặc trong body/query parameter token. Token được nhận từ API Login.

🔐 0. Đăng nhập (Login)

POST https://portal.thong2303.io.vn/api/auth/login
Đăng nhập vào hệ thống để lấy token. Token này sẽ được sử dụng cho tất cả các API khác yêu cầu authentication. Token có thời hạn 24 giờ.
Headers:
Content-Type: application/json
Body:
Field Type Required Description
email String Required Email đăng nhập
password String Required Mật khẩu (tối thiểu 8 ký tự)
Body Example:
{
  "email": "user@example.com",
  "password": "password123"
}
Response (200):
{
  "code": 200,
  "message": "Đăng nhập thành công.",
  "point": 50000,
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "email": "user@example.com",
    "fullname": "Nguyễn Văn A",
    "point": 50000,
    "countBuyMail": 10,
    "countBuySim": 5
  }
}
Error Response:
  • 404: Email hoặc mật khẩu không đúng
  • 500: Lỗi server
Quan trọng: Lưu lại token từ response để sử dụng cho các API khác. Token này chứa thông tin email và password đã hash.

💰 Kiểm tra số điểm (Check Point)

POST https://portal.thong2303.io.vn/api/auth/checkPoint
Kiểm tra số điểm hiện tại của tài khoản. API này giúp bạn biết số điểm còn lại trước khi sử dụng các dịch vụ. Đăng ký SIM cần 8,000 điểm, lấy OTP SIM cần 8,000 điểm, lấy OTP Mail cần 1,500 điểm.
Headers:
Authorization: <token>
Content-Type: application/json
Hoặc gửi token trong body: {"token": "..."} hoặc query: ?token=...
Body:
Không cần body (nếu đã gửi token trong header)
Nếu chưa gửi token trong header, có thể gửi trong body:
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Response (200):
{
  "code": 200,
  "point": 50000,
  "email": "user@example.com"
}
Error Response:
  • 403: Token là bắt buộc
  • 404: Token không hợp lệ hoặc không tìm thấy tài khoản
Gợi ý: Nên kiểm tra điểm trước khi gọi các API đăng ký SIM hoặc lấy OTP để tránh lỗi "Không đủ điểm".

1. Lấy danh sách App

POST https://portal.thong2303.io.vn/api/app/
Lấy danh sách các ứng dụng có sẵn để đăng ký SIM. Kết quả được cache trong 8 giờ.
Headers:
Authorization: <token>
Content-Type: application/json
Body:
Không cần body
Response (200):
{
  "code": 200,
  "data": [
    {
      "id": 9,
      "name": "Facebook",
      // ... các thông tin app khác
    }
  ]
}

2. Đăng ký SIM

POST https://portal.thong2303.io.vn/api/sim/registerSIM
Đăng ký thuê một số SIM cho ứng dụng cụ thể. Yêu cầu tài khoản có ít nhất 8,000 điểm.
Headers:
Authorization: <token>
Content-Type: application/json
Body:
Field Type Required Description
appId Number Required ID của app từ danh sách app (API 1)
prefixCarrier String Optional Đầu số nhà mạng để lọc (ví dụ: "091", "098")
carrierId Number Optional ID nhà mạng: 6-Viettel, 7-Vinaphone, 8-Vietnamobile, 9-MobiFone, 10-Itel, 11-Reddi, 12-Asim, 13-Myanmar, 14-G-Mobile, 15-Campuchia, 16-Mozmabi
carrierIdExpel Number Optional ID nhà mạng cần loại bỏ
countryCode String Optional Mã quốc gia: VNM (Việt Nam), CAM (Campuchia), MOZ (Mozambique)
prefixCarrierExpel String Optional Đầu số cần loại bỏ (ví dụ: "58")
Body Example:
{
  "appId": 9,
  "prefixCarrier": "091",
  "carrierId": 6
}
Response (200):
{
  "message": "...",
  "data": {
    "id": 123456,
    "number": "0912345678",
    // ... thông tin sim khác
  }
}
Error Response:
  • 403: Không đủ tiền để thuê sim (cần >= 8,000 điểm)
  • 400: AppId là bắt buộc

3. Lấy OTP từ SIM

POST https://portal.thong2303.io.vn/api/sim/getOTPByID
Lấy mã OTP từ SIM đã đăng ký. Yêu cầu tài khoản có ít nhất 8,000 điểm. Khi lấy OTP thành công, hệ thống sẽ tự động trừ 8,000 điểm và tăng số lần sử dụng.
Headers:
Authorization: <token>
Content-Type: application/json
Body:
Field Type Required Description
id Number Required ID của SIM từ kết quả đăng ký (API 2)
Body Example:
{
  "id": 123456
}
Response (200):
{
  "message": "...",
  "data": [
    {
      "id": 6535141,
      "otp": "473478",
      "message": "473478 là mã xác minh FACEBOOK của bạn.",
      "sender": "FACEBOOK",
      "type": "sms",
      "created_at": "2024-04-22T13:16:06.000Z"
    }
  ]
}
Error Response:
  • 403: Không đủ tiền để thuê sim (cần >= 8,000 điểm)
  • 409: id là bắt buộc
Lưu ý: Điểm chỉ bị trừ khi lấy OTP thành công (response code === 200). Nếu thất bại, điểm sẽ không bị trừ.

📜 4. Xem lịch sử đăng ký (Get Registration Records)

GET https://portal.thong2303.io.vn/api/reg-record/?type=sim
Xem lịch sử đăng ký SIM hoặc Mail của tài khoản. Trả về tối đa 50 record mới nhất, bao gồm thông tin SIM/Mail đã đăng ký và OTP đã lấy được.
Headers:
Authorization: <token>
Hoặc gửi token trong query: ?token=...
Query Parameters:
Parameter Type Required Description
type String Optional Loại record: sim hoặc mail (mặc định: sim)
token String Optional Token authentication (nếu không gửi trong header)
URL Examples:
  • https://portal.thong2303.io.vn/api/reg-record/?type=sim - Lấy lịch sử đăng ký SIM
  • https://portal.thong2303.io.vn/api/reg-record/?type=mail - Lấy lịch sử đăng ký Mail
  • https://portal.thong2303.io.vn/api/reg-record/?type=sim&token=... - Với token trong query
Response (200):
{
  "status": 200,
  "data": [
    {
      "type": "sim",
      "user": "user@example.com",
      "attributes": {
        "id": 123456,
        "number": "0912345678",
        "appId": 9
      },
      "otp": [
        {
          "id": 6535141,
          "otp": "473478",
          "message": "473478 là mã xác minh FACEBOOK của bạn.",
          "sender": "FACEBOOK",
          "type": "sms",
          "created_at": "2024-04-22T13:16:06.000Z"
        }
      ],
      "status": "getted",
      "createdAt": "2024-04-22T13:15:00.000Z",
      "updatedAt": "2024-04-22T13:16:06.000Z"
    }
  ]
}
Response Fields:
  • type: Loại record (sim hoặc mail)
  • user: Email của user đăng ký
  • attributes: Thông tin SIM/Mail (id, number, appId cho SIM hoặc email cho Mail)
  • otp: Mảng các OTP đã lấy được (rỗng nếu chưa lấy)
  • status: Trạng thái (pending - chưa lấy OTP, getted - đã lấy OTP)
  • createdAt: Thời gian đăng ký
  • updatedAt: Thời gian cập nhật lần cuối
Error Response:
  • 403: Token là bắt buộc
  • 404: Token không hợp lệ
  • 500: Lỗi server
Lưu ý: API chỉ trả về record của user đang đăng nhập. Không thể xem record của user khác. Kết quả được sắp xếp theo thời gian tạo (mới nhất trước), giới hạn tối đa 50 record.

📋 Luồng sử dụng đầy đủ

  1. Bước 0 (Bắt đầu): Gọi API POST /api/auth/login với email và password để nhận token. Lưu token này lại!
  2. Bước 0.5 (Tùy chọn): Gọi API POST /api/auth/checkPoint với token để kiểm tra số điểm hiện có
  3. Bước 1: Gọi API POST /api/app/ (kèm token) để lấy danh sách app và chọn appId
  4. Bước 2: Gọi API POST /api/sim/registerSIM (kèm token) với appId để đăng ký SIM, nhận được id của SIM
  5. Bước 3: Gọi API POST /api/sim/getOTPByID (kèm token) với id của SIM để lấy mã OTP
  6. Bước 4 (Tùy chọn): Gọi API GET /api/reg-record/?type=sim (kèm token) để xem lịch sử đăng ký và OTP đã lấy
Giải thích về điểm và chi phí:
  • Đăng ký SIM: Không trừ điểm (chỉ kiểm tra >= 8,000 điểm để đảm bảo có đủ điểm cho bước tiếp theo)
  • Lấy OTP từ SIM: Trừ 8,000 điểm/lần, chỉ trừ khi lấy OTP thành công
  • Lấy OTP từ Mail: Trừ 1,500 điểm/lần, chỉ trừ khi tìm thấy OTP trong email
  • Điểm có thể được nạp thêm bởi admin qua hệ thống quản lý

© 2024 SIM Register Service