Lấy Danh Sách Banner Shop
API lấy danh sách banner của shop cụ thể. Hỗ trợ phân trang, lọc theo vị trí banner và target link.
Bao gồm thông tin chi tiết về từng banner như hình ảnh, link, background và thứ tự hiển thị.
GET https://api.socdo.vn/mini-app/v1/list-banner-shop
Request Headers
Token-Seller: YOUR_TOKEN_SELLER
Shop-ID: 23933 (optional, có thể dùng query parameter)
Hoặc:
Authorization: Bearer YOUR_TOKEN_SELLER
Shop-ID: 23933 (optional, có thể dùng query parameter)
Query Parameters
GET /list-banner-shop?shop_id=27540&position=banner_giua&target=_blank&page=1&limit=100
Tham số
| Tham số |
Loại |
Bắt buộc |
Mô tả |
Token-Seller |
header |
✓ |
Token-Seller từ API get-token-seller (hoặc Authorization: Bearer) |
shop_id |
query/header |
✓ |
ID của shop cần lấy banner |
position |
query |
- |
Vị trí banner: 'all', 'banner_doitac', 'banner_giua', etc. (mặc định: 'all') |
target |
query |
- |
Target link: 'all', '_blank', '_self' (mặc định: 'all') |
page |
query |
- |
Trang hiện tại (mặc định: 1) |
limit |
query |
- |
Số bản ghi mỗi trang (1-1000, mặc định: 100) |
Response thành công (200)
{
"success": true,
"message": "Lấy danh sách banner thành công",
"data": {
"banners": [
{
"id": 1745,
"shop_id": 27540,
"title": "Banner 4",
"image": "/uploads/minh-hoa/68a8231c10cb4.png",
"link": "Chảo Inox Chống Dính Goldsun GPA1401-16IH/18IH/20IH/24IH/26IH/28IH – Đáy Từ 5 Lớp, Sử Dụng Mọi Loại Bếp, Chính Hãng",
"background": "",
"target": "_blank",
"order": 4,
"position": "banner_giua",
"image_url": "https://socdo.vn/uploads/minh-hoa/68a8231c10cb4.png",
"background_url": "",
"open_in_new_tab": true,
"is_active": true,
"clickable": true
},
{
"id": 1744,
"shop_id": 27540,
"title": "banner 3",
"image": "/uploads/minh-hoa/68a821974669b.png",
"link": "Máy xay thịt Goldsun GMC4740, máy xay mini đa năng, máy xay tỏi ớt, bảo hành 12 tháng",
"background": "",
"target": "_blank",
"order": 1,
"position": "banner_giua",
"image_url": "https://socdo.vn/uploads/minh-hoa/68a821974669b.png",
"background_url": "",
"open_in_new_tab": true,
"is_active": true,
"clickable": true
}
],
"pagination": {
"current_page": 1,
"total_pages": 1,
"total_records": 2,
"per_page": 100,
"has_next": false,
"has_prev": false
},
"filters": {
"position": "banner_giua",
"target": "_blank",
"shop_id": 27540
}
}
}
Response lỗi (401 - Token không hợp lệ)
{
"message": "Không tìm thấy Token-Seller"
}
Response lỗi (400 - Shop_ID không hợp lệ)
{
"message": "Shop_ID không hợp lệ"
}
Response lỗi (401 - Token-Seller không hợp lệ)
{
"message": "Shop_ID không khớp với Token-Seller"
}
Response lỗi (500 - Lỗi database)
{
"success": false,
"message": "Lỗi truy vấn database"
}
Ví dụ JavaScript
// Lấy danh sách banner shop
async function getShopBanners(shopId, options = {}) {
try {
const params = new URLSearchParams({
shop_id: shopId,
position: options.position || 'all',
target: options.target || 'all',
page: options.page || 1,
limit: options.limit || 100
});
const response = await fetch(`https://api.socdo.vn/mini-app/v1/list-banner-shop?${params}`, {
method: 'GET',
headers: {
'Token-Seller': localStorage.getItem('seller_token'),
'Shop-ID': shopId
}
});
const result = await response.json();
if (result.success) {
console.log('Danh sách banner:', result.data.banners);
console.log('Phân trang:', result.data.pagination);
return result;
} else {
console.error('Lỗi lấy banner:', result.message);
return result;
}
} catch (error) {
console.error('Lỗi kết nối:', error);
return { success: false, message: 'Lỗi kết nối mạng' };
}
}
// Sử dụng
getShopBanners(27540, {
position: 'banner_giua',
target: '_blank'
}).then(result => {
if (result.success) {
// Hiển thị danh sách banner
result.data.banners.forEach(banner => {
console.log(`Banner: ${banner.title} - ${banner.position}`);
});
} else {
alert('Lỗi: ' + result.message);
}
});
Ví dụ cURL
curl -X GET "https://api.socdo.vn/mini-app/v1/list-banner-shop?shop_id=27540&position=banner_giua&target=_blank" \
-H "Token-Seller: YOUR_TOKEN_SELLER" \
-H "Shop-ID: 27540"
Lưu ý quan trọng
- Token-Seller Required: API yêu cầu Token-Seller hợp lệ từ API get-token-seller (có thể gửi qua header Token-Seller hoặc Authorization: Bearer)
- Shop Validation: Token-Seller và Shop_ID phải khớp với nhau
- Phân trang: Hỗ trợ phân trang với giới hạn tối đa 1000 bản ghi/trang
- Lọc theo vị trí: Có thể lọc banner theo vị trí hiển thị (banner_doitac, etc.)
- Lọc theo target: Có thể lọc banner theo cách mở link (_blank, _self)
- Hình ảnh: Tự động tạo URL đầy đủ cho hình ảnh và background
- Thứ tự: Banner được sắp xếp theo thu_tu và id
Luồng xử lý
- Kiểm tra Token-Seller từ header Token-Seller hoặc Authorization
- Lấy Shop_ID từ query parameter hoặc header Shop-ID
- Validate Token-Seller và Shop_ID bằng JWT
- Xây dựng query dựa trên position và target
- Thực hiện phân trang và lấy dữ liệu từ bảng banner
- Xử lý URL hình ảnh và thông tin banner
- Trả về kết quả với cấu trúc JSON chuẩn
Các vị trí banner
- position=all: Lấy tất cả banner của shop
- position=banner_doitac: Banner đối tác
- position=banner_giua: Banner giữa trang
- position=banner_top: Banner đầu trang
- position=banner_sidebar: Banner sidebar
Target Link
- target=_blank: Mở link trong tab mới
- target=_self: Mở link trong tab hiện tại
- target=all: Lấy tất cả banner không phân biệt target