Danh Sách Địa Chỉ
API lấy danh sách địa chỉ giao hàng của khách hàng đã đăng nhập. Hỗ trợ phân trang và tự động sắp xếp theo địa chỉ mặc định.
GET https://api.socdo.vn/mini-app/v1/list-address
Request Headers
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
Content-Type: application/json
Query Parameters
Tham số Loại Bắt buộc Mô tả
Authorization header JWT token từ API login (Bearer token)
page integer - Số trang (mặc định: 1)
limit integer - Số lượng địa chỉ mỗi trang (mặc định: 100, tối đa: 500)
Response thành công (200)
{
    "success": true,
    "message": "Lấy danh sách địa chỉ thành công",
    "data": [
        {
            "id": 1,
            "user_id": 123,
            "name": "Nguyễn Văn A",
            "phone": "0987654321",
            "address": "123 Đường ABC",
            "email": "[email protected]",
            "province": "Hà Nội",
            "district": "Quận Ba Đình",
            "ward": "Phường Cống Vị",
            "full_address": "123 Đường ABC, Phường Cống Vị, Quận Ba Đình, Hà Nội",
            "is_default": true
        },
        {
            "id": 2,
            "user_id": 123,
            "name": "Nguyễn Văn A",
            "phone": "0987654321",
            "address": "456 Đường XYZ",
            "email": "[email protected]",
            "province": "Hồ Chí Minh",
            "district": "Quận 1",
            "ward": "Phường Bến Nghé",
            "full_address": "456 Đường XYZ, Phường Bến Nghé, Quận 1, Hồ Chí Minh",
            "is_default": false
        }
    ],
    "pagination": {
        "total": 2,
        "page": 1,
        "limit": 100,
        "total_pages": 1
    }
}
Response lỗi (401 - Token không hợp lệ)
{
    "success": false,
    "message": "Không tìm thấy token"
}
Response lỗi (404 - Không có địa chỉ)
{
    "success": false,
    "message": "Không tìm thấy địa chỉ nào cho user này"
}
Ví dụ JavaScript
// Lấy danh sách địa chỉ
async function getAddresses(page = 1, limit = 100) {
    try {
        const authToken = localStorage.getItem('auth_token');
        
        if (!authToken) {
            throw new Error('Chưa đăng nhập');
        }
        
        const response = await fetch(`https://api.socdo.vn/mini-app/v1/list-address?page=${page}&limit=${limit}`, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
                'Authorization': `Bearer ${authToken}`
            }
        });
        
        const result = await response.json();
        
        if (result.success) {
            console.log('Danh sách địa chỉ:', result.data);
            displayAddresses(result.data);
            return result;
        } else {
            console.error('Lỗi:', 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' };
    }
}

// Hiển thị danh sách địa chỉ lên UI
function displayAddresses(addresses) {
    const addressesList = document.getElementById('addresses-list');
    addressesList.innerHTML = '';
    
    addresses.forEach(address => {
        const addressItem = document.createElement('div');
        addressItem.className = 'address-item';
        addressItem.innerHTML = `
            

${address.name}

${address.is_default ? 'Mặc định' : ''}

${address.phone}

${address.full_address}

${address.email ? `

${address.email}

` : ''}
${address.is_default ? '' : ``}
`; addressesList.appendChild(addressItem); }); } // Lấy địa chỉ mặc định function getDefaultAddress() { getAddresses().then(result => { if (result.success && result.data.length > 0) { const defaultAddress = result.data.find(addr => addr.is_default) || result.data[0]; console.log('Địa chỉ mặc định:', defaultAddress); return defaultAddress; } }); } // Gọi khi trang được tải window.addEventListener('load', function() { getAddresses(); });
Lưu ý quan trọng
  • User Token Required: API yêu cầu user token từ login (Bearer token trong Authorization header)
  • Chỉ lấy địa chỉ của user: API tự động lọc theo user_id từ token
  • Automatic Sorting: Địa chỉ mặc định (active = 1) sẽ được hiển thị đầu tiên
  • Full Address: API tự động tạo full_address bao gồm địa chỉ chi tiết, phường/xã, quận/huyện, tỉnh/thành phố
  • Pagination: Hỗ trợ phân trang với page và limit
  • Active Field: Trường is_default (boolean) cho biết địa chỉ mặc định
  • Email Optional: Email có thể không có trong dữ liệu
Cấu trúc dữ liệu trả về
Trường Loại Mô tả
id integer ID của địa chỉ
user_id integer ID của user sở hữu địa chỉ
name string Tên người nhận
phone string Số điện thoại
address string Địa chỉ chi tiết (đường, số nhà)
email string Email (có thể rỗng)
province string Tên tỉnh/thành phố
district string Tên quận/huyện
ward string Tên phường/xã
full_address string Địa chỉ đầy đủ tự động tạo
is_default boolean Địa chỉ mặc định (true/false)
API Liên Quan