Skip to content

lloricode/check-digit

Folders and files

NameName
Last commit message
Last commit date
Feb 10, 2025
Oct 9, 2023
Oct 9, 2023
Sep 2, 2020
Oct 9, 2023
Oct 9, 2023
Oct 9, 2023
Oct 21, 2020
Oct 9, 2023
Oct 9, 2023
Oct 9, 2023
Oct 9, 2023
Oct 9, 2023

Repository files navigation

Check Digit

Latest Version on Packagist Tests Total Downloads codecov

Check digit formula base on https://www.gs1.org/services/how-calculate-check-digit-manually, and tested by https://www.gs1.org/services/check-digit-calculator

Installation

You can install the package via composer:

composer require lloricode/check-digit

Usage

// Sample usage in testing
// tests/Feature/GenerateTest.php

use Lloricode\CheckDigit\Enums\Format;
use Lloricode\CheckDigit\Generator;

# base in https://www.gs1.org/services/check-digit-calculator

assertSame(2, Generator::new(9638527, Format::GTIN_8())->getCheckDigit());
assertSame(4, Generator::new(3216549, Format::GTIN_8())->getCheckDigit());

assertSame(2, Generator::new(91739456321, Format::GTIN_12())->getCheckDigit());
assertSame(8, Generator::new(74185245963, Format::GTIN_12())->getCheckDigit());

assertSame(3, Generator::new(629104150021, Format::GTIN_13())->getCheckDigit());
assertSame(6, Generator::new(123456789876, Format::GTIN_13())->getCheckDigit());

assertSame(6, Generator::new(7539514528423, Format::GTIN_14())->getCheckDigit());
assertSame(5, Generator::new(8563251459762, Format::GTIN_14())->getCheckDigit());

assertSame(0, Generator::new(7896541230123456, Format::GSIN())->getCheckDigit());
assertSame(3, Generator::new(7658485040650456, Format::GSIN())->getCheckDigit());

assertSame(6, Generator::new(95135623050123698, Format::SSCC())->getCheckDigit());
assertSame(7, Generator::new(87643802105978513, Format::SSCC())->getCheckDigit());

// get generated value
assertSame('876438021059785137', Generator::new(87643802105978513, Format::SSCC())->getValue());

// starts with zero
assertSame(7, Generator::new('0012345', Format::GTIN_8())->getCheckDigit());
assertSame(5, Generator::new('00123456789', Format::GTIN_12())->getCheckDigit());
assertSame(5, Generator::new('001234567890', Format::GTIN_13())->getCheckDigit());
assertSame(2, Generator::new('0012345678901', Format::GTIN_14())->getCheckDigit());
assertSame(3, Generator::new('0012345678901234', Format::GSIN())->getCheckDigit());
assertSame(2, Generator::new('00123456789012345', Format::SSCC())->getCheckDigit());

Testing

vendor/bin/pest

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email lloricode@gmail.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.