API hỏi nhà cung cấp
Ước tính cước vận chuyển quốc tế trước khi khách đặt mua
Với một chiếc sofa, một cây đèn sàn, một máy chạy bộ hay một chuồng thú cưng cỡ lớn, cước vận chuyển quốc tế gần như phụ thuộc hoàn toàn vào cách món hàng thực sự được đóng gói: khối lượng sau đóng gói, kích thước thùng, và hàng được chia thành bao nhiêu kiện.
Những dữ liệu đó thường thiếu hoặc không đáng tin trên trang sản phẩm 1688 và Taobao. Điều này đẩy khách hàng của bạn vào một vấn đề rất thực tế:
Họ biết sản phẩm giá bao nhiêu. Họ hoàn toàn không biết đưa nó về nước mình tốn bao nhiêu.
API hỏi nhà cung cấp lấp đúng khoảng trống đó. Dịch vụ liên hệ nhà cung cấp của HIOBuy sẽ trao đổi với nhà cung cấp thật trước khi mua hàng, xác nhận khối lượng sau đóng gói, kích thước kiện hàng và chi tiết thùng carton, rồi trả câu trả lời về ứng dụng của bạn dưới dạng dữ liệu có cấu trúc — sẵn sàng để đưa vào bài toán ước tính cước vận chuyển.
Vì sao chỉ Product API là chưa đủ
Các API sản phẩm cung cấp đáng tin cậy những gì chính sàn thương mại biết: tiêu đề, hình ảnh, giá, SKU, thuộc tính, thông tin shop. Nhưng dữ liệu logistics lại là chuyện khác:
- hoàn toàn không công bố khối lượng;
- khối lượng hiển thị là khối lượng tịnh của sản phẩm, không phải khối lượng sau đóng gói;
- có kích thước sản phẩm, nhưng không có kích thước sau khi đóng gói;
- khối lượng do người bán tự nhập và chỉ mang tính tham khảo;
- các SKU khác nhau cho ra khối lượng đóng gói khác nhau;
- một món hàng lớn được chia ra nhiều kiện để gửi đi;
- số lượng thùng carton, khối lượng thùng và kích thước thùng đều không có trên trang.
Product API cho bạn biết những gì sàn thương mại biết. Một yêu cầu hỏi nhà cung cấp mang về những gì chỉ nhà cung cấp mới xác nhận được.
Ví dụ: ước tính cước vận chuyển cho một chiếc sofa
Một khách hàng ở Hoa Kỳ đang xem một chiếc sofa trên 1688 trong ứng dụng của bạn, giá ¥800. Product API đã trả về sản phẩm, giá, hình ảnh, SKU và thuộc tính — nhưng không có khối lượng sau đóng gói hay kích thước kiện hàng đáng tin cậy.
Nên ứng dụng của bạn không thể trả lời câu hỏi duy nhất thực sự quan trọng tiếp theo:
Giá sản phẩm ¥800
Vận chuyển quốc tế ???Với hàng cồng kềnh, ẩn số đó hoàn toàn có thể vượt cả giá trị của bản thân sản phẩm.
Ứng dụng của bạn tạo một yêu cầu hỏi:
POST /v1/supplier-inquiries
{
"product_url": "https://detail.1688.com/offer/554456348334.html",
"questions": [
{ "type": "packed_weight" },
{ "type": "package_dimensions" },
{ "type": "carton_info" }
]
}HIOBuy chuyển tác vụ cho dịch vụ liên hệ nhà cung cấp, và một nhân viên tại Trung Quốc sẽ liên hệ đúng nhà cung cấp của listing đó. Nhà cung cấp trả lời rằng chiếc sofa được gửi thành hai kiện:
Kiện 1 32 kg 110 × 75 × 55 cm
Kiện 2 18 kg 90 × 60 × 40 cmNhững câu trả lời đó quay về ứng dụng của bạn dưới dạng JSON có cấu trúc, và toàn bộ hành trình trông như sau:
Sản phẩm 1688
↓ Product API
Giá: ¥800
↓ thiếu dữ liệu logistics đáng tin cậy
Yêu cầu hỏi nhà cung cấp
↓ HIOBuy liên hệ nhà cung cấp thật
Nhà cung cấp xác nhận: 2 kiện, 32 kg + 18 kg, kích thước thùng
↓ dữ liệu logistics có cấu trúc
Ước tính cước vận chuyển quốc tế (Trung Quốc → Hoa Kỳ)
↓
Khách hàng thấy tổng chi phí ước tính trước khi muaVà đó chính là mục đích của toàn bộ quy trình này:
Chi phí sản phẩm
+ cước vận chuyển quốc tế ước tính
= một mức chi phí thực tế trước khi muaVị trí của nó trong hệ API HIOBuy
Product API "Sản phẩm là gì, và giá bao nhiêu?"
↓
API hỏi nhà cung cấp "Nhà cung cấp sẽ đóng gói nó thế nào trên thực tế?"
↓
Báo giá vận chuyển "Gửi đi quốc tế sẽ tốn khoảng bao nhiêu?"Hỏi nhà cung cấp chính là lớp còn thiếu giữa dữ liệu sản phẩm và một báo giá vận chuyển.
Dữ liệu nhà cung cấp xác nhận vẫn chỉ là ước tính
Những gì bạn nhận về là dữ liệu được nhà cung cấp xác nhận. Với một ước tính trước khi mua, điều đó tốt hơn rất nhiều so với việc không có dữ liệu logistics nào, so với việc dùng khối lượng tịnh của sản phẩm, đoán qua ảnh, hay tin vào một trường dữ liệu của sàn vốn chưa bao giờ được thiết kế để chính xác.
Nhưng được nhà cung cấp xác nhận không đồng nghĩa với được kho cân đo. Khi hàng thực sự về đến nơi, cách đóng gói có thể khác, kho có thể đóng gói lại, và khối lượng, kích thước lẫn số kiện thực tế đều có thể thay đổi.
Hãy dùng các câu trả lời này cho việc ước tính cước vận chuyển quốc tế trước khi mua. Đừng coi chúng là khối lượng tính cước cuối cùng — con số đó luôn đến từ những gì kho thực sự đóng gói và cân đo.
Không chỉ là dữ liệu vận chuyển
Dữ liệu đóng gói phục vụ ước tính vận chuyển là ứng dụng đầu tiên và cụ thể nhất của API này, nhưng cũng chính kênh liên hệ nhà cung cấp đó có thể trả lời mọi điều mà chỉ nhà cung cấp mới biết:
MOQ · tồn kho · thời gian sản xuất · đóng gói trung tính · tùy chỉnh · thông tin thùng carton · chi tiết sản phẩm · và bất cứ điều gì khác, thông qua kiểu other.
Vậy nên hôm nay nó mang lại cho bạn dữ liệu đóng gói → ước tính vận chuyển, và cũng chính lời gọi đó phục vụ được thông tin nhà cung cấp → quyết định mua hàng. Xem loại câu hỏi để biết đủ mười loại và lược đồ câu trả lời của từng loại.
Cách hoạt động
- Ứng dụng của bạn gọi
POST /v1/supplier-inquirieskèm URL sản phẩm, một SKU tùy chọn, và một hoặc nhiều câu hỏi có kiểu. - HIOBuy tạo yêu cầu hỏi và chuyển nó cho dịch vụ liên hệ nhà cung cấp.
- Một nhân viên tại Trung Quốc liên hệ nhà cung cấp của listing đó.
- Nhà cung cấp trả lời.
- Câu trả lời được chuẩn hóa thành dữ liệu có cấu trúc theo lược đồ của từng loại câu hỏi.
- Endpoint của bạn nhận webhook
supplier_inquiry.message_answered, hoặc bạn chủ động truy vấnGET /v1/supplier-inquiries/{id}.
Một yêu cầu hỏi là một cuộc hội thoại, không phải một request dùng một lần. Khi nó đã tồn tại, hãy tiếp tục thêm tin nhắn hỏi tiếp vào cùng luồng thay vì mở một luồng thứ hai.
Đây là dịch vụ có con người xử lý, không phải API thời gian thực
Một người thật liên hệ một nhà cung cấp thật, nên thời gian phản hồi phụ thuộc vào việc nhà cung cấp có online hay không, họ trả lời nhanh đến đâu, câu hỏi phức tạp ra sao, và có cần hỏi tiếp hay không. Hãy xem đây là một tác vụ bất đồng bộ tính bằng giờ, đôi khi lâu hơn. Một số câu hỏi sẽ trả về unavailable hoặc refused, và đó là điều hoàn toàn bình thường.
Trên thực tế: đừng bao giờ để một trang hiển thị cho khách hàng phải chờ đồng bộ một kết quả, hãy trả về ngay khi yêu cầu hỏi được tạo, nhận câu trả lời qua webhook, và trong lúc chờ thì hiển thị trạng thái processing hoặc waiting_supplier trên giao diện.
Tệp đính kèm
Có những câu hỏi sẽ dễ đặt hơn rất nhiều khi kèm một tấm ảnh. Một mẫu đóng gói tham khảo, ảnh chụp màn hình SKU, bản vẽ kích thước, một tờ thông số kỹ thuật — và ở chiều ngược lại, ảnh đóng gói của chính nhà cung cấp, ảnh thùng carton hay một file báo giá PDF.
Mỗi tin nhắn, của bạn lẫn của nhà cung cấp, đều có thể mang tối đa năm tệp đính kèm:
{
"message": "Please ask the supplier whether they can use packaging similar to this.",
"attachments": [
{
"type": "image",
"url": "https://example.com/reference-packaging.jpg",
"filename": "reference-packaging.jpg",
"mime_type": "image/jpeg"
}
]
}type nhận giá trị image, document hoặc other. URL bắt buộc phải là https://; mọi giá trị khác đều bị từ chối với INVALID_ATTACHMENT_URL.
HIOBuy không lưu trữ tệp đính kèm
Tệp đính kèm chỉ là tham chiếu. Bạn tự lưu trữ tệp của mình; tệp của nhà cung cấp do dịch vụ hỏi nhà cung cấp lưu trữ. HIOBuy chỉ lưu phần metadata và URL, và không bao giờ tải lên, tải xuống, sao chép hay trung chuyển bản thân tệp đó. Không có endpoint upload file, và cũng không có kế hoạch bổ sung.
Hệ quả thực tế là URL của tệp đính kèm do bên cung cấp nó quản lý, và một số URL sẽ hết hạn. Khi phản hồi có expires_at, hãy xem đó là hạn chót để bạn tải tệp về kho lưu trữ của riêng mình; giá trị null nghĩa là bên cung cấp khẳng định URL không hết hạn. Đừng xây dựng hệ thống dựa trên giả định rằng một URL hoạt động hôm nay thì tháng sau vẫn còn truy cập được.
Phản hồi của nhà cung cấp cũng có thể kèm tệp. Chúng xuất hiện trong mảng attachments của tin nhắn và trong webhook supplier_inquiry.message_answered, bên cạnh các câu trả lời có cấu trúc. Bạn chỉ nhìn thấy những tệp mà dịch vụ hỏi nhà cung cấp đánh dấu là dành cho bạn — các tệp làm việc nội bộ của nhân viên và ảnh chụp màn hình trao đổi với nhà cung cấp luôn nằm trong nội bộ dịch vụ và không bao giờ ra tới API.
Quyền truy cập
Tính năng hỏi nhà cung cấp mặc định bị tắt. HIOBuy bật tính năng này cho từng ứng dụng sau khi hoàn tất thủ tục hợp tác thương mại — hãy liên hệ bộ phận hỗ trợ HIOBuy để yêu cầu quyền truy cập.
| Yêu cầu | Giá trị |
|---|---|
| Năng lực | Hỏi nhà cung cấp, bật riêng cho từng ứng dụng |
| Scope | supplier_inquiry:read, supplier_inquiry:write |
| Xác thực | API key môi trường thật (Authorization: Bearer hio_live_...) |
Nếu năng lực này chưa được cấp hoặc đang bị tạm ngưng, mọi endpoint đều trả về 403 SUPPLIER_INQUIRY_NOT_ENABLED.
Các sàn được hỗ trợ
| Kênh | Nhận diện từ |
|---|---|
1688 | detail.1688.com/offer/{id}.html và các link tương đương |
taobao | Link sản phẩm item.taobao.com / detail.tmall.com |
Mọi trường hợp khác sẽ thất bại với UNSUPPORTED_MARKETPLACE. Sản phẩm được xác định bằng channel + source_product_id, không bao giờ bằng chuỗi URL thô, nên các dạng link khác nhau của cùng một offer đều quy về cùng một sản phẩm.
Trạng thái yêu cầu hỏi
| Trạng thái | Ý nghĩa |
|---|---|
pending | Đã tiếp nhận, nhà cung cấp dịch vụ chưa nhận xử lý |
processing | Nhân viên đang xử lý |
waiting_supplier | Câu hỏi đã được gửi đi; đang chờ nhà cung cấp phản hồi |
answered | Tin nhắn mới nhất đã có câu trả lời — luồng vẫn mở để hỏi tiếp |
completed | Cuộc hội thoại đã đóng |
failed | Không gửi được tin nhắn hoặc nhà cung cấp dịch vụ đã từ chối |
cancelled | Đã hủy; không nhận thêm tin nhắn nào |
pending, processing, waiting_supplier và answered được tính là đang hoạt động. Mỗi ứng dụng chỉ được có một yêu cầu hỏi đang hoạt động cho mỗi sản phẩm — đó là cách duy trì đúng một luồng trao đổi với nhà cung cấp cho mỗi offer. Gửi request tạo mới cho sản phẩm có yêu cầu hỏi ở trạng thái completed hoặc failed sẽ mở lại cuộc hội thoại đó thay vì tạo mới.
Webhook
Đăng ký một endpoint trong developer portal và theo dõi nhóm sự kiện supplier_inquiry. Việc ký và cơ chế thử lại tuân theo quy tắc webhook tiêu chuẩn.
| Sự kiện | Được phát khi |
|---|---|
supplier_inquiry.created | Một yêu cầu hỏi được tạo |
supplier_inquiry.processing | Nhân viên đã nhận xử lý tin nhắn |
supplier_inquiry.waiting_supplier | Câu hỏi đã tới nhà cung cấp |
supplier_inquiry.message_answered | Đã có câu trả lời — payload chứa toàn bộ mảng answers và mọi attachments |
supplier_inquiry.completed | Cuộc hội thoại đã được đóng |
supplier_inquiry.failed | Tin nhắn thất bại |
Mọi payload đều chứa inquiry_id và product.{channel,source_product_id}.
Mã lỗi
| Mã | HTTP | Ý nghĩa |
|---|---|---|
SUPPLIER_INQUIRY_NOT_ENABLED | 403 | Năng lực chưa được cấp, hoặc đang bị tạm ngưng |
INVALID_PRODUCT_URL | 400 | Không phải URL http(s) tuyệt đối, hoặc không chứa id sản phẩm |
UNSUPPORTED_MARKETPLACE | 400 | Kênh không phải 1688 hoặc Taobao |
INVALID_QUESTION_TYPE | 400 | questions[].type không xác định |
INVALID_QUESTION_SCHEMA | 400 | Câu hỏi rỗng, vượt giới hạn, hoặc bị trùng lặp |
INVALID_ATTACHMENT_URL | 400 | URL tệp đính kèm bị thiếu, không tuyệt đối, hoặc không phải https:// |
INVALID_ATTACHMENT_TYPE | 400 | attachments[].type không phải image, document hoặc other |
TOO_MANY_ATTACHMENTS | 400 | Quá năm tệp đính kèm trong một tin nhắn |
ACTIVE_INQUIRY_EXISTS | 409 | Đã tồn tại một yêu cầu hỏi đang hoạt động — hãy thêm tin nhắn vào yêu cầu đó |
INQUIRY_NOT_FOUND | 404 | Yêu cầu hỏi không tồn tại, hoặc thuộc về một ứng dụng khác |
INQUIRY_NOT_ACTIVE | 409 | Yêu cầu hỏi đã bị hủy |
SUPPLIER_INQUIRY_SERVICE_UNAVAILABLE | 503 | Dịch vụ hỏi nhà cung cấp không khả dụng hoặc đã từ chối tác vụ |
SUPPLIER_INQUIRY_SERVICE_UNAVAILABLE được thiết kế chung có chủ đích: các nguyên nhân từ phía nhà cung cấp dịch vụ như số dư hay trạng thái tài khoản sẽ không được tiết lộ. Hãy cung cấp request_id khi liên hệ bộ phận hỗ trợ.
Endpoint
| Endpoint | Mục đích |
|---|---|
POST /v1/supplier-inquiries | Tạo một yêu cầu hỏi |
POST /v1/supplier-inquiries/{id}/messages | Hỏi tiếp |
GET /v1/supplier-inquiries | Liệt kê các yêu cầu hỏi |
GET /v1/supplier-inquiries/{id} | Chi tiết yêu cầu hỏi kèm toàn bộ tin nhắn |
GET /v1/supplier-inquiries/{id}/messages | Tin nhắn kèm câu hỏi và câu trả lời |
Get Support
Need integration help? Contact Developer Support at support@hiobuy.com · Response within 1–2 business days