I have searched high and low but with no resolve. So we developed a custom "bacs" type gateway for our site. Here in Brazil you can pay via a bank billet. The billet usually has an expiration date for payment (around 7 days). So when a person goes through check-out the gateway sends the billet to our customer and he has to pay until the expiring date.

Since this is an offline payment, the order status goes to "on-hold". What I have been looking for is a way to specify that on-hold orders get canceled automatically after 8 days (since there's a 7 day limit).

If seen some code where people hook the pending order cancelation time-out but it seems like that wouldn't be the case. Any ideias?

Set up a cron that checks the date and updates the status. Set it up as a true cron instead of just the default WP implementation where it only triggers when people visit the site.
– TurtleTreadFeb 21 '18 at 20:16

1 Answer
1

So I got this working. I created a plugin and with a few hours running around several forums and a lot of help I got to something very interesting.

So call in orders, bacs, and all of the other types of offline orders are put on hold until payment is verified. The post_status is 'wc-on-hold'. What we needed was to exclude our rule to Checks, since we don't need to deal with expiration dates. This is the code we got to: