Nếu bạn muốn tự động hủy đơn hàng nếu chưa thanh toán sau 1 giờ trong WooCommerce, bài viết này sẽ giúp bạn.

Tự động hủy đơn hàng nếu chưa thanh toán sau 1 giờ trong WooCommerce

Các bài viết tham khảo:

Để tự động hủy đơn hàng nếu chưa thanh toán sau 1 giờ, các bạn thêm đoạn mã sau vào functions.php.

/**
 * Tự động hủy đơn hàng không thanh toán sau 1 giờ
 */
add_action( 'woocommerce_order_status_on-hold', 'custom_cancel_failed_pending_order_event' );
function custom_cancel_failed_pending_order_event( $order_id ) {
   if ( ! wp_next_scheduled( 'custom_cancel_failed_pending_order_after_one_hour', array( $order_id ) ) ) {
      wp_schedule_single_event( time() + 3600, 'custom_cancel_failed_pending_order_after_one_hour', array( $order_id ) );
   }
}
 
add_action( 'custom_cancel_failed_pending_order_after_one_hour', 'custom_cancel_order' );
function custom_cancel_order( $order_id ) {
   $order = wc_get_order( $order_id );
   wp_clear_scheduled_hook( 'custom_cancel_failed_pending_order_after_one_hour', array( $order_id ) );
   if ( $order->has_status( array( 'on-hold' ) ) && $order->get_payment_method() == 'bacs' ) { 
      $order->update_status( 'cancelled', 'Trạng thái đơn hàng đã được chuyển từ Tạm giữ sang Đã hủy do chưa thanh toán sau 1 giờ.' );
   }
}

Do đơn hàng chờ thanh toán sẽ tự động đặt sang trạng thái Tạm giữ (on-hold), nên sau 1 giờ sẽ kiểm tra lại trạng thái này. Bạn có thể thay đổi kiểm tra phương thức thanh toán bằng cách thay từ bacs sang phương thức khác, ví dụ như sepay, paypal, v.v…

Chúc các bạn thành công!

5/5 (1 bình chọn)