Files
orderPRO/.paul/codebase/INTEGRATIONS.md
Jacek Pyziak b1b2cc5827 chore: generate codebase map in .paul/codebase/
INDEX, STACK, ARCHITECTURE, CONVENTIONS, TESTING, INTEGRATIONS, CONCERNS
2026-04-26 21:39:12 +02:00

5.1 KiB

External Integrations

Allegro (Polish e-commerce — OAuth2)

Auth: OAuth2 Authorization Code Grant
Scopes: orders:read/write, sale:offers:read, shipments:read/write
Token storage: Encrypted in allegro_integration_settings
Token refresh: AllegroTokenManager — auto-refreshes before expiry
User-Agent: Required from 01.07.2026 (env: ALLEGRO_USER_AGENT_URL)

File Purpose
src/Modules/Settings/AllegroApiClient.php REST calls: getCheckoutForm(), listCheckoutForms(), getCheckoutFormShipments()
src/Modules/Settings/AllegroOAuthClient.php OAuth2 flow, token exchange
src/Modules/Settings/AllegroTokenManager.php Token refresh & storage
src/Modules/Settings/AllegroOrderImportService.php Transform & insert Allegro orders
src/Modules/Settings/AllegroOrdersSyncService.php Continuous order sync
src/Modules/Settings/AllegroStatusSyncService.php Push status changes to Allegro
src/Modules/Settings/AllegroStatusDiscoveryService.php Fetch available Allegro statuses
src/Modules/Shipments/AllegroShipmentService.php Create shipments via Allegro
src/Modules/Shipments/AllegroTrackingService.php Track delivery status

shopPRO (Polish e-commerce — API Key)

Auth: API Key + Base URL in integration config
Pagination: page/per_page, max 100 items
Date filter: updated_from parameter

File Purpose
src/Modules/Settings/ShopproApiClient.php fetchOrders(), status/payment sync
src/Modules/Settings/ShopproOrdersSyncService.php Order import/sync
src/Modules/Settings/ShopproPaymentStatusSyncService.php Payment sync
src/Modules/Settings/ShopproStatusSyncService.php Status mapping
src/Modules/Settings/ShopproOrderMapper.php Order transformation (867 LOC)

Apaczka (Polish parcel aggregator)

Auth: App ID + App Secret
Base URL: https://www.apaczka.pl/api/v2
Custom exception: src/Core/Exceptions/ApaczkaApiException.php

File Purpose
src/Modules/Settings/ApaczkaApiClient.php getServiceStructure(), sendOrder(), getOrderDetails(), getWaybill()
src/Modules/Shipments/ApaczkaShipmentService.php Implements ShipmentProviderInterface
src/Modules/Shipments/ApaczkaTrackingService.php Implements ShipmentTrackingInterface

InPost (Parcel lockers + courier)

Auth: Organization token
Production: https://api-shipx-pl.easypack24.net/v1
Sandbox: https://sandbox-api-shipx-pl.easypack24.net/v1
Services: Paczkomat Standard, Kurier Standard, Kurier Express

File Purpose
src/Modules/Shipments/InpostShipmentService.php Create shipments
src/Modules/Shipments/InpostTrackingService.php Track delivery status

Provider Abstraction

Shipment providers implement a common interface:

  • ShipmentProviderInterfacecreateShipment(), downloadLabel()
  • ShipmentTrackingInterfacegetDeliveryStatus()
  • ShipmentProviderRegistry — selects correct provider by type
  • ShipmentTrackingRegistry — selects correct tracker

Email (SMTP via PHPMailer)

Library: PHPMailer 7.0
Config: Multiple mailboxes from DB (EmailMailboxRepository)
Features: HTML + attachments, template variable resolution, logging

File Purpose
src/Modules/Email/EmailSendingService.php Compose & send via configured mailbox
src/Modules/Email/VariableResolver.php Replace {{var}} in templates with order data
src/Modules/Email/AttachmentGenerator.php Generate PDF attachments via Dompdf
src/Modules/Email/EmailMailboxRepository.php SMTP credentials & config
src/Modules/Email/EmailTemplateRepository.php Email template storage

Print Queue API (Windows client)

Auth: Bearer API key (header Authorization: Bearer {key})
Purpose: Windows desktop client retrieves print jobs (shipment labels)

File Purpose
src/Modules/Printing/PrintApiController.php POST /api/print/jobs, status endpoints
src/Modules/Printing/ApiKeyMiddleware.php Validates API key against DB
src/Modules/Printing/PrintApiKeyRepository.php API key management
src/Modules/Printing/PrintJobRepository.php Job queue tracking

PDF & Excel (Libraries)

Library Version Used For
dompdf/dompdf ^3.1 Receipts, invoices, email attachments
phpoffice/phpspreadsheet ^5.5 Accounting export to XLSX

SSL / HTTP

All external API calls use cURL with certificate validation.
Resolver: src/Core/Http/SslCertificateResolver.php
Config: CURL_CA_BUNDLE_PATH in .env

Integration Config Storage

Table Contents
integrations Base record (source type, enabled, API key encrypted)
allegro_integration_settings OAuth tokens (encrypted), Allegro-specific config
*_status_mappings Bidirectional status code translations
email_mailboxes SMTP connection settings
print_api_keys Print client API keys