- stack.md - Technologies and dependencies - architecture.md - System design and patterns - structure.md - Directory layout - conventions.md - Code style and patterns - testing.md - Test structure (none) - integrations.md - External services - concerns.md - Technical debt and issues - db_schema.md - Database schema and relationships Co-Authored-By: Claude <noreply@anthropic.com>
4.1 KiB
4.1 KiB
External Integrations
Analysis Date: 2026-04-26
APIs & External Services
Payment Processing:
- Przelewy24 — Polish payment gateway for ticket purchases
- SDK/Client: Custom cURL integration in
autoload/controls/class.Tickets.php - Auth: Merchant ID
227658+ CRC key (MD5-signed) inconfig.php - Endpoints:
https://secure.przelewy24.pl/trnVerify(production), sandbox configurable - Flow: Pre-payment form → P24 hosted page →
przelewy24_response()webhook callback - Sandbox mode: toggle in
config.php
- SDK/Client: Custom cURL integration in
Invoice/Receipt Generation:
- fakturowo.pl — Polish invoicing API (paragon or faktura VAT)
- SDK/Client: Custom cURL POST in
autoload/controls/class.Tickets.php - Auth: API ID in
config.php($settings['fakturowo_api_id']) - Endpoint:
https://konto.fakturowo.pl/api - Triggered after successful Przelewy24 payment
- Returns invoice URL stored in
orders.invoice_url
- SDK/Client: Custom cURL POST in
Data Storage
Databases:
- MySQL — Primary data store
- Connection: Credentials in
config.php, instantiated inindex.php:44 - Client: Medoo query builder (
libraries/medoo/medoo.php) - Secondary ORM: RedBeanPHP (
libraries/rb.php) used in cron tasks
- Connection: Credentials in
File Storage:
- Local filesystem — QR code PNG files stored in
orders/{hash[0]}/{hash[1]}/{hash}.png- Web-accessible directory, predictable path structure
- Created with
mkdir($dir, 0755, true)and\QRcode::png()
Authentication & Identity
Admin Auth:
- Single shared password stored in
config.php($settings['admin-password']) - Session-based: password checked once,
$_SESSION['user'] = trueset - No individual admin accounts for ticket operations (single login)
Staff/User Auth:
- Separate user table for named staff (
userstable — id, email, MD5 password) - Used for non-ticket modules (projects, finances, etc.)
- Hard-coded ACL in
autoload/controls/class.Users.php(permissions()method) - Login via
autoload/factory/class.Users.php::login()with MD5 comparison
PHPMailer + SMTP:
- Library:
libraries/phpmailer/class.phpmailer.php - SMTP host:
h53.seohost.plport 25 - From address:
bilety@brzezovka.pl - Credentials: in
config.php - Fallback: native PHP
mail()if SMTP unavailable - Debug logging: optional to
mail_debug.log - Used for: order confirmations (pre-payment), payment confirmations (with QR PNG attachment)
- Implementation:
autoload/class.S.php::send_email()
Monitoring & Observability
Error Tracking: Not detected — no Sentry, Rollbar, or similar
Analytics:
- Google Analytics ecommerce data layer — purchase tracking
buildPurchaseDataLayer()inautoload/controls/class.Tickets.php- Generates
$purchase_data_layerpassed totemplates/tickets/order-confirm.php - Fires on order confirmation page
Logs:
- Optional mail debug log:
mail_debug.log(file-based, in project root) - No centralized application logging
CI/CD & Deployment
Hosting: Shared hosting (seohost.pl, Apache)
Deployment:
- FTP sync via VS Code ftp-kr extension
- Config:
.vscode/ftp-kr.json, cache:.vscode/ftp-kr.sync.cache.json - Manual deploy — upload changed files via FTP
CI Pipeline: None detected
Environment Configuration
Development:
- All config in
config.php(single file, committed to git) - No separate dev/staging/prod config files
- Test mode:
$settings['test_price_mode_secret']for pricing tests
Production:
- Przelewy24 sandbox toggle:
$settings['p24_sandbox'] = false - All secrets in
config.php— not managed via environment variables
Webhooks & Callbacks
Incoming:
- Przelewy24 —
/tickets/przelewy24_response/- Handled in
autoload/controls/class.Tickets.php::przelewy24_response() - Verification: MD5 CRC check against P24 parameters
- On success: marks order paid, generates invoice, sends confirmation email
- Handled in
Outgoing:
- fakturowo.pl — POST request on payment confirmation
- Przelewy24 verification — GET/POST to
trnVerifyendpoint to confirm transaction
Integration audit: 2026-04-26 Update when adding/removing external services