Integraties¶
De shop koppelt met een groot aantal externe systemen. Alle moderne client-klassen staan in src/ (Composer PSR-0). Oudere of per-subsysteem-gedefinieerde code staat in _core/model/classes/atx/. Configuratie (URL's, sleutels, IDs) wordt via environment_constants.php ingeladen als PHP-constanten.
Overzicht van alle integraties¶
| Systeem | Client-locatie | Protocol | Rol |
|---|---|---|---|
| Pay.nl | _core/model/classes/atx/paynl/ |
REST (via paynl/sdk) |
Betalingsverwerking (transacties starten, statusmelding via notify-endpoint) |
| Odoo / Middleware | src/Odoo/ |
XML-RPC (RipcordFacade) + JSON-RPC (JsonRpcClient) + Middleware-REST (HttpMiddlewareClient) |
ERP: orders, partners, voorraad, facturen, prijzen; Middleware is een tussenlaag op de Odoo-API |
| Transsmart | src/Transsmart/ |
Via Odoo-middleware (DynAppsAPI) |
Verzendtariefberekening (rate-calculator), TranssmartShippingRateCalculator delegeert volledig aan de Odoo-middleware-client; er is geen rechtstreekse HTTP-call naar Transsmart |
| DriveRight | src/Atraxion/DriveRight/ |
SOAP 1.2 (SoapClient) |
Voertuigdata: fabrikanten, modellen, voertuigen, wielmontage-info (chassis-ID → geschikte wielen); VRM-lookup heeft aparte credentials |
| Tyre24 | vendor/atraxion/tyre24-client/ + src/Tyre24/ |
SOAP 1.1 (eigen SoapClient) én REST (eigen RestClient) |
Extern verkoopplatform: bandlijstingen publiceren, orders ophalen, status terugmelden, factuur indienen |
| Autodoc | src/Autodoc/ |
REST (inkomend webhook/API) | Extern verkoopplatform: Autodoc stuurt bestellingen naar Atraxion via een REST-endpoint; authenticatie via AuthorizationMiddleware |
| Amazon | src/Amazon/Fulfillment/ |
Amazon Selling Partner API (REST, jlevers/selling-partner-api) |
Extern verkoopplatform: voorraad exporteren, orders ophalen, tracking uploaden |
| Rhinoman | src/Rhinoman/ |
REST (PSR-18, X-API-Key-header) |
Extern platform: producten ophalen, orders plaatsen; stockbestand genereren als CSV |
| Qweon | src/Qweon/ |
REST/XML (https://atraxion.qweon.com/webservice/) |
Bandencatalogus-platform: banden halen (pull) en publiceren (push); koppeling op EAN-niveau |
| Maxityre | src/Maxityre/ |
REST + XML-body (application/xml POST) |
Prijsvergelijkingstool: stock-beschikbaarheid en -prijs opvragen per EAN→Maxityre-ID-mapping |
| Evox | src/Evox/ |
REST (PSR-18) | Voertuigafbeeldingen: voertuigen + kleuren downloaden via de Evox-API |
| Arteel | src/Arteel/ |
REST + OAuth2 (league/oauth2-client) |
Loyaliteitsprogramma: gebruikers aanmaken/beheren, punten toekennen en uitkeren via Arteel-portaal |
src/Facebook/ |
Bestandsgeneratie (CSV/TSV) | Productfeed genereren voor Facebook-advertenties; geen directe API-call vanuit de shop | |
| Matomo | src/Matomo/ |
HTTP-tracking (matomo/matomo-php-tracker) |
Webanalyse: paginaweergaven, productvergelijkingen, winkelwagen- en ordertracking via MatomoFacade |
| Cloudflare | src/Cloudflare/ |
REST (cloudflare/sdk) |
CDN-cache purge: CSS-bestanden verwijderen bij deployment |
| VirusTotal | src/VirusTotal/ |
REST (knops/virustotal-client) |
Virusscan van geüploade orderdocumenten; resultaat wordt teruggekoppeld aan de order |
| Sentry | ingebouwd in bootstrap | SDK (sentry/sentry) |
Fout- en performancemonitoring (zie Observability) |
Pay.nl¶
Pay.nl verzorgt alle online betalingen. De PaynlService (_core/model/classes/atx/paynl/PaynlService.php:22) implementeert de HandlePayment-interface en configureert de SDK via de setting-tabel (paynl_id, paynl_token). Op non-productie-omgevingen wordt automatisch testmodus ingeschakeld (!is_prod()). De CountryPaymentCost-entity (_core/model/classes/atx/orders/CountryPaymentCost.php:30) definieert betaalmethoden per land; TYPE_PAYNL = 0 staat voor Pay.nl-methoden.
Stroom: checkout → PaynlService::getPaymentUriForOrder() (regel 136, roept intern Transaction::start() aan) → redirect naar Pay.nl → klant betaalt → Pay.nl POST naar het notify-endpoint → HandlePayment werkt orderstatus bij.
Odoo / Middleware¶
Odoo is het ERP. De shop communiceert via twee kanalen:
- XML-RPC (
RipcordFacade,src/Odoo/RipcordFacade.php:11): de klassieke Odoo XML-RPC API via dedarkaonline/ripcord-library. Methoden:query,find,create,update,delete,messagePost. - JSON-RPC (
JsonRpcClient,src/Odoo/JsonRpcClient.php:14): directe JSON-RPC calls naar Odoo (authenticatie + sessiecookie). - Middleware-REST (
HttpMiddlewareClient,src/Odoo/HttpMiddlewareClient.php): een REST-tussenlaag (aparte URL + API-key, geconfigureerd viaODOO_MIDDLEWARE_*-constanten) voor synchronisatie van orders, partners, producten en voorraad.
Symfony Console-commando's (prefix middleware:) drijven de meeste synchronisatiebatches. Zie Crons & queue voor de volledige commandolijst.
Transsmart (verzending)¶
TranssmartShippingRateCalculator (src/Transsmart/Service/TranssmartShippingRateCalculator.php:17) berekent de verzendkosten door een conceptorder te bouwen en die via de Odoo-middleware te evalueren. De prijs die Odoo/Transsmart teruggeeft wordt vertrouwd; er is geen aparte harde land-gate — als Odoo €0 teruggeeft of geen warning_message geeft, accepteert de flow het.
DriveRight (voertuigdata)¶
Client (src/Atraxion/DriveRight/Client.php:14) is een __call-gebaseerde SOAP-wrapper. Aanroepbare methoden: GetManufacturers, GetModels, GetVehicles, GetVehicleDataFromKType, GetUpstepWheelsByChassisID, GetGlobalVRM. De VRM-lookup (kentekenzoekopdracht) gebruikt afzonderlijke vrm-username/vrm-password uit de setting-tabel (src/Atraxion/DriveRight/Client.php:39).
Synchronisatiecommando's: driveright:manufacturers:synchronise, driveright:models:synchronise, driveright:vehicles:synchronise.
Tyre24¶
Tyre24 is een extern verkoopplatform. De ClientFacade (src/Tyre24/ClientFacade.php:15) wraps het vendor-pakket atraxion/tyre24-client, dat zowel een SOAP-client (SoapClient, WSDL https://api-tyre24.alzura.com/de/de/webservice/Tyre24SoapWebserviceV10.wsdl) als een REST-client biedt. Authenticatie per platform via Platform::getUsername()/getPassword().
Commando's: t24:queue-orders, t24:listings:tyres, t24:get-order-statuses, t24:submit-invoice, t24:get-shipping-companies.
Autodoc¶
Autodoc pusht bestellingen naar de shop via een inkomend REST-API-endpoint. AuthorizationMiddleware (src/Autodoc/Middleware/AuthorizationMiddleware.php:13) valideert de Authorization-header via HTTP Basic auth: Base64 username:password wordt gedecodeerd en geverifieerd aan de hand van platform/leverancier-records. OrderController (src/Autodoc/Controller/Api/OrderController.php:30) verwerkt de bestelling en koppelt een klant per land via een hardgecodeerde countryToInvoiceCustomer-map.
Amazon¶
Amazon-integratie verloopt via de Amazon Selling Partner API (jlevers/selling-partner-api). Drie flows:
amazon:export-stock— voorraad exporteren via Listings Items API.amazon:retrieve-orders— orders ophalen met statusUnshipped,PartiallyShipped.amazon:upload-trackings— trackingcodes terugmelden.
Configuratie via constanten AMAZON_* in environment_constants.php (marketplace, seller-ID, klant-ID, channel-ID, carrier-map).
Arteel (loyaliteit)¶
ArteelClient (src/Arteel/Service/ArteelClient.php:21) authenticert via OAuth2 (clientcredentials, league/oauth2-client) en slaat gebruikers op of haalt puntensaldi op. Configuratie via ARTEEL_API_*-constanten. Zie ook Loyaliteit.
Matomo (webanalyse)¶
MatomoFacade (src/Matomo/MatomoFacade.php:13) wikkelt de MatomoTracker en biedt methoden voor: productvergelijking (trackProductView), winkelwagenupdates (trackCart), orderconversie (trackOrder), login (trackLogin) en nieuw-registratie. Custom dimensie 1 = "Dagen in mand" (tijdsverschil tussen oudste cartitem en besteldatum, in buckets). Configuratie via MATOMO_SITE_ID, MATOMO_SITE_URL, MATOMO_TOKEN_AUTH.
Overige integraties¶
- Evox (
src/Evox/): REST API (evox:download-vehicles) voor voertuigafbeeldingen; slaat voertuigen + kleuren op in de database. - Qweon (
src/Qweon/): bandencatalogus-platform ophttps://atraxion.qweon.com/webservice/; XML-response geparsed viaGetAllTyresResponseParser. Commando's:qweon:pull-tyres,qweon:push-tyres,qweon:link-tyres. - Rhinoman (
src/Rhinoman/): REST-platform (X-API-Key); producten halen, orders aanmaken, stockbestand als CSV genereren (app:rhinoman:generate:stock-file). - Maxityre (
src/Maxityre/): realtime stockprijs opvragen via REST + XML-body; mapping EAN→Maxityre-ID via CSV-import (maxityre:import-mapping,src/Maxityre/Command/MaxityreImportMappingCommand.php:19). - Facebook (
src/Facebook/): productfeed-generator (CSV) voor Facebook-advertenties; commandofacebook:feed:generate. - Cloudflare (
src/Cloudflare/): cache-purge van CSS-bestanden na deployment (CloudflareService::clearCssFiles); itereert overAPP_STATIC_PATH . '/csc'(let op: de map heetcsc, nietcss). - VirusTotal (
src/VirusTotal/): scant geüploade orderdocumenten viaknops/virustotal-client; commandovirus-total:check-scans.