Een aantal WordPress gebruikers die met WooCommerce een webwinkel hebben opgezet en een iDEAL Basic aansluiting hebben zullen opgemerkt hebben dat betaalde bestellingen soms automatisch geannuleerd worden. Dit wordt veroorzaakt een automatisch systeem van WooCommerce die bestellingen met de status ‘in afwachting’ (pending) na een bepaalde tijd annuleert.
De WooCommerce ‘woocommerce_cancel_unpaid_orders()‘ functie regelt het annuleren van bestellingen met de status ‘in afwachting’. De werking van deze functie is te beïnvloeden met 2 instellingen, namelijk de ‘Voorraadbeheer’ (Manage Stock) en ‘Voorraad behouden (minuten)’ (Hold Stock (minutes)) instellingen. Op het moment dat voorraadbeheer is ingeschakeld en het aantal minuten van het vasthouden van de voorraad groter is dan 0 zullen bestellingen de status ‘in afwachting’ automatisch geannuleerd worden.
In principe zou een succesvolle iDEAL-betaling er direct voor moeten zorgen dat de WooCommerce bestellingstatus wordt bijgewerkt van ‘in afwachting’ (pending) naar ‘in verwerking’ (processing). In het geval van iDEAL Basic gebeurd dit echter niet als bezoekers vanuit iDEAL niet terug keren naar de webwinkel. WooCommerce gebruikers die werken met de iDEAL Basic variant adviseer ik daarom om de “Voorraad behouden (minuten)” instelling uit te schakelen.
Voorraad behouden (voor onbetaalde bestellingen) voor x minuten. Wanneer deze limiet is bereikt zal de in afwachting bestelling geannuleerd worden. Laat leeg om uit te schakelen.
Het is immers niet netjes als klanten na een succesvolle iDEAL-betaling een uur later de melding krijgen dat de bestelling is geannuleerd.
Één reactie op “WooCommerce bestellingen met iDEAL Basic automatisch geannuleerd”
Goedemiddag,
Het bericht is inmiddels wel een jaar oud, maar ik vroeg mij af of hier een oplossing voor is?
Ik heb zelf een stukje code wat er voor zorgt dat woocommerce alle orders automatisch op ‘Processing’ zet (of ‘Comepleted’, wat je zelf wil), maar dit werkt dan weer niet als de bestelling via Ideal betaald wordt.
Ik heb een landingspage ingesteld, dus http://www.mijnwebsite.nl/ verwijst naar http://www.mijnwebsite.nl/landingspage. De URL die je krijgt wanneer ideal je terugstuurd naar de website is /?payment=…… maar de website vertaald dit dan naar /landingspage/?payment=… maar dit is een heel anders CMS, dit werkt dus niet.
Nou heb ik verschillende dingen geprobeert met redirecten maar de makkelijkste oplossing lijkt me toch om de orders gewoon automatisch op ‘Proseccing’ te zetten. Is hier een oplossing voor?
Hieronder mijn code:
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) {
global $woocommerce;
if ( !$order_id )
return;
$order = new WC_Order( $order_id );
$order->update_status( 'completed' );
}