Ga naar inhoud

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
Facebook 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 de darkaonline/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 via ODOO_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:

  1. amazon:export-stock — voorraad exporteren via Listings Items API.
  2. amazon:retrieve-orders — orders ophalen met status Unshipped,PartiallyShipped.
  3. 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 op https://atraxion.qweon.com/webservice/; XML-response geparsed via GetAllTyresResponseParser. 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; commando facebook:feed:generate.
  • Cloudflare (src/Cloudflare/): cache-purge van CSS-bestanden na deployment (CloudflareService::clearCssFiles); itereert over APP_STATIC_PATH . '/csc' (let op: de map heet csc, niet css).
  • VirusTotal (src/VirusTotal/): scant geüploade orderdocumenten via knops/virustotal-client; commando virus-total:check-scans.