API Yêu thích sản phẩm

API này cho phép thêm hoặc xóa sản phẩm khỏi danh sách yêu thích của người dùng.
Ví dụ minh họa: Thao tác yêu thích sản phẩm

1. Thêm sản phẩm vào yêu thích

POST https://api.socdo.vn/v1/add_favorite
Các trường bắt buộc:
  • user_id: ID người dùng
  • product_id: ID sản phẩm
Dữ liệu mẫu thêm yêu thích (JSON):
{
    "user_id": 123,
    "product_id": 456
}

2. Xóa sản phẩm khỏi yêu thích

DELETE https://api.socdo.vn/v1/add_favorite
Dữ liệu mẫu xóa yêu thích (JSON):
{
    "user_id": 123,
    "product_id": 456
}
Ví dụ thêm yêu thích bằng cURL:
curl -X POST "https://api.socdo.vn/v1/add_favorite" -H "Content-Type: application/json" -H "Authorization: Bearer <token>" -d '{"user_id": 123, "product_id": 456}'
Ví dụ thêm yêu thích bằng PHP:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.socdo.vn/v1/add_favorite");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/json",
    "Authorization: Bearer <token>"
]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    "user_id" => 123,
    "product_id" => 456
]));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
Ví dụ xóa yêu thích bằng PHP:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.socdo.vn/v1/add_favorite");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/json",
    "Authorization: Bearer <token>"
]);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    "user_id" => 123,
    "product_id" => 456
]));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
Dữ liệu trả về mẫu (Thêm yêu thích):
{
    "success": true,
    "message": "Thêm sản phẩm vào danh sách yêu thích thành công",
    "data": {
        "favorite_id": 789,
        "user_id": 123,
        "product_id": 456,
        "product_name": "iPhone 15 Pro Max"
    }
}
Dữ liệu trả về mẫu (Xóa yêu thích):
{
    "success": true,
    "message": "Xóa sản phẩm khỏi danh sách yêu thích thành công",
    "data": {
        "user_id": 123,
        "product_id": 456,
        "action": "removed"
    }
}
Lỗi phổ biến:
// Sản phẩm đã yêu thích (409)
{
    "success": false,
    "message": "Sản phẩm đã có trong danh sách yêu thích"
}

// Sản phẩm không tồn tại (404)
{
    "success": false,
    "message": "Không tìm thấy sản phẩm"
}

// Sản phẩm chưa yêu thích (404)
{
    "success": false,
    "message": "Sản phẩm không có trong danh sách yêu thích"
}
Tính năng:
  • Thêm yêu thích (POST): Thêm sản phẩm vào danh sách yêu thích
  • Xóa yêu thích (DELETE): Xóa sản phẩm khỏi danh sách yêu thích
  • Validation: Kiểm tra sản phẩm tồn tại, tránh trùng lặp
  • Auto ID: Tự động tạo ID yêu thích
  • Product info: Trả về tên sản phẩm khi thêm thành công
Bảng database:
  • yeu_thich_san_pham: Lưu trữ quan hệ yêu thích (id, user_id, product_id)
  • sanpham: Validate sản phẩm tồn tại
Lưu ý:
  • Bạn cần lấy token xác thực trước khi gọi API này
  • user_idproduct_id là tham số bắt buộc
  • API tự động kiểm tra sản phẩm có tồn tại không
  • Tránh thêm trùng lặp - trả về lỗi 409 nếu đã yêu thích
  • Khi xóa, kiểm tra sản phẩm có trong danh sách yêu thích không
  • Tự động tạo ID yêu thích khi thêm
  • Có thể kết hợp với API favorite_products để lấy danh sách
  • Có thể kết hợp với API product_detail để check trạng thái yêu thích
API Mini App Documentation
Tài liệu hướng dẫn tích hợp API cho ứng dụng Mini App của Sóc Đỏ. Cung cấp các endpoint để phát triển ứng dụng di động với đầy đủ tính năng.
Base URL: https://api.socdo.vn/mini-app/v1/
Ví dụ tích hợp cơ bản
// Khởi tạo Mini App
const miniApp = new SocdoMiniApp({
    appId: 'your-app-id',
    secretKey: 'your-secret-key',
    environment: 'production' // hoặc 'sandbox'
});

// Xác thực người dùng
const authResult = await miniApp.auth.login({
    phone: '0123456789',
    password: 'password123'
});

// Lấy danh sách sản phẩm
const products = await miniApp.products.list({
    page: 1,
    limit: 20,
    category: 'electronics'
});
                        
Response mẫu
{
    "success": true,
    "data": {
        "products": [
            {
                "id": 1,
                "name": "iPhone 15 Pro",
                "price": 29990000,
                "image": "https://example.com/image.jpg",
                "category": "electronics"
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 20,
            "total": 100
        }
    },
    "message": "Lấy danh sách sản phẩm thành công"
}