API KEY CỦA BẠN
API v2 · DÀNH CHO ĐẠI LÝ

Tài liệu kết nối API

Lấy hàng tự động từ kho của chúng tôi và bán lại trên hệ thống của bạn. Trả trước, trừ vào số dư, giao hàng ngay lập tức.

Bắt đầu nhanh

  1. Đăng ký đại lý — mở bot Telegram, bấm 🤝 Đại lý bán sỉ, nhập tên shop rồi gửi yêu cầu.
  2. Chờ duyệt — admin xác nhận, bot sẽ gửi API key ngay trong chat.
  3. Nạp số dư — liên hệ admin. Mỗi đơn sẽ trừ thẳng vào số dư này.
  4. Gọi API — dùng tài liệu bên dưới, hoặc cắm thẳng vào bot có sẵn (xem mục cuối).
Base URL
https://api.maxdonchal.bond
Mọi đường dẫn bên dưới đều nối sau địa chỉ này.

Xác thực

Mỗi request phải kèm API key ở header X-API-Key:

X-API-Key: dl_xxxxxxxxxxxxxxxx

Hoặc dùng Authorization: Bearer dl_xxxxxxxxxxxxxxxx nếu thư viện của bạn tiện hơn.

Giữ kín key — ai có key đều tiêu được số dư của bạn. Không đặt key trong code public, không gửi qua chat nhóm. Nghi ngờ lộ thì báo admin cấp key mới ngay, key cũ mất hiệu lực lập tức.

Endpoints

GET /api/v2/me Xem số dư
{
  "ok": true,
  "data": {
    "partner_id": "pt_ab12cd34",
    "name": "Shop ABC",
    "balance": 500000,
    "currency": "VND",
    "total_orders": 27
  }
}
Bấm "Thử ngay" để gọi thật.
GET /api/v2/catalog Danh sách hàng + giá sỉ + tồn kho
Tham sốKiểuMặc địnhMô tả
available_onlyboolfalseChỉ lấy mặt hàng còn tồn kho
limitint100Số dòng mỗi trang (tối đa 500)
offsetint0Bỏ qua bao nhiêu dòng đầu
{
  "ok": true,
  "data": {
    "products": [
      {
        "product_id": "netflix_4k",
        "name": "Netflix 4K Premium",
        "price": 20000,
        "currency": "VND",
        "stock_count": 42,
        "available": true,
        "delivery_mode": "instant_items",
        "requires_emails": false,
        "description": "Bảo hành 30 ngày..."
      },
      {
        "product_id": "gpt_upgrade",
        "name": "Nâng cấp GPT Plus",
        "price": 100000,
        "currency": "VND",
        "stock_count": 8,
        "available": true,
        "delivery_mode": "manual_fulfillment",
        "requires_emails": true,
        "description": "Nâng cấp lên chính tài khoản của khách"
      }
    ],
    "total_products": 2
  }
}

price là giá sỉ bạn phải trả, đã là giá cuối cùng.

Đọc kỹ delivery_mode trước khi đặt:
  • instant_items — trả tài khoản ngay trong response đặt hàng.
  • manual_fulfillment — dịch vụ nâng cấp: bạn phải gửi kèm emails (mỗi sản phẩm một email của khách), đơn về trạng thái processing, xử lý xong mới thành done.
Bấm "Thử ngay" để gọi thật.
POST /api/v2/orders Đặt hàng — nhận tài khoản ngay

Request

POST /api/v2/orders
X-API-Key: dl_xxxxx
x-idempotency-key: don-cua-ban-001      ← xem mục Chống trùng đơn
Content-Type: application/json

{
  "product_id": "netflix_4k",
  "quantity": 2,
  "partner_ref": "ORDER-8891"           ← mã đơn bên bạn, tuỳ chọn
}

Response

{
  "ok": true,
  "data": {
    "order_code": "AP-75C07B3440",
    "partner_ref": "ORDER-8891",
    "product_name": "Netflix 4K Premium",
    "quantity": 2,
    "unit_price": 20000,
    "total_price": 40000,
    "balance": 460000,                  ← số dư còn lại sau khi trừ
    "status": "done",                   ← hàng có sẵn nên xong ngay
    "delivery_mode": "instant_items",
    "items": [
      { "value": "[email protected]|pass|2fa", "type": "account" },
      { "value": "[email protected]|pass|2fa", "type": "account" }
    ]
  }
}

Đặt sản phẩm dịch vụ (manual_fulfillment)

Gửi thêm emails — số email phải bằng đúng quantity. Đây là email của khách bạn, hệ thống sẽ nâng cấp thẳng lên các email đó.

POST /api/v2/orders
X-API-Key: dl_xxxxx
Content-Type: application/json

{
  "product_id": "gpt_upgrade",
  "quantity": 2,
  "emails": ["[email protected]", "[email protected]"]
}

Đơn không trả hàng ngay mà về hàng chờ để xử lý:

{
  "ok": true,
  "data": {
    "order_code": "AP-9F2C11A0E3",
    "status": "processing",             ← chưa xong
    "delivery_mode": "manual_fulfillment",
    "quantity": 2,
    "total_price": 200000,
    "items": [],
    "message": "Đơn đã nhận, đang chờ xử lý. Gọi lại GET /orders/{order_code} để lấy kết quả."
  }
}

Sau đó gọi GET /api/v2/orders/{order_code} để lấy kết quả. Xử lý xong:

{
  "ok": true,
  "data": {
    "order_code": "AP-9F2C11A0E3",
    "status": "done",
    "items": [
      { "value": "[email protected]", "type": "email" },
      { "value": "[email protected]", "type": "email" }
    ]
  }
}
Ba trạng thái của status: processing (đang xử lý) · done (xong, có items) · cancelled (bị huỷ, kèm refunded: true — tiền đã hoàn về số dư).

Với đơn dịch vụ, items trả về chính các email đã xử lý (type: "email") chứ không phải tài khoản mới — đó là xác nhận các email đó đã được nâng cấp xong.

Mỗi đại lý được giữ tối đa 20 đơn dịch vụ đang chờ. Vượt quá sẽ nhận lỗi 429 cho tới khi đơn cũ xử lý xong.
Tiền chỉ bị trừ khi lấy được hàng thành công. Nếu kho hết giữa chừng, hệ thống tự huỷ đơn và hoàn lại tiền ngay — bạn nhận lỗi 409 và số dư không đổi.
Cẩn thận: nút này đặt đơn THẬT và trừ số dư thật.
GET /api/v2/orders/{order_code} Tra cứu lại đơn đã đặt

Dùng khi bạn bị mất kết nối giữa chừng và không chắc đơn đã thành công hay chưa. Trả về đúng response ban đầu, kèm đầy đủ tài khoản. Lưu trong 24 giờ.

Bấm "Thử ngay" để gọi thật.

Chống trùng đơn (quan trọng)

Mạng lag hoặc timeout khiến bạn không biết đơn đã vào hay chưa. Nếu gọi lại mà không phòng ngừa, bạn sẽ bị trừ tiền hai lần.

Cách tránh: gắn header x-idempotency-key với một giá trị duy nhất cho mỗi đơn (ví dụ mã đơn bên bạn). Gửi lại cùng key đó, hệ thống trả về đúng kết quả cũ — không tạo đơn mới, không trừ tiền thêm.

x-idempotency-key: ORDER-8891
Key được nhớ trong 24 giờ. Retry an toàn thoải mái trong khoảng đó.

Mã lỗi

MãNghĩaNên làm gì
401Key sai, thiếu, hoặc tài khoản chưa được duyệtKiểm tra lại key
402Không đủ số dưLiên hệ admin nạp thêm
404Sản phẩm không tồn tại hoặc không mở bán qua APIGọi lại /catalog
409Hết hàng — đơn đã huỷ và hoàn tiềnThử sản phẩm khác
400Tham số sai (số lượng ngoài 1–100)Sửa request

Ví dụ code

cURL

curl -X POST "https://api.maxdonchal.bond/api/v2/orders" \
  -H "X-API-Key: dl_xxxxx" \
  -H "x-idempotency-key: ORDER-8891" \
  -H "Content-Type: application/json" \
  -d '{"product_id":"netflix_4k","quantity":1}'

Python

import httpx, uuid

BASE = "https://api.maxdonchal.bond"
KEY  = "dl_xxxxx"
H    = {"X-API-Key": KEY}

# Lấy danh sách hàng còn tồn
catalog = httpx.get(f"{BASE}/api/v2/catalog",
                    params={"available_only": True}, headers=H).json()
for p in catalog["data"]["products"]:
    print(p["product_id"], p["name"], f'{p["price"]:,}đ', "còn", p["stock_count"])

# Đặt hàng — LUÔN gắn idempotency key
my_ref = f"ORDER-{uuid.uuid4().hex[:8]}"
res = httpx.post(
    f"{BASE}/api/v2/orders",
    headers={**H, "x-idempotency-key": my_ref},
    json={"product_id": "netflix_4k", "quantity": 1, "partner_ref": my_ref},
    timeout=30,
)
if res.status_code == 200:
    for item in res.json()["data"]["items"]:
        print("Nhận được:", item["value"])
else:
    print("Lỗi:", res.status_code, res.json().get("detail"))

Cắm thẳng vào bot có sẵn

Nếu bạn đang chạy cùng phần mềm bot với chúng tôi thì không cần code gì cả:

  1. Vào Kết Nối API → Thêm kết nối
  2. Base URL: dán địa chỉ ở đầu trang này
  3. Auth Type: chọn API Key (Header), tên header X-API-Key
  4. API Key: dán key bot đã gửi cho bạn
  5. Endpoint lấy hàng /api/v2/catalog, đặt hàng /api/v2/orders, field kết quả data.items
  6. Bấm Lưu & Test ngay → chọn hàng → đặt % lợi nhuận → Import vào shop