Đây là hướng dẫn giúp bạn xem có thể kiểm tra chi tiết từng mặt hàng đã mua, số lượng, số tiền trên sàn Shopee
Bước 1: Đăng nhập vào Shopee.vn trên trình duyệt máy tính
Bước 2: Mở Console
- Windows/Linux: Ctrl + Shift + J
- Mac: CMD + Option + J
Bước 3: Dán mã bên dưới vào phần Console rồi Enter (đợi một lát để nhận kết quả)
Bước 4: Copy toàn bộ, đem về Google Sheet dán ra để dễ xem hơn
// Hàm async để lấy danh sách đơn hàng từ một trang web dựa trên offset và limit
async function getOrders(offset, limit) {
// Xây dựng URL để gửi yêu cầu lấy danh sách đơn hàng
let url = "https://shopee.vn/api/v4/order/get_all_order_and_checkout_list?limit=" + limit + "&offset=" + offset;
// Gửi yêu cầu và chờ nhận dữ liệu dưới dạng JSON
var ordersData = (await (await fetch(url)).json()).data.order_data;
// Trích xuất danh sách chi tiết các đơn hàng từ dữ liệu nhận được
var detailList = ordersData.details_list
// Nếu có danh sách chi tiết, trả về nó; nếu không, trả về mảng trống
if (detailList) {
return detailList;
} else {
return [];
}
}
// Hàm chuyển đổi số sang định dạng tiền tệ Việt Nam
function _VietNamCurrency(number) {
return new Intl.NumberFormat('vi-VN', { style: 'currency', currency: 'VND' }).format(number);
}
// Hàm async để lấy tất cả các đơn hàng và tạo danh sách hiển thị
async function getAllOrders() {
const limit = 20; // Số lượng đơn hàng tối đa trong mỗi yêu cầu
let offset = 0; // Bắt đầu từ đơn hàng đầu tiên
let allOrders = []; // Danh sách tất cả các đơn hàng
// Thêm tiêu đề cột cho danh sách đơn hàng
allOrders.push(
'<tr>' +
'<th>Tên chung</th>' +
'<th>Số lượng</th>' +
'<th>Tổng tiền</th>' +
'<th>Trạng thái</th>' +
'<th>Tên shop</th>' +
'<th>Chi tiết</th>' +
'<th>Tiền gốc</th>' +
'</tr>'
);
let sum = 0; // Tổng tiền của tất cả các đơn hàng
let count = 0; // Tổng số lượng sản phẩm trong tất cả các đơn hàng
// Lặp lại cho đến khi không còn đơn hàng nào
while (true) {
// Lấy danh sách đơn hàng từ trang web dựa trên offset và limit
let data = await getOrders(offset, limit);
// Nếu không còn đơn hàng nào, thoát khỏi vòng lặp
if (data.length == 0)
break;
// Duyệt qua từng đơn hàng
for (const item of data) {
const infoCard = item.info_card;
const listType = item.list_type;
let strListType;
// Xác định trạng thái của đơn hàng dựa trên mã listType
switch (listType) {
case 3: strListType = "Hoàn thành"; break;
case 4: strListType = "Đã hủy"; break;
case 7: strListType = "Vận chuyển"; break;
case 8: strListType = "Đang giao"; break;
case 9: strListType = "Chờ thanh toán"; break;
case 12: strListType = "Trả hàng"; break;
default: strListType = "Không rõ"; break;
}
const productCount = infoCard.product_count;
let subTotal = infoCard.subtotal / 1e5;
count += productCount;
const orderCard = infoCard.order_list_cards[0];
const shopName = orderCard.shop_info.username + " - " + orderCard.shop_info.shop_name;
const products = orderCard.product_info.item_groups;
const productSumary = products.map(product => product.items.map(item => item.name + "--số lượng: " + item.amount + "--giá: " + _VietNamCurrency(item.item_price)).join(', ')).join('; ');
const name = products[0].items[0].name;
if (listType != 4 && listType != 12)
sum += subTotal;
else
subTotal = 0;
const subTotalNative = _VietNamCurrency(subTotal);
// Thêm thông tin của đơn hàng vào danh sách tất cả các đơn hàng
allOrders.push(
'<tr>' +
'<td>' + name + '</td>' +
'<td>' + productCount + '</td>' +
'<td>' + subTotalNative + '</td>' +
'<td>' + strListType + '</td>' +
'<td>' + shopName + '</td>' +
'<td>' + productSumary + '</td>' +
'<td>' + subTotal + '</td>' +
'</tr>'
);
}
console.log('Đã thu thập: ' + offset);
offset += limit; // Tăng giá trị offset để lấy trang tiếp theo
}
console.log('==============================')
console.log('%cTổng số sản phẩm: ' + count, 'color: green; font-size:20px; font-family: Comfortaa');
console.log('%cTổng chi: ' + _VietNamCurrency(sum), 'color: red; font-size: 22px; font-family: Comfortaa');
console.log('==============================')
// Thêm thông tin tổng cộng của tất cả các đơn hàng vào danh sách
allOrders.push(
'<tr>' +
'<tr><td>Tổng cộng:</td><td>' + count + '</td><td>' + _VietNamCurrency(sum) + '</td><td colspan="4"></td></tr></table>'
);
// Ghép tất cả các dòng trong danh sách đơn hàng thành một chuỗi văn bản
var tableHTML = '<table>' + allOrders.join('\r\n') + '</table>';
// Hiển thị danh sách đơn hàng trong một bảng trên trang web
document.body.innerHTML = tableHTML;
// Thêm CSS để tùy chỉnh giao diện bảng
var style = document.createElement('style');
style.innerHTML = `
body {
margin: 0;
}
table {
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
border-collapse: collapse;
width: 100%;
}
table td, table th {
border: 1px solid #eee;
padding: 10px 20px;
max-width:200px;
}
table tr:nth-child(even) {
background-color: #f8f8f8;
}
table th {
text-align: left;
background-color: #ee4d2d;
color: white;
position: sticky;
top: 0;
}
table tr:last-child {
position: sticky;
bottom: 0;
background: #ee4d2d;
font-weight: bold;
color: #fff;
text-align: left;
background-color: #ee4d2d;
color: white;
}
table tr:last-child td, table th {
border-bottom: 0;
}
`;
document.head.appendChild(style);
}
// Gọi hàm để lấy và hiển thị tất cả các đơn hàng
getAllOrders();
Chia sẻ: Bùi Việt Anh