Lưu Địa Chỉ (Thêm/Sửa)
API lưu địa chỉ giao hàng. Nếu có ID thì sửa địa chỉ hiện có, nếu không có ID thì thêm địa chỉ mới.
Hỗ trợ đặt địa chỉ mặc định tự động.
POST https://api.socdo.vn/mini-app/v1/save-address
Request Headers
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
Content-Type: application/json
Request Body
Thêm địa chỉ mới
{
"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ị",
"is_default": 1
}
Sửa địa chỉ hiện có
{
"id": 1,
"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é",
"is_default": 1
}
Tham số
| Tham số |
Loại |
Bắt buộc |
Mô tả |
Authorization |
header |
✓ |
JWT token từ API login (Bearer token) |
id |
integer |
- |
ID địa chỉ (có = sửa, không = thêm mới) |
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 (tùy chọn) |
province |
string |
✓ |
Tên tỉnh/thành phố |
district |
string |
✓ |
Tên quận/huyện |
ward |
string |
✓ |
Tên phường/xã |
is_default |
integer |
- |
Đặt làm mặc định (1 = có, 0 = không) |
Response thành công (200)
// Thêm mới thành công
{
"success": true,
"message": "Thêm địa chỉ thành công",
"data": {
"id": 5
}
}
// Sửa thành công
{
"success": true,
"message": "Cập nhật địa chỉ thành công",
"data": {
"id": 1
}
}
Response lỗi (400 - Thiếu thông tin)
{
"success": false,
"message": "Vui lòng điền đầy đủ thông tin bắt buộc (name, phone, address, province, district, ward)"
}
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 tìm thấy địa chỉ)
{
"success": false,
"message": "Không tìm thấy địa chỉ hoặc địa chỉ không thuộc về bạn"
}
Ví dụ JavaScript
// Thêm địa chỉ mới
async function addAddress(addressData) {
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/save-address', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${authToken}`
},
body: JSON.stringify(addressData)
});
const result = await response.json();
if (result.success) {
console.log('Thêm địa chỉ thành công, ID:', result.data.id);
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' };
}
}
// Sửa địa chỉ
async function updateAddress(addressId, addressData) {
try {
const authToken = localStorage.getItem('auth_token');
const response = await fetch('https://api.socdo.vn/mini-app/v1/save-address', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${authToken}`
},
body: JSON.stringify({
id: addressId,
...addressData
})
});
const result = await response.json();
if (result.success) {
console.log('Cập nhật địa chỉ thành công');
return result;
}
} catch (error) {
console.error('Lỗi:', error);
}
}
// Sử dụng: Thêm địa chỉ mới
const newAddress = {
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ị",
is_default: 1
};
addAddress(newAddress).then(result => {
if (result.success) {
alert('Thêm địa chỉ thành công!');
}
});
// Sử dụng: Sửa địa chỉ
updateAddress(1, {
name: "Nguyễn Văn B",
phone: "0987654321",
address: "456 Đường XYZ",
province: "Hồ Chí Minh",
district: "Quận 1",
ward: "Phường Bến Nghé",
is_default: 1
});
Lưu ý quan trọng
- User Token Required: API yêu cầu user token từ login (Bearer token trong Authorization header)
- Auto Mode Detection: API tự động phát hiện CREATE (không có id) hoặc UPDATE (có id)
- Security Check: Khi UPDATE, API kiểm tra địa chỉ thuộc về user hiện tại
- Default Address: Nếu
is_default = 1, tất cả địa chỉ khác sẽ được reset về 0
- Required Fields: name, phone, address, province, district, ward là bắt buộc
- Email Optional: Email có thể để trống
- User Isolation: Chỉ có thể sửa địa chỉ của chính mình
API Liên Quan