Het lukt niet de Magento webwinkel te koppelen. Wat kan de oorzaak zijn?

Ok - laten we eerlijk zijn 'Magento is een uitermate complex systeem' omdat er zoveel maatwerk- en extensie mogelijkheden zijn. Bovendien hebben Magento webwinkels caching nodig. Die en andere mogelijkheden zitten soms de toegang tot de rest-api in de weg. Daarnaast wordt Magento vaak extern gehost en kan de beveiliging van de hosting partij de connectiviteit beperken. Het is dus zaak dat een ervaren Magento expert betrokken is bij het leggen van de koppeling naar de Magento zijde. Wij zijn zelf geen Magento experts en kunnen hierbij dus niet helpen. We nodigen Magento experts uit hun ervaringen te delen en verwijzen klanten regelmatig door naar Magento experts zodat ze zo goed mogelijk geholpen worden. In onderstaande FAQ staan een aantal basis tips en expert bevindingen van dergelijke Magento experts.

Magento 1.9 webwinkels zijn eenvoudiger dan Magento 2.x webwinkels. In de handleiding van de koppeling staan een aantal tips voor Magento 1.9 webwinkels. We beginnen hieronder met een aantal mogelijke oorzaken voor Magento 2.x webwinkels en daarna voor Magento 1.9 webwinkels.

Magento 2.x: Oorzaken problemen connectie

1. Themes en extensies: Soms veroorzaakt een theme of extensie dat de OAuth tokens goed worden meegegeven. De tokens worden soms uit de requests gehaald en dan zal de verbinding nooit geldig zijn. Zeker bij het updaten van de webwinkel - een nieuw theme of een nieuwe plugin waarbij de connectie opeens verbroken wordt is een indicatie voor de oorzaak van het probleem. Bij een update / upgrade is het noodzakelijk om direct de koppeling te controleren.

2. Firewalls: Controleer altijd bij een firewall wijziging of de koppeling nog connectie kan maken met de Magento webwinkel. Bij een probleem met de firewall geeft de webwinkel vaak geen response terug en daardoor is troubleshooten erg lastig. Zo had bijvoorbeeld een Magento developer voor een beurs tijdelijk het ipadres van de koppeling uit de firewall had gehaald.

3. Caching: Magento webwinkels hebben caching nodig om te kunnen draaien. De koppeling is getest met de standaard caching in de Magento webwinkel (developer mode vs production mode). Dat werkt. Wij hebben problemen gehoord met de Varnish cache. Van Magento solution partners horen wij dat bij het gebruik van de Varnish cash OAuth aanvragen niet via de cache moeten lopen maar rechtstreeks naar de webwinkel moeten gaan. Als je de koppeling niet kunt leggen met de Varnish cache aan en wel met de Varnish cache uit dan zit het probleem dus in de configuratie van de Varnish cache.

4. Redirects: Soms veroorzaken redirects problemen in de webwinkel. Deze redirects kunnen ook in de webserver zitten en zijn bijna niet te vinden. In het bijzonder hebben we gehoord van problemen als de backend van Magento niet in de https://webwinkelurl/admin directory staan maar in een https://webwinkelurl/subdir/admin director.

5. Certificaten: Zorg dat SSL certificaten goed zijn ingericht. Zorg ook de de SSL certifcaten-chain goed is ingericht. Gebruik evt https://ssllabs.com om de certificaten te controleren.

6. Gebruikersnamen en rechten: Het kan zijn dat de gebruikersnaam die de OAuth koppeling initieel gelegd heeft verwijderd wordt. In dat geval wordt ook de OAuth connectie verbroken.

7. We horen soms ook van Magento developers dat ze de koppeling werkend hebben gekregen maar niet waarom. Dus bovenstaande is zeker geen uitputtende lijst. Wat wij kunnen is de log informatie die uit de webwinkel komt met jullie delen. Mogelijk halen jullie er nog andere oorzaken uit. Zo ja, dan stellen we het op prijs als jullie de bevindingen naar ons toesturen zodat we deze lijst kunnen aanvullen.

Magento 1.9: Oorzaken problemen connectie

Rechten API user: De User / Gebruiker van de API moet administrator / beheerder zijn. Ga naar Webservices -> REST OAuth Geautoriseerde Tokens. Hier zie je de applicatie-naam, maar ook het gebruikersid staan. Klik nu op Systeem -> Rechten -> Gebruikers en zorg dat de gebruiker met dit gebruikersid Administrator rechten heeft bij REST Role.

Beschikbaarheid REST API in webwinkel: We komen heel vaak tegen dat de REST API in de Magento webwinkel niet beschikbaar is. Requests naar de REST API worden doorgeleid naar een 404 - Page not found pagina. Je kunt dit testen door deze url in de browser in te voeren: https://www.uwwebwinkel.nl/api/rest/products. Geeft deze url een 403 - zoals in het volgende plaatje - dan is de standaard REST API in je webwinkel bereikbaar. Zie je een 404 dan maken redirects de REST API onbereikbaar.

Een mogelijke oorzaak kan in het .htaccess zitten. Standaard staat deze regel er in: RewriteRule ^api/rest api.php?type=rest [QSA,L]. Ontbreekt deze regel of het hele .htaccess bestand dan kan de koppeling niet worde opgezet omdat de webwinkel REST API requests redirect naar een 404-Page not Found.

Tot slot kan er een probleem zijn met de magento-headers. Dit is een beveiligingsprobleem dat we vaak zien als er gebruik gemaakt wordt van php-fpm5 / fast-cgi. Dit probleem kan zich voordoen bij webwinkels gehost bij Byte. Zij hebben een goede uitleg hoe je dit probleem kunt oplossen.

Tip van Magento-specialist Richard Blezer bij het koppelen van de Magento webwinkel:

In de hosting omgeving <zelfgekozennaam>.hypernode.io/data/web/nginx dient een bestand server.api aangemaakt te moeten worden (deze locatie is klant toegankelijk). In de deze file moet het volgende komen te staan:

location /api {
# onderstaande regels defineren de toegelaten IP adressen. Alleen gebruiken indien de IP adressen van webwinkelfacturen.nl bekend zijn. Anders middels # uitcommenteren. Deze zijn dus nu niet werkzaam.
# allow XXX.XXX.XXX.XXX; // toegelaten IP. Opvragen bij mijnwebwinkelfacturen
# allow XXX.XXX.XXX.XXX; // evt. tweede toegelaten IP. Opvragen bij mijnwebwinkelfacturen
# deny all; // blokkeer alle andere adressen
rewrite ^/api/rest /api.php?type=rest last; 
rewrite ^/api/v2_soap /api.php?type=v2_soap last; 
rewrite ^/api/soap /api.php?type=soap last;
location ~ \.php$ { 
echo_exec @phpfpm; 

}

Hierna krijgt de oproep https://<webadres>/api/rest/products een xml met een 403

{
"messages":{
" error": [
{
" code": 403,
"message": "Access denied"
}
]
}
}

Deze oplossing is universeel bruikbaar voor alle byte magento sites, aangezien deze uitsluitend hypernode voor magento hosting gebruiken.

Labels: Support