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.
https://api.maxdonchal.bondMọi đường dẫn bên dưới đều nối sau địa chỉ này.
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.
{
"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.
| Tham số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
available_only | bool | false | Chỉ lấy mặt hàng còn tồn kho |
limit | int | 100 | Số dòng mỗi trang (tối đa 500) |
offset | int | 0 | Bỏ 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.
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
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
}
{
"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" }
]
}
}
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" }
]
}
}
status: processing (đang xử lý) ·
done (xong, có items) · cancelled
(bị huỷ, kèm refunded: true — tiền đã hoàn về số dư).
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.
429 cho tới khi đơn cũ xử lý xong.
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.
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.
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
| Mã | Nghĩa | Nên làm gì |
|---|---|---|
401 | Key sai, thiếu, hoặc tài khoản chưa được duyệt | Kiểm tra lại key |
402 | Không đủ số dư | Liên hệ admin nạp thêm |
404 | Sản phẩm không tồn tại hoặc không mở bán qua API | Gọi lại /catalog |
409 | Hết hàng — đơn đã huỷ và hoàn tiền | Thử sản phẩm khác |
400 | Tham số sai (số lượng ngoài 1–100) | Sửa request |
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}'
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"))
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ả:
X-API-Key/api/v2/catalog, đặt hàng /api/v2/orders,
field kết quả data.items