حساب رقم تحقق EAN-13 وUPC-A وCode 128
رقم التحقق في الباركود وسيلة حسابية بسيطة تساعد أجهزة المسح وأنظمة الفهارس على اكتشاف أخطاء الإدخال.
شغّل الأداة مجانًا
أدخل البيانات الرقمية واختر EAN-13 أو UPC-A أو Code 128 Mod-103، فتحسب الأداة القيمة التي يفرضها الترميز. تتحقق من عدد الخانات قبل الحساب، وتحافظ على الأصفار البادئة، وتعمل بصورة حتمية من دون الرجوع إلى أي سجل. يمكنكم استخدامها عند إعداد بيانات المنتجات والملصقات وحالات الاختبار ومسارات الاستيراد الآلية.
أدخلوا بيانات الرقم لا باركودًا مكتملًا
ابدؤوا بالخانات التي تحمل البيانات واتركوا رقم التحقق المطلوب حسابه خارج الإدخال. في EAN-13، أدخلوا اثنتي عشرة خانة بالضبط؛ فتعيد النتيجة الخانة الثالثة عشرة ورقم الباركود الكامل المكون من ثلاث عشرة خانة. وفي UPC-A، أدخلوا إحدى عشرة خانة لتحصلوا على الخانة الثانية عشرة. عند استدعاء API، أرسلوا القيمة كنص حتى يظل الصفر البادئ جزءًا من الرقم. ترفض الحاسبة المسافات وعلامات الترقيم والإشارات والفواصل العشرية وأي محرف غير رقمي، لأن التنظيف الصامت قد يخفي خطأ في النسخ. وترفض كذلك عدد الخانات الذي لا يطابق الترميز المختار. يفيد هذا العقد الصريح عندما يجمع عمود في جدول أو موجز منتجات عدة صيغ للمعرفات؛ اختاروا المعيار المقصود بدل تخمينه من المدخل. لا يثبت الحساب إلا الاتساق الرياضي، ولا يمنح بادئة شركة، ولا يؤكد الملكية، ولا يثبت تسجيل الرقم لمنتج حقيقي.
طريقة حساب رقمي EAN-13 وUPC-A
يستخدم EAN-13 وUPC-A نمط الترجيح نفسه وفق باقي القسمة على عشرة. بدءًا من أقصى خانة بيانات إلى اليمين والتحرك يسارًا، تضرب الحاسبة المواضع بالتناوب في ثلاثة وواحد، ثم تجمع النواتج وتختار الخانة التي ترفع المجموع إلى مضاعف العشرة التالي. إذا كان المجموع يقبل القسمة على عشرة أصلًا، يكون رقم التحقق صفرًا. تبقى التسميتان مهمتين لاختلاف الطول المطلوب: يضم EAN-13 اثنتي عشرة خانة بيانات قبل التحقق، بينما يضم UPC-A إحدى عشرة. يكشف الرقم الصحيح كل استبدال لخانة واحدة وكثيرًا من حالات تبديل الخانات الشائعة، ولذلك يفيد في الإدخال والمسح، لكنه ليس توقيعًا مشفرًا. قد تحافظ عدة تغييرات منسقة على النتيجة نفسها أحيانًا. تعاملوا معه بوصفه فحصًا بنيويًا سريعًا، ثم طبقوا قواعد العمل الإضافية التي يتطلبها فهرسكم. ولأن العملية تستخدم حسابًا صحيحًا ثابتًا فقط، تنتج المدخلات والترميزات نفسها دائمًا المخرجات نفسها في المتصفح وعبر API.
معالجة Code 128 Mod-103 الرقمي
تستخدم هذه القدرة مع Code 128 Mod-103 المجموعة C، وهي التمثيل المضغوط المخصص للبيانات الرقمية في أزواج. أدخلوا عددًا زوجيًا من خانتين إلى ثمان وتسعين خانة. يتحول كل زوج إلى كلمة Code 128 قيمتها من صفر إلى تسعة وتسعين. يبدأ المجموع بقيمة Start C وهي 105، ثم تضاف كل كلمة بيانات مضروبة في موضعها الذي يبدأ من واحد. وباقي قسمة ذلك المجموع على 103 هو قيمة التحقق المعادة. قد تظهر في استجابة JSON بمحرف عشري واحد أو اثنين أو ثلاثة، لكنها تمثل كلمة تحقق واحدة في Code 128، وليست أرقامًا مطبوعة تلحق بالنص الأصلي. يجب على مولد الباركود ترميز كلمة التحقق ثم إضافة نمط التوقف. لا تختار هذه الحاسبة بين المجموعات A وB وC ولا تحسن الانتقال بينها؛ فقصر الإدخال على الأرقام يجعل افتراض الترميز واضحًا وقابلًا للتكرار. استخدموا مرمزًا كاملًا إذا تضمنت البيانات حروفًا أو علامات ترقيم أو خانة أخيرة منفردة تتطلب تغيير المجموعة.
حالات الاستخدام
إعداد ملصقات المنتجات
احسبوا الخانة الأخيرة في EAN-13 أو UPC-A قبل إرسال أرقام المنتجات المعتمدة إلى برنامج الملصقات أو توليد الباركود.
اختبار مسار الاستيراد
أنشئوا قيم التحقق المتوقعة لاختبارات موجز المنتجات وارفضوا السجلات التي لا يطابق طولها المعيار المعلن.
إنشاء حالات اختبار رقمية لـCode 128
احصلوا على كلمة Mod-103 للمجموعة C عند اختبار الماسحات أو المرمزات أو ملصقات المستودعات أو عمليات التكامل.
الأسئلة الشائعة
هل يجب إدخال رقم التحقق الموجود؟
لا. أدخلوا اثنتي عشرة خانة لـEAN-13، وإحدى عشرة لـUPC-A، أو البيانات الرقمية الزوجية لـCode 128.
لماذا يجب إرسال رقم الباركود كنص؟
يحافظ النص على الأصفار البادئة بدقة. قد تفقدها القيمة الرقمية في JSON فيتغير الطول المطلوب.
هل تثبت النتيجة الصحيحة أن المنتج مسجل؟
لا. إنها تثبت فقط توافق القيمة مع القاعدة الحسابية المختارة، ولا تستعلم عن سجل للمنتجات أو الشركات.
لماذا يتطلب Code 128 عددًا زوجيًا من الخانات؟
لأن هذه القدرة تستخدم المجموعة C التي ترمز الأرقام في أزواج. يحتاج المحتوى المختلط أو الفردي إلى مرمز كامل.
ما تكلفة طلب API؟
يكلف كل طلب API مقدار $0.002. ويمكن تنفيذ الحساب الحتمي نفسه مجانًا في المتصفح.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/web/barcode-check-digit \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"400638133393","symbology":"ean13"}'const res = await fetch("https://api.kit.forhosting.com/web/barcode-check-digit", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "400638133393",
"symbology": "ean13"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/barcode-check-digit",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "400638133393",
"symbology": "ean13"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/barcode-check-digit", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"400638133393","symbology":"ean13"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"400638133393","symbology":"ean13"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/barcode-check-digit", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"number": "400638133393",
"symbology": "ean13"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.barcode_check_digit",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
timeout_sec | 30 |
max_crawl_pages | 25 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |