Cung cấp Tài Khoản
Premium & Thuê Số OTP
Mua sắm tài khoản an toàn, thanh toán tiện lợi và dịch vụ thuê số điện thoại lấy mã OTP hoàn toàn tự động 24/7.
Sản phẩm nổi bật
Các gói tài khoản được ưa chuộng nhất hiện nay
Thanh Toán Đơn Hàng
Vui lòng chuyển khoản với nội dung bên dưới để hệ thống duyệt tự động
Thông tin sản phẩm
Thanh toán bằng Số dư
Nạp Tiền Vào Số Dư
Vui lòng chuyển khoản với nội dung bên dưới để được cộng số dư tự động (hoặc admin duyệt)
Thông tin chuyển khoản
Quét mã thanh toán
Vui lòng nhập số tiền và bấm Xác Nhận bên trái để tạo mã QR nạp tiền.
Dịch Vụ Thuê Số OTP
Chọn dịch vụ bên dưới để thuê số nhận OTP tự động bằng Số dư
Tài khoản của tôi
Xin chào, !
Chương trình Giới thiệu bạn bè
Mời bạn bè đăng ký và nạp tối thiểu 20.000đ để nhận thưởng +3.000đ và 10% giá trị thẻ nạp của họ mãi mãi!
Lịch sử giới thiệu
| # | Thời gian | Người được giới thiệu | Trạng thái / Loại | Hoa hồng nhận được |
|---|
API Key
Dùng để tích hợp dịch vụ thuê số OTP vào Bot Telegram, Web của bạn.
Thiết lập tài khoản
Thêm email để có thể sử dụng chức năng Quên mật khẩu.
Lịch sử mua hàng & Tài khoản đã cấp
| # | Mã ĐH | Sản phẩm | Ngày mua | Bảo hành | Trạng thái | Thông tin tài khoản |
|---|
Lịch sử thuê OTP
| # | Ngày thuê | Dịch vụ | Số ĐT | Giá | Trạng thái | Mã OTP | Hành động |
|---|
Lịch sử Nạp tiền
| # | Thời gian | Mã GD (Memo) | Số tiền nạp | Trạng thái | Hành động |
|---|
Thông báo & Sự kiện
Cập nhật tin tức mới nhất và hướng dẫn từ hệ thống.
Quản Trị Hệ Thống
Tổng quan và quản lý toàn bộ hệ thống.
Biểu đồ Doanh Thu (7 ngày)
Danh sách đơn hàng
| Mã ĐH | Khách hàng | Sản phẩm | Ngày mua | Bảo hành | Trạng thái | Xử lý |
|---|
Duyệt Nạp Tiền
| Mã GD | Khách hàng | Số tiền | Mã Nạp | Hành động |
|---|
Quản Lý Sản Phẩm
| Ảnh | Tên Sản Phẩm | Thời Hạn | Bảo Hành | Giá | Kho | Ghi chú | Hành động |
|---|
Quản Lý Thành Viên
| Tên Đăng Nhập | Số dư | Hành động |
|---|
Hỗ trợ khách hàng (Chat)
Chế Độ Bảo Trì Đang hoạt động bình thường
Bật bảo trì để hiển thị trang thông báo cho khách. Admin luôn bypass và truy cập bình thường.
Thông tin liên hệ khẩn cấp (để trống nếu không dùng)
Quản Lý App OTP Hiển Thị Lấy từ chaycodeso3.com
Chọn app muốn hiển thị cho khách hàng từ toàn bộ danh sách trên web mẹ. Lưu xong sẽ cập nhật ngay cả web lẫn bot.
Nhấn "Tải danh sách" để xem toàn bộ app từ web mẹ và chọn app muốn bán.
Hình Ảnh & Phân Nhóm App OTP URL + Nhóm thủ công
Gán nhóm (Mua sắm, Mạng xã hội...) và nhập URL ảnh cho từng app. Bot Telegram cũng tự động hiển thị theo nhóm.
Nhấn "Tải danh sách" để gán nhóm và nhập URL ảnh cho từng app.
Ghi Chú OTP Theo App Khách hàng sẽ thấy trước khi mua
Thêm ghi chú cảnh báo, hướng dẫn cho từng app OTP. Khách hàng sẽ đọc ghi chú trước khi xác nhận thuê số.
⚡ Cài đặt ShopminiNet API Chưa có key
Lưu API Key ShopminiNet để hệ thống tự động mua hàng. Đổi tài khoản → cập nhật key ở đây rồi Save.
Bot Telegram Nhận Thông Báo 0 bot
Thêm bot Telegram để nhận thông báo tức thì khi có đơn hàng mới, yêu cầu nạp tiền hoặc khách hàng nhắn tin. Có thể thêm nhiều bot cùng lúc.
Thêm Bot Mới
Sự kiện & Khuyến mãi
Quản Lý Banners
Quản Lý Thông Báo
Hệ Thống Đang Nâng Cấp
Chúng tôi đang nâng cấp hệ thống để mang lại trải nghiệm tốt hơn cho bạn. Vui lòng quay lại sau ít phút.
Cần gấp? Liên hệ ngay:
Tài liệu API Thuê Số OTP
Tích hợp dịch vụ thuê số điện thoại vào bot Telegram, web hoặc app của bạn chỉ trong vài phút.
https://taikhoanxin.siteX-Api-Key header/api/balance
Kiểm tra số dư
curl -H "X-Api-Key: YOUR_KEY" \ https://taikhoanxin.site/api/balance
import requests
headers = {"X-Api-Key": "YOUR_KEY"}
r = requests.get("https://taikhoanxin.site/api/balance", headers=headers)
print(r.json())
# {"success": true, "data": {"balance": 50000}}
const res = await fetch("https://taikhoanxin.site/api/balance", {
headers: { "X-Api-Key": "YOUR_KEY" }
});
const data = await res.json();
console.log(data.data.balance); // 50000
/api/apps
Danh sách ứng dụng + giá
r = requests.get("https://taikhoanxin.site/api/apps", headers=headers)
for app in r.json()["data"]["apps"]:
print(app["id"], app["name"], app["cost_display"])
# 1006 Telegram 3,000đ
# 1001 Facebook 3,000đ
/api/rent
Thuê số điện thoại
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
app_id | number | ✓ | ID ứng dụng (lấy từ /api/apps) |
network | string | — | VIETTEL / VINAPHONE / MOBIFONE / VNMOBILE |
import requests, time
API = "https://your-api.railway.app"
HEADERS = {"X-Api-Key": "YOUR_KEY", "Content-Type": "application/json"}
# 1. Thuê số cho Telegram
r = requests.post(f"{API}/api/rent",
headers=HEADERS,
json={"app_id": 1006})
data = r.json()["data"]
phone = data["phone"]
req_id = data["request_id"]
print(f"Số: {phone}")
# 2. Chờ OTP (poll mỗi 7 giây)
for _ in range(42): # tối đa 5 phút
time.sleep(7)
r2 = requests.get(f"{API}/api/otp/{req_id}", headers=HEADERS)
result = r2.json()["data"]
if result["status"] == "received":
print(f"OTP: {result['code']}")
break
else:
# Hủy nếu không có mã
requests.post(f"{API}/api/cancel/{req_id}", headers=HEADERS)
print("Hết giờ, đã hoàn tiền")
const API = "https://your-api.railway.app";
const HEADERS = { "X-Api-Key": "YOUR_KEY", "Content-Type": "application/json" };
// 1. Thuê số
const rent = await fetch(`${API}/api/rent`, {
method: "POST", headers: HEADERS,
body: JSON.stringify({ app_id: 1006 })
}).then(r => r.json());
const { phone, request_id } = rent.data;
console.log("Số:", phone);
// 2. Poll OTP
const pollOTP = () => new Promise((resolve) => {
const interval = setInterval(async () => {
const r = await fetch(`${API}/api/otp/${request_id}`, { headers: HEADERS }).then(r=>r.json());
if (r.data.status === "received") { clearInterval(interval); resolve(r.data.code); }
}, 7000);
setTimeout(() => { clearInterval(interval); resolve(null); }, 300000);
});
const code = await pollOTP();
if (code) console.log("OTP:", code);
else await fetch(`${API}/api/cancel/${request_id}`, { method:"POST", headers: HEADERS });
/api/otp/:request_id
Lấy mã OTP
Gọi API này sau mỗi 5-10 giây để kiểm tra mã OTP. Trạng thái trả về:
| status | Ý nghĩa |
|---|---|
waiting | Chưa có mã, thử lại sau |
received | Đã có mã OTP ✓ |
cancelled | Đã hủy / thất bại |
/api/cancel/:request_id
Hủy + hoàn tiền
Hủy yêu cầu đang chờ OTP. Tiền sẽ được hoàn lại vào số dư tài khoản ngay lập tức.
curl -X POST -H "X-Api-Key: YOUR_KEY" \ https://taikhoanxin.site/api/cancel/REQUEST_ID
Tạo Bot Telegram thuê số OTP
Nhắn @BotFather trên Telegram → /newbot → đặt tên → nhận BOT_TOKEN
Vào Dashboard → API Key → Tạo key → copy key dạng tkx_...
pip install pyTelegramBotAPI requests
bot.py và dán code mẫu bên phải vàopython bot.py
import telebot, requests, time, threading
BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"
API_KEY = "YOUR_TAIKHOANXIN_API_KEY"
API_URL = "https://taikhoanxin.site"
bot = telebot.TeleBot(BOT_TOKEN)
HEADERS = {"X-Api-Key": API_KEY, "Content-Type": "application/json"}
user_sessions = {} # chat_id -> req_id
@bot.message_handler(commands=["start"])
def start(msg):
bot.reply_to(msg,
"🤖 Bot thuê số OTP - TaiKhoanXin\n\n"
"📋 Lệnh:\n"
"/sodu - Xem số dư\n"
"/danhsach - Danh sách app & ID\n"
"/thueso <ID> - Thuê số (VD: /thueso 1001)\n"
"/huy - Hủy yêu cầu đang chờ\n\n"
"📱 App phổ biến:\n"
"1001 FB | 1005 Google | 1006 Telegram\n"
"1010 IG | 1032 TikTok | 1002 Shopee")
@bot.message_handler(commands=["sodu"])
def check_balance(msg):
try:
r = requests.get(f"{API_URL}/api/balance", headers=HEADERS, timeout=10)
d = r.json()
if d["success"]:
bot.reply_to(msg, f"💰 Số dư: {d['data']['balance_display']}")
else:
bot.reply_to(msg, f"❌ Lỗi: {d['error']}")
except Exception as e:
bot.reply_to(msg, f"❌ Lỗi kết nối: {e}")
@bot.message_handler(commands=["danhsach"])
def list_apps(msg):
try:
r = requests.get(f"{API_URL}/api/apps", headers=HEADERS, timeout=10)
d = r.json()
if not d["success"]:
bot.reply_to(msg, "❌ Lỗi lấy danh sách"); return
text = "📱 Danh sách app OTP:\n\n"
for a in d["data"]["apps"]:
text += f"• ID {a['id']} | {a['name']} | {a['cost_display']}\n"
text += "\nDùng: /thueso <ID>"
bot.reply_to(msg, text)
except Exception as e:
bot.reply_to(msg, f"❌ Lỗi: {e}")
# --- Hàm chờ OTP chạy trong thread riêng (không làm đơ bot) ---
def poll_otp_thread(chat_id, req_id, phone, app_name, price_display):
try:
for _ in range(42): # tối đa 42 x 7s ≈ 5 phút
time.sleep(7)
r2 = requests.get(f"{API_URL}/api/otp/{req_id}",
headers=HEADERS, timeout=10)
d2 = r2.json()
status = d2.get("data", {}).get("status")
if status == "received":
code = d2["data"]["code"]
note = d2["data"].get("message", "")
bot.send_message(chat_id,
f"🎉 *Mã OTP:* `{code}`\n"
f"📱 App: {app_name}\n"
f"📞 Số: `{phone}`"
+ (f"\n📨 {note}" if note else ""),
parse_mode="Markdown")
user_sessions.pop(chat_id, None)
return
# Hết giờ → tự động hoàn tiền
requests.post(f"{API_URL}/api/cancel/{req_id}",
headers=HEADERS, timeout=10)
bot.send_message(chat_id,
f"⏰ Hết giờ chờ OTP!\n"
f"📞 Số: `{phone}` | {app_name}\n"
f"💰 Đã hoàn tiền: {price_display}",
parse_mode="Markdown")
user_sessions.pop(chat_id, None)
except Exception as e:
bot.send_message(chat_id, f"⚠️ Lỗi chờ OTP: {e}")
user_sessions.pop(chat_id, None)
@bot.message_handler(commands=["thueso"])
def rent_number(msg):
parts = msg.text.split()
if len(parts) < 2:
bot.reply_to(msg,
"❌ Cú pháp: /thueso <app_id>\n"
"VD: /thueso 1001\n"
"Gõ /danhsach để xem danh sách ID")
return
try:
app_id = int(parts[1])
except ValueError:
bot.reply_to(msg, "❌ App ID phải là số. VD: /thueso 1001"); return
wait_msg = bot.reply_to(msg, "⏳ Đang lấy số...")
try:
r = requests.post(f"{API_URL}/api/rent",
headers=HEADERS, json={"app_id": app_id}, timeout=15)
d = r.json()
except Exception as e:
bot.edit_message_text(f"❌ Lỗi kết nối: {e}",
msg.chat.id, wait_msg.message_id); return
if not d["success"]:
bot.edit_message_text(
f"❌ {d.get('error', 'Lỗi không xác định')}\n"
"💳 Gõ /sodu để kiểm tra số dư",
msg.chat.id, wait_msg.message_id); return
data = d["data"]
req_id = data["request_id"]
phone = data["phone"]
app_name = data["app_name"]
price = data["price_display"]
bal_rem = data.get("balance_remaining", 0)
user_sessions[msg.chat.id] = req_id
bot.edit_message_text(
f"✅ *Đã lấy số thành công!*\n"
f"📞 Số: `{phone}`\n"
f"📱 App: {app_name}\n"
f"💰 Đã trừ: {price} | Còn: {bal_rem:,}đ\n\n"
f"🕒 Đang chờ OTP... (tối đa 5 phút)\n"
f"_Dùng /huy để hủy & hoàn tiền_",
msg.chat.id, wait_msg.message_id, parse_mode="Markdown")
# ⭐ Chạy poll OTP trong thread riêng → bot tiếp tục nhận lệnh mới
threading.Thread(
target=poll_otp_thread,
args=(msg.chat.id, req_id, phone, app_name, price),
daemon=True).start()
@bot.message_handler(commands=["huy"])
def cancel(msg):
req_id = user_sessions.get(msg.chat.id)
if not req_id:
bot.reply_to(msg, "ℹ️ Không có yêu cầu nào đang chờ."); return
try:
r = requests.post(f"{API_URL}/api/cancel/{req_id}",
headers=HEADERS, timeout=10)
d = r.json()
if d["success"]:
refund = d["data"].get("refunded", 0)
bot.reply_to(msg, f"✅ Đã hủy! Hoàn {refund:,}đ vào tài khoản.")
else:
bot.reply_to(msg, f"❌ {d.get('error')}")
except Exception as e:
bot.reply_to(msg, f"❌ Lỗi: {e}")
user_sessions.pop(msg.chat.id, None)
print("🤖 Bot đang chạy...")
bot.infinity_polling(timeout=20, long_polling_timeout=15)
Tạo website bán OTP riêng
Vào Dashboard → API Key → Tạo key
Copy code mẫu bên phải → lưu thành index.html
Sửa YOUR_API_KEY và YOUR_API_URL trong file
Kéo thả file index.html lên Netlify Drop → có ngay URL website
Khách vào web của bạn → thuê số → mã OTP về ngay trên giao diện
API_KEY trong file HTML public. Nên dùng Netlify Functions để proxy an toàn hơn.
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>Thuê Số OTP</title>
<style>
* { margin:0; padding:0; box-sizing:border-box; font-family:sans-serif; }
body { background:#0a0e17; color:#fff; padding:20px; }
.card { background:rgba(255,255,255,0.05); border-radius:12px;
padding:20px; max-width:500px; margin:20px auto; }
select,button { padding:10px 16px; border-radius:8px; border:none;
font-size:1rem; cursor:pointer; width:100%; margin-top:10px; }
button { background:linear-gradient(135deg,#ff007f,#ff8c00); color:#fff; }
#result { margin-top:16px; padding:14px; background:rgba(0,0,0,0.4);
border-radius:8px; display:none; }
.phone { font-size:1.5rem; font-weight:bold; color:#00f0ff; }
.otp { font-size:2rem; font-weight:bold; color:#10b981; }
</style>
</head>
<body>
<div class="card">
<h2>🔐 Thuê Số OTP</h2>
<select id="appSelect">
<option value="">-- Đang tải danh sách --</option>
</select>
<button onclick="rentNumber()">Thuê Số Ngay</button>
<div id="result">
<p>Số điện thoại: <span class="phone" id="phone"></span></p>
<p id="otp-status">⏳ Đang chờ mã OTP...</p>
<p class="otp" id="otp-code"></p>
</div>
</div>
<script>
const API = "https://YOUR_API_URL";
const KEY = "YOUR_API_KEY";
const H = {"X-Api-Key": KEY, "Content-Type":"application/json"};
// Load danh sách app
fetch(`${API}/api/apps`, {headers:H})
.then(r=>r.json()).then(d=>{
const sel = document.getElementById("appSelect");
sel.innerHTML = d.data.apps.map(a=>
`<option value="${a.id}">${a.name} - ${a.cost_display}</option>`
).join("");
});
async function rentNumber() {
const appId = document.getElementById("appSelect").value;
if (!appId) return alert("Chọn app trước!");
const r = await fetch(`${API}/api/rent`, {
method:"POST", headers:H,
body: JSON.stringify({app_id: parseInt(appId)})
});
const d = await r.json();
if (!d.success) return alert(d.error);
document.getElementById("phone").textContent = d.data.phone;
document.getElementById("result").style.display = "block";
pollOTP(d.data.request_id);
}
async function pollOTP(reqId) {
for (let i=0; i<42; i++) {
await new Promise(r=>setTimeout(r,7000));
const r = await fetch(`${API}/api/otp/${reqId}`, {headers:H});
const d = await r.json();
if (d.data.status === "received") {
document.getElementById("otp-status").textContent = "✅ Mã OTP:";
document.getElementById("otp-code").textContent = d.data.code;
return;
}
}
// Hủy & hoàn tiền
await fetch(`${API}/api/cancel/${reqId}`, {method:"POST",headers:H});
document.getElementById("otp-status").textContent = "⏰ Hết giờ, đã hoàn tiền.";
}
</script>
</body>
</html>
Tài Khoản