tikhomirov / iiko-core
Portable iiko Cloud API core extracted from Woo2iiko — settings contracts, HTTP transport, token provider, and endpoint clients without WordPress.
0.4.0
2026-09-08 07:44 UTC
Requires
- php: ^8.3
- ext-curl: *
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^12.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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.mdin Woo2iiko — extraction roadmap
License
Proprietary. All rights reserved.