Everything you say sounds right, and especially if it is default WC behaviour.
But there are cases in which this causes problems.
For example:
- No customer would know (or expected to know) that an order has been created for him, if he decided to cancel Paypal and go back. Of course he isn’t ‘necessarily cancelling the order’ as you mention, but he received NO feedback from WC (or your plugin) that the order has been PLACED. In other words, the ‘logical flow’ -as you name it- would suggest to anyone that he didn’t do anything ‘permanent’ (eg. something like ‘creating’ an order) when he cancelled Paypal payment.
- This is getting even worse if we’re talking about a guest checkout. Say I am not a registered customer (and perhaps I am not familiar with computers or e-shops – which is quite usual). Or I just changed my mind. Or I do not have funds inside my Paypal. Whatever the reason, I do not complete the order. I receive no message at all, and I try to create a new order 5 minutes later. What happens? I get a message that the item is out of stock.
The above is for discussion only ??
And btw, the default Paypal which comes with Woocommerce behaves as expected (order is cancelled not pending)
Now and for the actual issue, at least in my case using Paypal buttons causes issues with field validation. In particular,
I have custom checkout fields which are required but conditionally (when their section parent field has a specific value). Your plugin’s validation still produces an error for those fields even when they are not to be filled.