Search by

tikhomirov / iiko-core

tikhomirov

Portable iiko Cloud API core extracted from Woo2iiko — settings contracts, HTTP transport, token provider, and endpoint clients without WordPress.

Package info

github.com/tikhomirov/iiko-core

pkg:composer/tikhomirov/iiko-core

Statistics

Installs: 13

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

0.4.0 2026-09-08 07:44 UTC

This package is auto-updated.

Last update: 2026-09-08 07:53:22 UTC


README

Portable PHP library for iiko Cloud API integration. Extracted from Woo2iiko as the framework-neutral core for WordPress and Laravel consumers.

Requirements

  • PHP 8.3+
  • ext-curl, ext-json, ext-mbstring

Install

composer require tikhomirov/iiko-core

What's included (v0.1)

Layer Contents
Settings SettingsStore contract, SettingsDefaults, InMemorySettingsStore, SettingsTransferExcludedOptionKeys
Cache CacheContract, ArrayCache in-memory adapter
IikoApi ApiSettings, TokenProvider, AuthenticatedApiRequest, portable endpoint clients (StopListApi, MenuApi, OrdersApi, LoyaltyApi)
Import ExternalMenuNormalizer — external menu API v2 → office nomenclature
Export OrderPayloadBuilder, DeliveryPreRequestBuilder, address normalizers
Config config/settings.php defaults schema

WordPress-specific adapters (WordPressHttpTransport, WordPressSettingsStore, WooCommerce hooks) stay in the Woo2iiko plugin or a future iiko-laravel package.

Settings API

use iiko\Shared\Settings\SettingsDefaults;
use iiko\Shared\Settings\SettingsTransferExcludedOptionKeys;

// Config keys (with iiko_ prefix) merged from base + main + common + mode sections
$configDefaults = SettingsDefaults::forMode('delivery');

// Storage keys as persisted in iiko_settings option
$storageDefaults = SettingsDefaults::forModeStorage('delivery');

// Lookup by config or storage key
SettingsDefaults::defaultValue('debug'); // 'no'
SettingsDefaults::defaultStorageValue('geo_system'); // 'yandex'

// Export/import filtering
$payload = SettingsTransferExcludedOptionKeys::unsetFrom($settings);
$payload = SettingsTransferExcludedOptionKeys::unsetEnvironmentFrom($payload);

Usage sketch

use iiko\Infrastructure\IikoApi\ApiSettings;
use iiko\Infrastructure\IikoApi\FakeHttpTransport;
use iiko\Infrastructure\IikoApi\MemoryTokenStorage;
use iiko\Infrastructure\IikoApi\StopListApi;
use iiko\Infrastructure\IikoApi\TokenProvider;

$settings = new ApiSettings(
    baseUrl: 'https://api-ru.iiko.services/api/1/',
    login: 'login',
    password: 'password',
    authMode: 'legacy_api_login',
    organizationId: 'org-id',
);

$transport = new FakeHttpTransport();
$tokenProvider = new TokenProvider($transport, new MemoryTokenStorage());
$stopListApi = new StopListApi($settings, $transport, $tokenProvider);

Tests

composer install
composer test

Portable tests run without WordPress bootstrap.

Related

  • Woo2iiko plugin — WordPress/WooCommerce adapter (consumer)
  • docs/refactor/laravel-porting.md in Woo2iiko — extraction roadmap

License

Proprietary. All rights reserved.