PHP code example of beeralex / beeralex.marking

1. Go to this page and download the library: Download beeralex/beeralex.marking library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

beeralex / beeralex.marking example snippets



use Beeralex\Marking\Factory\CodesCheckServiceFactory;

try {
    $factory = service(CodesCheckServiceFactory::class);
    $codesCheckService = $factory->createDefault();
    
    $codes = [
        '01046406520015652193MTf2y!%sDJx',
        '01046406520015652193MTf2y!%sABC'
    ];
    
    /** @var \Beeralex\Marking\Entity\Codes\CodesCheckResult $result */
    $result = $codesCheckService->check($codes);
    
    if ($result->allCodesValid()) {
        echo "Все коды валидны!";
    } else {
        foreach ($result->getInvalidCodes() as $code) {
            echo "Невалидный код: {$code->cis}\n";
            echo "Причина: {$code->errorMessage}\n";
        }
    }
} catch (\Exception $e) {
    echo "Ошибка проверки: " . $e->getMessage();
}


use Beeralex\Marking\Factory\CodesCheckServiceFactory;

$factory = service(CodesCheckServiceFactory::class);

// По заказу (автоматически находит кассу)
$service = $factory->createByOrder($order);

// По обработчику кассы
$service = $factory->createByCashbox($cashboxHandler);

// Дефолтные настройки модуля
$service = $factory->createDefault();

$result = $service->check($codes);


namespace Your\Namespace;

use Beeralex\Marking\CashboxSettingsTrait;
use Bitrix\Sale\Cashbox\Cashbox;

class YourCashboxHandler extends Cashbox
{
    use CashboxSettingsTrait;
    
    // Ваш код обработчика
}


use Beeralex\Marking\Factory\CodesCheckServiceFactory;

$factory = service(CodesCheckServiceFactory::class);

// Автоматически возьмет настройки из кассы заказа
$service = $factory->createByOrder($order);
$result = $service->check($codes);

public function check(array $codes): CodesCheckResult
public function setFiscalDriveNumber(string $fiscalDriveNumber): self

public function getCdn(bool $withoutCache = false): Hosts

protected function authorize(): string
protected function retryWithTokenRefresh(callable $callback): mixed

public function allCodesValid(): bool
public function getValidCodes(): array
public function getInvalidCodes(): array
public function hasTransborderUnavailable(): bool

public readonly string $cis;              // Код маркировки
public readonly bool $valid;              // Валиден ли код
public readonly ?string $errorMessage;    // Сообщение об ошибке
public readonly ?string $errorCode;       // Код ошибки

public function save(CodesCheckResult $result): void
public function findByCode(string $code): ?array

use Beeralex\Marking\Exceptions\CdnTemporarilyUnavailableException;
use Beeralex\Marking\Exceptions\TransborderCheckServiceUnavailableException;
use Beeralex\Core\Exceptions\ApiTooManyRequestsException;

try {
    $result = $service->check($codes);
} catch (ApiTooManyRequestsException $e) {
    // Превышен лимит запросов - автоматически переключится на другой CDN
} catch (CdnTemporarilyUnavailableException $e) {
    // CDN временно недоступен - попробует другой хост
} catch (TransborderCheckServiceUnavailableException $e) {
    // Сервис проверки трансграничных кодов недоступен
} catch (\Exception $e) {
    // Общая ошибка
}

// Логи находятся в:
// {module_dir}/logs/
// Например: /local/modules/beeralex.marking/logs/

$options = service(\Beeralex\Marking\Options::class);
if ($options->logsEnable) {
    // Логирование активно
}

$factory = service(CodesCheckServiceFactory::class);
$service = $factory->createDefault();
$service->setFiscalDriveNumber('9999078900005555');

$result = $service->check($codes);

$factory = service(CodesCheckServiceFactory::class);
$service = $factory->createDefault();
$result = $service->check($codes);

foreach ($result->codes as $code) {
    echo "Код: {$code->cis}\n";
    echo "Валиден: " . ($code->valid ? 'Да' : 'Нет') . "\n";
    
    if (!$code->valid) {
        echo "Ошибка: {$code->errorMessage} ({$code->errorCode})\n";
    }
    echo "---\n";
}

$factory = service(CodesCheckServiceFactory::class);
$service = $factory->createDefault();
$result = $service->check($codes);

if ($result->hasTransborderUnavailable()) {
    // Сервис проверки трансграничных кодов недоступен
    // Можно отложить проверку или использовать другой способ
}