get_posts only getting most recent product

In order to get all product you need to specify the option post_per_page and make it -1. You also need a loop if you want fetch all the products data.

You can try this code :

$products = new WP_Query(array('post_type' => 'product', 'posts_per_page' => -1));

    while ($products->have_posts()) : $products->the_post();
        $id = get_the_ID();
        $product = new WC_Product($id);
        //your remaining code to get all product info
    endwhile;