We run into an issue with the default woocommerce payment option (Bank transfer) that is a default option when u install woocommerce.
In very special circumstances (we havn’t been able to reproduce this ourselves, but this happend twice now in the last couple of months) a Woocommerce order that has the state “waiting for payment” get’s changed to the state wc-processing after choosing the payment option “Bank transfer” Before i start explaining what was done on the customer side, this should never be possible and should always goto the state “waiting for payment” as it does correctly 99% of the time.
As we have many automated actions that are based on the wc-processing state the unwanted behavior causes huge issues and possible loss of money.
With the above being said i will try to explain what the customer did to fool the woocommerce system.
Beside the “Bank transfer” payment option we also use the official Buckaroo payment plugin and for our Dutch customers we use the Ideal option.
With this customer we made a special arrangement so we agreed that he would put all the products that he needs into his shoppingbasket and pay for the order with bank transfer so we would be able to modify the order afterwards and send him the Pro-forma which he would then pay by bank.
What did the customer do:
On the checkout the customer used the Ideal option from Buckaroo instead of the Bank Transfer option. While being on the bank’s website he realised he made that mistake and used the back button in his browser to go back to the checkout page. While he did that the checkout page would not load at that time. I had quite a conversation with the technical staff of buckaroo and they say the there was no action at all in their system after sending them to the bank page, not even the cancelled payment what means that the customer could only have done it like this by deleting the tab or by pressing the back button of the browser.
the customer went back to the checkout page and we are still not sure which steps he actually took (he doesn’t remember it for 100%). And then he used the Bank Transfer payment option for the same order id and then the order got changed to wc-processing.
In the apache logs we see the customer make 2 requests that made this possible. For privacy reasons we changed the domainname to fqdn and the order ID to order-id and we masked the customers ip address.
xxx.xxx.xxx.xxx – – [31/Jul/2023:17:19:39 +0200] “GET /afrekenen/order-received/order-id/?key=wc_order_4kM93bL531BF3 HTTP/1.1” 200 20219 https://fqdn/afrekenen/ “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188”
xxx.xxx.xxx.xxx – – [31/Jul/2023:17:19:39 +0200] “POST /wp-admin/admin-ajax.php HTTP/1.1” 200 43 https://fqdn/afrekenen/order-received/order-id/?key=wc_order_4kM93bL531BF3 “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188”
The above requests where like 5 minutes after the first checkout using the buckaroo plugin.
The conclusion from Buckaroo is that they didn’t change the order state to wc-processing, we can’t find anything in the logs that state they did. So far as we can see it and with the customers input our conclusion is also that this was done by the default woocommerce payment option “Bank tranfer”.
The solution Buckaroo came up with was to start using their Bank transfer option since then we will receive pushes from their api instead of woocommerce handling this.
As i do believe that that will solve the problem i also believe that the bank transfer option should never change the order state to wc-processing as it did in this case.
We tried to reproduce the problem but we where unable to reproduce the loading state that did not complete as the customer experienced so we where never able to reproduce this for 100%. As a fact we do have that order changed to wc-processing where it should have went to the state waiting for payment.
Hopefully this will help the people from woocommerce solve this issue since it can have quite an impact for those that will experience this.
When a student pays by bank transfer, even if the payment has not been received or the receipt charged for it, woocommerce is also automatically enabling the order and they can access. The problem is that this happens before they pay. I don’t understand what is the problem since we didn’t change anything in the settings, it started doing it only with the last update.
How can we solve this problem?
Thanks!
Best regards!
]]>