Vandaag heb ik een probleem onderzocht waarbij de betalingsstatus updates van de OmniKassa niet binnen kwamen op de WordPress omgeving. Hierdoor werd de status van de betaling niet bijgewerkt en in het geval van WooCommerce de status van de bestelling ook niet. Al snel bleek dat dit probleem beperkt was tot de specifieke WordPress installatie van een Pronamic iDEAL gebruiker. Na wat debug werk bleek een SSL-forceer script van Yoast voor een conflict te zorgen.
Binnen de Pronamic iDEAL plugin wordt ingehaakt op de WordPress ’template_redirect’ actie om te luisteren naar OmniKassa betalingsstatus requests:
De luisterfunctie van de Pronamic iDEAL plugin haakt in op de ’template_redirect’ actie met de standaard prioriteit van 10. Yoast zijn SSL-forceer functie wordt in zijn voorbeeld toegevoegd met prioriteit van 1. Hierdoor zal Yoast zijn functie altijd voor de Pronamic iDEAL plugin uitgevoerd worden. Doordat Yoast in zijn functie een HTTP-redirect header verstuurd en vervolgens het script stopt met een exit(); aanroep zal de Pronamic iDEAL luisterfunctie nooit uitgevoerd worden.
Door Yoast zijn doorverwijzing naar een https:// URL zal de OmniKassa POST-data niet meegestuurd worden. Hierdoor zal de betalingsstatus update van de OmniKassa dus nooit de Pronamic iDEAL plugin bereiken.
Om dit conflict op te lossen hebben we de Pronamic iDEAL pluign aangepast zodat deze niet langer de ’template_redirect’ actie gebruikt om te luisteren naar betalingsstatus updates. In plaats daarvan gebruiken we nu de ‘wp_loaded’ actie.
- template_redirect » https://github.com/WordPress/WordPress/blob/3.8/wp-includes/template-loader.php#L12
- wp_loaded » https://github.com/WordPress/WordPress/blob/3.8/wp-settings.php#L358
De ‘wp_loaded’ actie wordt eerder uitgevoerd dan de ’template_redirect’ actie, hierdoor krijgt de Pronamic iDEAL plugin voorrang op de SSL-forceer functie van Yoast. Ook is de ‘wp_loaded’ functie waarschijnlijk geschikter voor het luisteren naar betalingsstatus updates. De ’template_redirect’ functie is waarschijnlijk ook meer bedoeld voor thema/templates gerelateerde doorverwijzingen. In de volgende commit is de aanpassing terug te zien:
https://github.com/pronamic/wp-pronamic-ideal/commit/0e6633bb1fe024e3566fcc91955f2dcc9fe17809
2 reacties op “Pronamic iDEAL – OmniKassa conflict met Yoast SSL tip”
Remco!
Bedankt voor jullie service, petje af!
Gr. Paul
[…] with OmniKassa payment status requests and the Yoast SSL-force script. In the Dutch blog “Pronamic iDEAL – OmniKassa conflict met Yoast SSL tip” you can find more details on this […]