Phân tích GS1 & Digital Link API
Phân tích chuỗi GS1 từ GS1-128, GS1 DataMatrix, QR (GTIN, số lô, hạn dùng, serial, khối lượng…) và URI GS1 Digital Link; dựng lại chuỗi và Digital Link.
Gửi data ở dạng đọc được (01)09520123456788(17)261231(10)ABC123, dữ liệu thô từ máy quét có ký tự phân cách GS (ASCII 29, hoặc <GS>, {GS}, \x1d, separator tự chọn; nhận diện tiền tố ]C1 / ]d2 / ]Q3) hoặc URI GS1 Digital Link (https://id.gs1.org/01/09520123456788/10/ABC123?17=261231, tên miền và tiền tố đường dẫn bất kỳ). Mỗi Application Identifier được tra trong bảng của GS1 General Specifications (hơn 700 mục AI, gồm các nhóm số thập phân 310n–369n và 390n–395n): độ dài cố định hay thay đổi, chữ số hay bộ ký tự GS1, số kiểm tra của GTIN / SSCC / GLN, ngày YYMMDD theo quy tắc thế kỷ của GS1 và ngày 00 = ngày cuối tháng, số thập phân và đơn vị (3103 001234 → 1,234 kg), AI tiền tệ.
Kết quả liệt kê từng phần tử với tên, giá trị, hợp lệ hay không và date / number đã giải mã, bảng values gọn, kiểm tra quan hệ giữa các AI (ví dụ (21) cần (01)), tiền tố GS1 của GTIN, cùng dữ liệu dựng lại dạng đọc được, chuỗi phần tử (AI độ dài định sẵn đứng trước, chèn GS khi cần), dữ liệu GS1-128 ]C1 và URI GS1 Digital Link (khoá chính và khoá phụ trên đường dẫn theo đúng thứ tự chuẩn, AI khác ở query; domain để dùng resolver riêng). ais dựng từ một object JSON ({"01": "…", "10": "…", "17": "…"}).
Dùng sau barcode-read để giải mã nhãn thuốc, thực phẩm, hàng logistics, hoặc tạo Digital Link cho mã QR truy xuất nguồn gốc (TT 02/2024/TT-BKHCN).
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
data | query|body | string | có | Dữ liệu GS1: "(01)…(17)…", chuỗi thô có ký tự GS, hoặc URI Digital Link. | |
ais | body | object | không | Chế độ dựng: {"01": "09520123456788", "10": "ABC", "17": "261231"} (thay cho data). | |
separator | query|body | string | không | Ký tự / chuỗi máy quét dùng thay GS. | |
domain | query|body | string | không | https://id.gs1.org | Tên miền resolver cho Digital Link được dựng. |
Ví dụ
curl "https://apibox.io.vn/v1/gs1-parse?data=(01)09520123456788(17)261200(10)ABC123(3103)001234" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/gs1-parse?data=(01)09520123456788(17)261200(10)ABC123(3103)001234', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/gs1-parse?data=(01)09520123456788(17)261200(10)ABC123(3103)001234",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/gs1-parse?data=(01)09520123456788(17)261200(10)ABC123(3103)001234');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"form": "human_readable",
"valid": true,
"elements": [
{
"ai": "01",
"title": "GTIN",
"value": "09520123456788",
"valid": true,
"check_digit": {
"value": 8,
"expected": 8,
"valid": true
},
"indicator_digit": 0,
"gtin13": "9520123456788",
"gs1_prefix": {
"prefix": "952",
"name": "Demonstrations and examples of the GS1 system",
"country_code": null,
"note": "The issuing GS1 member organisation, not the country of manufacture."
}
},
{
"ai": "17",
"title": "USE BY OR EXPIRY",
"value": "261200",
"valid": true,
"date": "2026-12-31",
"note": "Day 00: the last day of the month"
},
{
"ai": "10",
"title": "BATCH/LOT",
"value": "ABC123",
"valid": true
},
{
"ai": "3103",
"title": "NET WEIGHT (kg)",
"value": "001234",
"valid": true,
"decimals": 3,
"number": 1.234,
"unit": "kg"
}
],
"values": {
"10": "ABC123",
"17": "2026-12-31",
"3103": 1.234,
"01": "09520123456788"
},
"human_readable": "(01)09520123456788(17)261200(3103)001234(10)ABC123",
"element_string": "010952012345678817261200310300123410ABC123",
"gs1_128_data": "]C1010952012345678817261200310300123410ABC123",
"digital_link": "https://id.gs1.org/01/09520123456788/10/ABC123?17=261200&3103=001234"
}
Ứng dụng
- Đọc số lô, hạn dùng, serial từ DataMatrix trên hộp thuốc
- Kiểm tra dữ liệu GS1-128 trước khi in tem logistics
- Tạo URI GS1 Digital Link cho QR truy xuất nguồn gốc
- Chuyển dữ liệu máy quét có ký tự GS thành các trường JSON
Hỏi đáp
Ngày 00 trong hạn dùng nghĩa là gì?
Trong các AI ngày của GS1 như (17), ngày 00 là ngày cuối cùng của tháng; API trả về ngày thực tế.
Định nghĩa AI lấy từ đâu?
Từ GS1 General Specifications và GS1 Barcode Syntax Dictionary, nhập tay và rà soát 6 tháng một lần.
API có đọc ảnh mã vạch không?
Không, API phân tích chuỗi văn bản. Hãy đọc ảnh bằng barcode-read trước rồi gửi chuỗi vào đây.
API liên quan
Tạo mã QR
Tạo mã QR dạng PNG hoặc SVG chỉ với một request GET: link, văn bản, WiFi, danh thiếp vCard, e-mail, SMS, số điện thoại, toạ độ. Tuỳ chỉnh màu, kích thước.
|||Tạo mã vạch
Tạo mã vạch Code 128 cho tem nhãn, mã SKU, vận đơn chỉ với một request. Xuất SVG kèm dòng chữ hoặc PNG, tuỳ chỉnh chiều cao, độ rộng và màu sắc.
▭Ảnh placeholder
Lấy ảnh giữ chỗ đúng kích thước cho mockup và test: /v1/placeholder/600x400.png. Xuất SVG với chữ và màu tuỳ chỉnh, hoặc PNG một màu.