Membuat EAN 13 Barcode Dengan PHP

Banyak developer yang mencari cara untuk membuat barcode yang valid atau benar sesuai struktur, tetapi sulit mendapatkan referensi. Disini betta akan menjelaskan bagaimana membuat barcode yang valid dan benar sesuai struktur. Jenis barcode yang akan betta bahas adalah EAN-13 (EAN 13).
Apa itu kode EAN?
Kode EAN / EAN Code (European Articles Numbering). EAN-13 diciptakan oleh European Articles Numbering (EAN). Sehingga jenis barcode ini banyak digunakan di negara Eropa.
EAN-13 terdiri dari 13 digit (12 data dan 1 check digit) yang merupakan modifikasi dari sistem Universal Product Code (UPC). Maka dari itu, banyak reader yang bisa membaca EAN-13 sekaligus dapat membaca tipe UPC-A.

13 digit dari EAN-13 terdiri dari:
- 2 atau 3 digits nomor sistem atau kode negara
- 5 atau 4 digits untuk pabrikan atau perusahaan
- 5 digits untuk kode produk
- 1 digit untuk cek
Dimana digunakan?
EAN-13 banyak digunakan pada POS dan retail.
Setelah kita tahu pengertian dan struktur EAN 13 Barcode sekarang kita lanjut ke topik utamanya! Let’s Code!
1. Membuat Library EAN13
<?php
class EAN13 {
private $code = null;
private $prefix = false;
public function __construct ($prefix = false) {
$this->prefix = $prefix === false ? false : (string) $prefix;
}
public static function create($prefix = false) {
$barcode = new static($prefix);
return $barcode->generate();
}
public function generate()
{
// Generate random
$this->code = (string) mt_rand(100000000000, 999999999999); // 12 chars long
if ($this->prefix) {
$this->code = $this->prefix . $this->code;
$this->code = substr($this->code, 0, -strlen($this->prefix));
}
// Get latest digit
$this->code .= $this->getCheckDigit();
return $this->code;
}
private function getCheckDigit()
{
$codePartials = str_split($this->code);
$checkdigit = null;
$evenNumbers = 0;
$oddNumbers = 0;
foreach ($codePartials as $key => $value) {
if (($key + 1) % 2 == 0) { // Keys start from 0, We want the start to be 1
$evenNumbers += $value;
} else {
$oddNumbers += $value;
}
}
$evenNumbers = $evenNumbers * 3;
$total = $evenNumbers + $oddNumbers;
if ($total % 10 == 0) {
$checkdigit = 0;
} else {
$next_multiple = $total + (10 - $total % 10);
$checkdigit = $next_multiple - $total;
}
return $checkdigit;
}
}
Library tersebut berguna untuk membuat kode EAN 13. Silahkan copy dan paste kode di atas atau download dari link berikut Gist EAN 13.
2. Membuat Kode Manufaktur / Kode Pabrik
Sesuai dengan penjelasan dari pengertian di atas, betta perlu untuk membuat kode manufaktur secara unik yaitu 5 digit angka yang dibuat sesuai berdasarkan nama pabrik berdasarkan apa yang masukkan pengguna. Yang betta implementasikan disini adalah sebagai berikut:
<?php
if ( !function_exists('create_mfg_code') ) {
function create_mfg_code($mfg_name)
{
$rand = mt_rand(00000, 99999);
$code = initials( $mfg_name );
$gen = $code . $rand;
return substr( $gen, 0, -strlen($code) );
}
}
if ( !function_exists('initials') ) {
function initials($str) {
$ret = null;
foreach (explode(' ', $str) as $word) {
$num = to_num(strtolower($word[0]));
$ret .= $num;
}
return $ret;
}
}
if ( !function_exists('to_num') ) {
function to_num($data) {
$alphabet = array( 'a', 'b', 'c', 'd', 'e',
'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't',
'u', 'v', 'w', 'x', 'y',
'z'
);
$alpha_flip = array_flip($alphabet);
$return_value = -1;
$length = strlen($data);
for ($i = 0; $i < $length; $i++) {
$return_value +=
($alpha_flip[$data[$i]] + 1) * pow(26, ($length - $i - 1));
}
return $return_value;
}
}
Kode di atas akan membuat 5 digit kode manufaktur / pabrik secara otomatis, Contoh penggunaan fungsi craete_mfg_code( $mfg_name )
fungsi tersebut membutuhkan parameter “Nama Pabrik / Gudang / Nama Manufaktur” pada contoh ini saya menggunakan nama Gudang:
<?php
echo create_mfg_code( 'Gudang Timur' );
// Hasil : 61999
3. Membuat Kode Produk
Untuk dapat membuat kode batang / barcode yang sesuai maka kita membutuhkan kode produk yang sesuai ketentuan dari penjelasan di atas, yaitu 5 digit kode produk. Contoh membuat 5 digit kode produk unik:
<?php
// Craete Product Code
$product_code = substr(round(microtime(true)),0,5);
// Hasil : 15949
4. Menentukan Nomor Sistem / Number System
Pada kasus ini betta menentukan bahwa nomor sistem yang betta gunakan adalah 2 digit angka yaitu 17. Kalian bisa menggunakan alternatif lain seperti contoh dan pengetian pada gambar di atas yaitu dengan menggunakan kode negara.
5. Menggabungkan Nomor Sistem, Kode Manufaktur dan Kode Produk
Setelah membuat Kode Manufaktur, Kode Produk, dan Nomor Sistem. Setelah itu betta hendak menggabungkannya sehingga akan menjadi sebagai berikut:
<?php
// Combine
$item_code = $number_system . $mfg_code . $product_code;
// Hasil : 1761999159498 (Panjang 12 digit)
kode yang digabungkan terdiri dari Nomor Sistem + Kode Manufaktur + Kode Produk = 12 digit angka. Setelah digabungkan maka tugas terakhir kita adalah membuat kode batangnya menggunakan library EAN-13 supaya digit tersebut valid.
6. Menggunakan Library EAN-13
Untuk menggunakan library EAN-13nya kalian hanya membutuhkan 1 baris kode sebagai berikut:
<?php
$barcode = EAN13::create($item_code);
echo "Barcode: ". $barcode . PHP_EOL;
// Hasil : Barcode: 1761999159498 (Panjang 13 Digit angka)
Berikut Contoh Barcode EAN-13
Selesai! Mudah sekali bukan? Oh iya, kalau kita bisa membuat kombinasi angka menjadi kode batang / barcode dengan jenis EAN-13 maka seharusnya kita bisa meng-ekstrak struktur barcode yang kita buat, karena barcode tersebut mengandung sebuah informasi tetang produk yang akan dilabeli.
Bagaiamana cara meng-ekstrak barcode jenis EAN-13?
Untuk artikel cara ekstrak barcode jenis EAN-13 akan betta bahas di blog berikutnya ya! Jangan lupa share jika menurut kalian blog ini bermanfaat.
Berikut kode lengkapnya: EAN-13_example.php