thị trường dịch vụ API Người bán
Giai đoạn 1: Sản phẩm và nhập kho

API Người bán: kết nối SKU, đơn mua đăng ký trước và tồn kho tại kho Thâm Quyến với hệ thống của bạn

Dành cho doanh nghiệp bán hàng trên Shopee, Coupang, momo. Gửi qua API mã vạch sản phẩm được tạo khi đăng bán, đăng ký trước mã vận đơn và hàng bên trong khi mua hàng; khi hàng đến kho Thâm Quyến, phiếu công việc được tạo tự động, hàng được dán mã và quét lên kệ từng sản phẩm, tồn kho và chênh lệch được gửi về theo thời gian thực.

Doanh nghiệp

Đối tượng áp dụng (cần mã số thuế Đài Loan 8 chữ số)

200

SKU tối đa mỗi lần gửi hàng loạt

WO-SK

Tự động tạo phiếu dán mã khi hàng đến kho

60 lần/phút

Giới hạn tần suất mặc định cho mỗi khóa

1 Tổng quan dịch vụ

Giai đoạn 1 cung cấp “Sản phẩm và nhập kho”: từ khi tạo SKU đến khi hàng được lên kệ và trở thành tồn kho tại kho Thâm Quyến.

Những gì bạn có thể làm hiện nay

  • Tạo hoặc cập nhật SKU hàng loạt (dựa trên seller_sku của bạn), mỗi màu sắc và kích cỡ có mã vạch sản phẩm riêng, đồng thời liên kết với mã phân loại sản phẩm trên Shopee / Coupang / momo.
  • Tự động đối chiếu quy định nhập khẩu theo mã biểu thuế 11 chữ số, đánh dấu sản phẩm cần kiểm tra, cần giấy phép hoặc không được phép nhập khẩu.
  • Đăng ký trước mã vận đơn và hàng bên trong từng thùng khi mua hàng; khi hàng đến kho Thâm Quyến, phiếu công việc dán mã WO-SK được tạo tự động, kho dán mã và quét lên kệ từng sản phẩm.
  • Tra cứu tồn kho theo từng kho và sổ biến động tồn kho, đồng thời nhận ngay qua webhook các thông báo hàng đến kho, hoàn tất nhập kho, chênh lệch số lượng và thay đổi tồn kho.

Quy trình nhập kho

  1. Tạo SKU: gửi mã vạch sản phẩm, quy cách, tên hàng khai báo và mã biểu thuế.
  2. Đăng ký nhập kho trước: gửi mã vận đơn và số lượng dự kiến của từng SKU.
  3. Hàng đến kho Thâm Quyến: sau khi quét mã vận đơn, phiếu công việc WO-SK được tạo và in tự động.
  4. Dán mã và lên kệ: kho in mã vạch sản phẩm, dán lên từng sản phẩm và quét để đếm số lượng.
  5. Hoàn tất nhập kho: số lượng thực nhận được đưa vào tồn kho kho Thâm Quyến, hàng hư hỏng được tính riêng, chênh lệch được thông báo cho hệ thống của bạn.
Về quy định nhập khẩu: hệ thống tự động xác định dựa trên mã quy định nhập khẩu trong dữ liệu biểu thuế của Cục Hải quan Đài Loan, kết quả chỉ mang tính tham khảo cho vận hành. Việc sản phẩm có thực sự cần kiểm tra, giấy phép hoặc khai báo hải quan chính thức hay không do cơ quan hải quan và đại lý hải quan đối tác thẩm định. Hàng nhập để bán là hàng thương mại, không được áp dụng hạn mức miễn giấy phép dành cho hàng tự dùng cá nhân.

Tính năng đang lên kế hoạch

Đơn xuất kho hàng loạt, lô xuất hàng được tự động nhóm theo quy định khai báo, cùng với tồn kho đặt sẵn, phân loại và nhãn vận chuyển của sàn tại kho Đào Viên. Các tính năng này sẽ được công bố trên trang này khi ra mắt.

2 Đăng ký và khóa API

API Người bán chỉ dành cho doanh nghiệp đã đăng ký, mỗi khóa được gắn với một tài khoản người bán đã được phê duyệt.

Các bước kích hoạt

  1. Trong trung tâm thành viên, thêm người khai báo loại “Công ty” và nhập mã số thuế Đài Loan 8 chữ số.
  2. Liên hệ bộ phận chăm sóc khách hàng HowBridge để đăng ký kích hoạt API Người bán; khóa sẽ được cấp sau khi được phê duyệt.
  3. Khóa chỉ hiển thị một lần. Hãy lưu trong biến môi trường phía máy chủ, không đưa vào trình duyệt hoặc ứng dụng.
  4. Nếu cần webhook, trước tiên hãy thiết lập và xác minh URL trong trang API của trung tâm thành viên, sau đó đăng ký nhận sự kiện người bán.
Mọi yêu cầu đều dùng Authorization: Bearer <khóa API>. Token được tạo khi thành viên thông thường đăng nhập ứng dụng hoặc trang web không thể gọi API Người bán.
Authorization: Bearer 12|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Accept: application/json

3 Quy ước chung

Tất cả endpoint đều áp dụng các quy tắc sau.

Base URL

https://0523.tw/api/v1/merchant

Định dạng và ngôn ngữ

Yêu cầu và phản hồi đều là JSON. Thông báo lỗi mặc định bằng tiếng Trung phồn thể; gửi kèm Accept-Language: en để nhận tiếng Anh. Khi xử lý trong chương trình, luôn dùng error.code cố định bằng tiếng Anh.

Cấu trúc phản hồi

Thành công trả về {"success": true, "data": …, "meta": …}; thất bại trả về {"success": false, "error": {"code", "message", "errors", "context"}}, trong đó errors là chi tiết theo từng trường. Ngoại lệ duy nhất là khi không gửi khóa hoặc khóa không hợp lệ: HTTP 401, body là {"message": "Unauthenticated."}.

{
  "success": false,
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "…",
    "errors": [
      { "code": "TRACKING_IN_USE", "field": "packages.0.tracking_no", "message": "…" }
    ]
  }
}

Giới hạn tần suất

Mỗi khóa được gọi 60 lần mỗi phút và 5,000 lần mỗi ngày (gói lưu lượng cao: 300 lần mỗi phút và 50,000 lần mỗi ngày); mỗi lần gọi endpoint hàng loạt tính là một lần. Nếu cần dữ liệu theo thời gian thực, hãy đăng ký webhook thay vì gọi thăm dò liên tục (polling).

Header phản hồiMô tả
X-RateLimit-LimitGiới hạn mỗi phút
X-RateLimit-RemainingSố lần còn lại trong phút này
X-RateLimit-Limit-Day
X-RateLimit-Remaining-Day
Giới hạn và số lần còn lại trong ngày
Retry-AfterSố giây cần chờ trước khi thử lại khi vượt giới hạn

Tính lũy đẳng (Idempotency-Key)

Yêu cầu ghi có thể kèm header Idempotency-Key (8–128 ký tự, gồm chữ, số và _-:.). Khi mạng bị hết thời gian chờ, gửi lại với cùng key và cùng nội dung sẽ nhận được phản hồi của lần đầu, kèm header Idempotent-Replayed: true; dùng cùng key với nội dung khác sẽ trả về 422. Bản ghi được lưu trong 24 giờ.

Phản hồi hàng loạt

Endpoint hàng loạt trả kết quả cho từng mục: tất cả thành công trả về 200, một phần thất bại trả về 207, tất cả thất bại trả về 422. Mỗi mục đều có index, status (created / updated / failed) và lý do thất bại.

Ký tự dùng cho mã định danh

seller_sku chỉ được dùng chữ, số và ._- (1–64 ký tự); mã vạch sản phẩm được dùng thêm / và + (3–64 ký tự). Không phân biệt chữ hoa và chữ thường.

4 SKU sản phẩm

SKU dùng seller_sku của bạn làm khóa duy nhất: gửi lại cùng một seller_sku nghĩa là cập nhật, và chỉ những trường được gửi mới bị thay đổi.

Tạo hoặc cập nhật SKU hàng loạt

POST/api/v1/merchant/skus/batch

Tối đa 200 mục mỗi lần. Mỗi mục được xử lý độc lập, một mục thất bại không ảnh hưởng đến các mục khác.

TrườngKiểuBắt buộcMô tả
seller_skustringBắt buộcMã SKU của bạn, ví dụ SKU phân loại hàng trên Shopee.
product_namestringBắt buộc khi tạo mớiTên sản phẩm. Các SKU cùng tên sẽ được nhóm vào cùng một sản phẩm.
barcodestringTùy chọnMã vạch sản phẩm; kho sẽ in nhãn theo mã này và quét khi lên kệ. Mỗi màu sắc, kích cỡ phải có mã khác nhau. Nếu không có mã vạch có thể để trống, hệ thống sẽ tạo mã vạch hệ thống. Nếu dài hơn 16 ký tự, nhãn sẽ in mã vạch hệ thống thay thế.
gtinstringTùy chọnGTIN (mã vạch quốc tế, 8 / 12 / 13 / 14 chữ số, có xác thực chữ số kiểm tra). Với sản phẩm Shopee “không có GTIN”, gửi 00.
specobjectTùy chọnQuy cách, ví dụ {"color": "đen", "size": "M"}, tối đa 5 mục.
declared_name_zh
declared_name_en
stringTùy chọnTên hàng khai báo (tiếng Trung / tiếng Anh). Hãy ghi rõ chất liệu và công dụng, không ghi “hàng mẫu” hay “quà tặng”.
declared_unit_valuenumberTùy chọnĐơn giá khai báo, là đơn giá bạn mua từ nhà cung cấp, không phải giá bán trên sàn.
declared_currencystringTùy chọnCNY, TWD hoặc USD; bắt buộc nếu đã điền đơn giá.
hs_codestringTùy chọnMã phân loại hàng hóa 11 chữ số; hệ thống dựa vào mã này để đối chiếu quy định nhập khẩu.
origin_countrystringTùy chọnMã ISO của nước xuất xứ, mặc định CN.
weight_gintegerTùy chọnTrọng lượng mỗi sản phẩm (gam).
dimensions_cmarrayTùy chọnDài, rộng, cao (cm), ví dụ [20, 15, 3].
battery_typestringTùy chọnnone, contained (pin lắp sẵn), packed (pin đóng gói kèm), standalone (pin rời).
channelsarrayTùy chọnLiên kết sản phẩm trên sàn, tối đa 20 bộ: platform (shopee / coupang / momo / other), shop_id, item_id, model_id, platform_sku.

Ví dụ về yêu cầu (POST JSON)

curl -X POST https://0523.tw/api/v1/merchant/skus/batch \
  -H "Authorization: Bearer $LUCKY_MERCHANT_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: sku-sync-20260917-001" \
  -d '{
  "items": [
    {
      "seller_sku": "TEE-RED-S",
      "barcode": "4710000000011",
      "product_name": "Cotton T-shirt",
      "spec": { "color": "red", "size": "S" },
      "declared_name_en": "Cotton knitted T-shirt",
      "declared_unit_value": 18.5,
      "declared_currency": "CNY",
      "hs_code": "61091000006",
      "weight_g": 160,
      "channels": [ { "platform": "shopee", "shop_id": "123456", "item_id": "2233", "model_id": "445566" } ]
    }
  ]
}'

Phản hồi 200

{
  "success": true,
  "data": [
    {
      "index": 0,
      "seller_sku": "TEE-RED-S",
      "status": "created",
      "sku": {
        "seller_sku": "TEE-RED-S",
        "barcode": "4710000000011",
        "system_barcode": null,
        "pick_code": "131999",
        "hs_code": "61091000006",
        "regulation": { "status": "ok", "import_codes": [], "reasons": [] },
        "channels": [ { "platform": "shopee", "shop_id": "123456", "item_id": "2233", "model_id": "445566", "platform_sku": null } ]
      }
    }
  ],
  "meta": { "summary": { "created": 1, "updated": 0, "failed": 0 } }
}

Xác định quy định nhập khẩu (regulation.status)

okKhông có mã quy định nhập khẩu.
review_requiredQuy định chỉ áp dụng cho một phần sản phẩm (ví dụ C02 “một số sản phẩm thuộc mục này phải kiểm tra”), cần xác nhận theo công dụng thực tế của sản phẩm.
formal_requiredThuộc diện quy định nhập khẩu (kiểm tra, kiểm dịch, giấy phép, v.v.), không được dùng khai báo đơn giản.
blockedHàng Trung Quốc đại lục không được phép nhập khẩu (MW0, xuất xứ Trung Quốc đại lục), không thể đăng ký nhập kho trước.
unclassifiedChưa cung cấp mã biểu thuế nên chưa thể xác định.

Tra cứu danh sách SKU

GET/api/v1/merchant/skus

Có thể lọc theo seller_sku, barcode, regulation_status, updated_since (ISO 8601), phân trang bằng page / per_page (tối đa 100).

Lấy một SKU

GET/api/v1/merchant/skus/{seller_sku}

Cập nhật liên kết sản phẩm trên sàn

PUT/api/v1/merchant/skus/{seller_sku}/channels

Thay thế toàn bộ liên kết hiện có bằng danh sách được gửi. Cùng một phân loại sản phẩm trên sàn không thể liên kết đồng thời với hai SKU.

Tải nhãn mã vạch sản phẩm

GET/api/v1/merchant/skus/{seller_sku}/label.pdf?qty=10

Trả về tệp PDF nhãn 40×30mm, qty là số nhãn (1–1000). Kho Thâm Quyến in cùng loại nhãn này khi dán mã; dùng chức năng này khi bạn muốn tự dán mã trước khi gửi hàng.

5 Đăng ký nhập kho trước

Sau khi nhà cung cấp gửi hàng, hãy đăng ký trước mã vận đơn và hàng bên trong. Một phiếu nhập kho có thể có nhiều mã vận đơn, dưới mỗi mã vận đơn liệt kê SKU và số lượng.

Tạo phiếu nhập kho

POST/api/v1/merchant/inbound-orders

Xác thực toàn bộ phiếu: chỉ cần có một lỗi thì phiếu sẽ không được tạo. Tại một thời điểm, mỗi mã vận đơn chỉ được thuộc một phiếu nhập kho đang xử lý; SKU trùng lặp trong cùng một kiện hàng sẽ được cộng gộp số lượng.

TrườngKiểuBắt buộcMô tả
reference_nostringBắt buộcMã đơn mua hàng hoặc mã phiếu nhập kho của bạn, là duy nhất trong cùng một người bán (chữ, số và ._-/).
supplier_order_nostringTùy chọnMã đơn hàng của nhà cung cấp, ví dụ mã đơn hàng 1688.
warehouse_codestringTùy chọnKho nhận hàng, hiện chỉ nhận SZ (kho Thâm Quyến).
notesstringTùy chọnGhi chú (tối đa 1,000 ký tự).
packagesarrayBắt buộcDanh sách kiện hàng chuyển phát, tối đa 50 kiện.
packages[].tracking_nostringBắt buộcMã vận đơn chuyển phát tại Trung Quốc.
packages[].carrierstringTùy chọnMã hãng chuyển phát, ví dụ yto, sf.
packages[].itemsarrayBắt buộcHàng trong kiện: seller_sku và qty, tổng cộng tối đa 500 dòng cho mỗi phiếu nhập kho.

Ví dụ về yêu cầu (POST JSON)

curl -X POST https://0523.tw/api/v1/merchant/inbound-orders \
  -H "Authorization: Bearer $LUCKY_MERCHANT_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: po-20260917-0001" \
  -d '{
  "reference_no": "PO-20260917-0001",
  "supplier_order_no": "1688-3312456789",
  "packages": [
    {
      "tracking_no": "YT1234567890123",
      "carrier": "yto",
      "items": [
        { "seller_sku": "TEE-RED-S", "qty": 40 },
        { "seller_sku": "TEE-RED-M", "qty": 60 }
      ]
    }
  ]
}'
Chống gửi trùng: tạo lại với cùng reference_no sẽ trả về 409 INBOUND_REFERENCE_EXISTS, trong đó error.context.inbound_order_id chứa id của phiếu nhập kho ban đầu. Để thử lại an toàn, hãy gửi kèm Idempotency-Key.

Trạng thái phiếu nhập kho

createdĐã đăng ký trước, chưa có kiện hàng nào đến kho.
partially_arrivedMột phần kiện hàng đã đến kho Thâm Quyến.
arrivedTất cả kiện hàng đã đến kho, đang dán mã và lên kệ.
completedĐã lên kệ toàn bộ, số lượng khớp với đăng ký trước.
completed_with_discrepancyĐã hoàn tất toàn bộ nhưng có thiếu hàng, thừa hàng hoặc hư hỏng.
cancelledĐã hủy.

Trạng thái kiện hàng

awaiting_arrivalĐang chờ đến kho.
labelingĐã đến kho, đã tạo phiếu công việc, đang dán mã và lên kệ.
receivedĐã lên kệ xong.
mismatchTài khoản sở hữu kiện hàng khi nhập kho không khớp với đăng ký trước của bạn, bộ phận chăm sóc khách hàng đang đối chiếu.
cancelledĐã hủy hoặc bị vô hiệu, mã vận đơn đã được giải phóng.

Tra cứu phiếu nhập kho

GET/api/v1/merchant/inbound-orders

GET/api/v1/merchant/inbound-orders/{id}

Có thể lọc theo status, reference_no, updated_since. Mỗi kiện hàng trả về số lượng dự kiến, thực nhận, hư hỏng và chênh lệch.

Hủy phiếu nhập kho

POST/api/v1/merchant/inbound-orders/{id}/cancel

Chỉ có thể hủy khi chưa có kiện hàng nào đến kho; sau khi hủy, mã vận đơn có thể được đăng ký trước lại.

6 Tra cứu tồn kho

Tồn kho được tách theo kho: SZ kho Thâm Quyến, TY kho Đào Viên (tồn kho tại kho Đào Viên sẽ mở cùng với tính năng xuất hàng).

Tra cứu tồn kho

GET/api/v1/merchant/inventory?warehouse_code=SZ

Có thể lọc theo warehouse_code và seller_sku[] (tối đa 200 mã).

on_handSố lượng trong kho.
reservedSố lượng đã được giữ cho đơn hàng.
availableSố lượng khả dụng = trong kho − đã giữ.
damagedSố lượng hư hỏng, không thể xuất hàng.

Phản hồi 200

{
  "success": true,
  "data": [
    { "seller_sku": "TEE-RED-S", "barcode": "4710000000011", "warehouse_code": "SZ",
      "on_hand": 38, "reserved": 0, "available": 38, "damaged": 2, "updated_at": "2026-09-17T15:20:11+08:00" }
  ],
  "meta": { "total": 1, "page": 1, "per_page": 100, "last_page": 1 }
}

Sổ biến động tồn kho

GET/api/v1/merchant/inventory/movements?after_id=0&limit=200

Bản ghi biến động chỉ thêm, không sửa. Dùng con trỏ after_id để lấy trang tiếp theo (tối đa 500 bản ghi mỗi lần), lưu lại meta.next_after_id trong phản hồi để tiếp tục lấy dữ liệu đối soát.

7 Sự kiện Webhook

Khi sự kiện xảy ra, thông báo được đẩy ngay đến URL của bạn, không cần gọi thăm dò liên tục.

Cách thiết lập

  1. Thiết lập URL webhook trong trang API của trung tâm thành viên (chỉ chấp nhận https) và hoàn tất xác minh quyền sở hữu: endpoint của bạn phải trả về HTTP 200 với body là {"challenge": "giá trị nhận được"}.
  2. Gọi PUT /api/v1/merchant/webhook/events để đăng ký nhận sự kiện người bán. Sau đó, việc đổi URL trong trung tâm thành viên sẽ không xóa đăng ký sự kiện người bán.
curl -X PUT https://0523.tw/api/v1/merchant/webhook/events \
  -H "Authorization: Bearer $LUCKY_MERCHANT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"events": ["inbound.arrived", "inbound.received", "inbound.discrepancy", "inventory.changed"]}'

Danh sách sự kiện

sku.regulation_flaggedKết quả xác định quy định nhập khẩu của SKU chuyển thành cần xác nhận, cần khai báo hải quan chính thức hoặc không được phép nhập khẩu.
inbound.arrivedKiện hàng đã đến kho Thâm Quyến, phiếu công việc đã được tạo.
inbound.mismatchTài khoản sở hữu kiện hàng khi nhập kho không khớp với đăng ký trước, bộ phận chăm sóc khách hàng đang đối chiếu.
inbound.receivedKiện hàng đã lên kệ xong, kèm số lượng dự kiến, thực nhận và hư hỏng của từng SKU.
inbound.discrepancySố lượng lên kệ khác với đăng ký trước hoặc có hư hỏng (được gửi cùng lúc với inbound.received).
inventory.changedTồn kho có biến động, kèm tồn kho mới nhất của các SKU bị thay đổi.

inbound.received

{
  "event": "inbound.received",
  "delivery_id": "5b0f1c2e-8f3a-4d7e-9c21-0a6b2d4e8f10",
  "created_at": "2026-09-17T15:20:11+08:00",
  "data": {
    "inbound_order_id": 128,
    "reference_no": "PO-20260917-0001",
    "order_status": "completed_with_discrepancy",
    "tracking_no": "YT1234567890123",
    "work_order": "WO-SK-315",
    "warehouse_code": "SZ",
    "items": [
      { "seller_sku": "TEE-RED-S", "expected_qty": 40, "received_qty": 38, "damaged_qty": 2, "difference": 0 },
      { "seller_sku": "TEE-RED-M", "expected_qty": 60, "received_qty": 59, "damaged_qty": 0, "difference": -1 }
    ],
    "received_at": "2026-09-17T15:20:10+08:00"
  }
}

Xác minh chữ ký

Mỗi lần đẩy đều kèm X-Lucky-Event, X-Lucky-Delivery-Id và X-Lucky-Signature: t=dấu_thời_gian,v1=chữ_ký. Dùng webhook secret của bạn tính HMAC-SHA256 trên “dấu thời gian + . + body gốc”, so sánh với v1, và từ chối dấu thời gian cũ hơn 5 phút. Khi cùng một sự kiện được gửi lại, delivery_id không đổi, có thể dùng để loại bỏ trùng lặp.

Phản hồi không phải 2xx sẽ được thử lại sau 1 phút, 5 phút, 30 phút, 2 giờ và 6 giờ; nếu thất bại liên tiếp 20 lần, webhook sẽ tự động bị vô hiệu hóa và cần thiết lập lại trong trung tâm thành viên.

// PHP
$body   = file_get_contents('php://input');
$header = $_SERVER['HTTP_X_LUCKY_SIGNATURE'] ?? '';
parse_str(str_replace(',', '&', $header), $sig);   // ['t' => '1789…', 'v1' => 'ab12…']

$expected = hash_hmac('sha256', ($sig['t'] ?? '') . '.' . $body, getenv('LUCKY_WEBHOOK_SECRET'));

if (! hash_equals($expected, $sig['v1'] ?? '') || abs(time() - (int) ($sig['t'] ?? 0)) > 300) {
    http_response_code(400);
    exit;
}
$event = json_decode($body, true);   // de-duplicate by $event['delivery_id']
http_response_code(200);

8 Mã lỗi

error.code luôn cố định bằng tiếng Anh. Dưới đây là các lỗi thường gặp.

HTTPerror.codeMô tả
401—Không gửi khóa, khóa không hợp lệ hoặc đã hết hạn (body là {"message": "Unauthenticated."}).
403MERCHANT_TOKEN_REQUIREDToken này không có quyền dùng API Người bán (ví dụ token được tạo khi thành viên thông thường đăng nhập).
403MERCHANT_NOT_APPROVED
MERCHANT_SUSPENDED
Tài khoản chưa được phê duyệt là người bán, hoặc người bán đã bị tạm ngưng.
403APP_SUSPENDED
APP_REVOKED
APP_NOT_FOUND
Ứng dụng API tương ứng với khóa đã bị đình chỉ hoặc thu hồi.
422VALIDATION_FAILED
PRODUCT_NAME_REQUIRED
Dữ liệu sai định dạng, xem chi tiết theo từng trường trong error.errors.
422BATCH_TOO_LARGESố mục trong lần gửi hàng loạt vượt quá giới hạn.
207 / 409SKU_BARCODE_DUPLICATE
SKU_BARCODE_CONFLICT
Mã vạch sản phẩm đã được một SKU khác sử dụng, hoặc trùng với mã vạch hệ thống hay mã lấy hàng của một SKU khác.
207 / 422GTIN_INVALID
HS_CODE_NOT_FOUND
Chữ số kiểm tra GTIN không đúng, hoặc mã biểu thuế không tồn tại.
404 / 422SKU_NOT_FOUND
SKU_IMPORT_BLOCKED
Không tìm thấy SKU, hoặc SKU thuộc hàng không được phép nhập khẩu nên không thể đăng ký trước.
409INBOUND_REFERENCE_EXISTSMã tham chiếu của phiếu nhập kho đã tồn tại.
422TRACKING_IN_USE
TRACKING_FORECASTED_BY_OTHER
TRACKING_ALREADY_WAREHOUSED
TRACKING_NOT_AVAILABLE
Mã vận đơn đã nằm trong một phiếu nhập kho đang xử lý, đã được thành viên khác đăng ký trước, hoặc đã nhập kho dưới tên thành viên khác.
409INBOUND_NOT_CANCELLABLEĐã có kiện hàng đến kho nên không thể hủy phiếu nhập kho.
400 / 409 / 422IDEMPOTENCY_KEY_INVALID
IDEMPOTENCY_IN_PROGRESS
IDEMPOTENCY_KEY_REUSED
Idempotency-Key sai định dạng, đã được dùng cho nội dung khác, hoặc yêu cầu trước đó vẫn đang được xử lý.
409CONFLICT_RETRYCùng một bản ghi đang được một yêu cầu khác sửa đổi, vui lòng gửi lại sau ít phút.
429RATE_LIMIT_EXCEEDEDVượt giới hạn tần suất; hãy chờ theo Retry-After rồi thử lại.

9 Ví dụ mã nguồn

Hãy chạy các ví dụ dưới đây ở phía máy chủ, không đưa khóa vào mã front-end.

use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;

$api = Http::withToken(config('services.lucky.merchant_key'))
    ->acceptJson()
    ->baseUrl('https://0523.tw/api/v1/merchant')
    ->timeout(20);

// 1) Sync SKUs (up to 200 per request)
$res = $api->withHeaders(['Idempotency-Key' => (string) Str::uuid()])
    ->post('/skus/batch', ['items' => $items]);

foreach ($res->json('data') as $row) {
    if ($row['status'] === 'failed') {
        logger()->warning('SKU failed', $row['errors']);
    }
}

// 2) Forecast an inbound order
$order = $api->withHeaders(['Idempotency-Key' => 'po-' . $po->id])
    ->post('/inbound-orders', [
        'reference_no' => $po->number,
        'packages'     => [[
            'tracking_no' => $po->tracking_no,
            'items'       => [['seller_sku' => 'TEE-RED-S', 'qty' => 40]],
        ]],
    ])->throw()->json('data');

// 3) Read Shenzhen stock
$stock = $api->get('/inventory', ['warehouse_code' => 'SZ'])->json('data');

10 Hỗ trợ kỹ thuật

Nếu gặp vấn đề trong quá trình tích hợp, vui lòng cung cấp thời gian gửi yêu cầu, endpoint và error.code để chúng tôi hỗ trợ kiểm tra.

Tài khoản LINE chính thức @0523tw

Email kỹ thuật howyunqisoftware@gmail.com

Phiên bản v1 Giai đoạn 1 (2026-09-17): SKU sản phẩm, đăng ký nhập kho trước, dán mã và lên kệ tại kho Thâm Quyến, tra cứu tồn kho, webhook.

Liên hệ hỗ trợ để kích hoạt