Pagination in custom query not working [duplicate]

I believe the query var that you are retrieving should be paged and not page. See the codex and adjust your query to the following:

$products_query = new WP_Query(array(
    'post_type' => 'product',
    'posts_per_page' => 4,
    'paged' => (get_query_var('paged') ? get_query_var('paged') : 1),
));

However, if this is an archive for your product post type why not use archive-product.php and let WP handle the query and pagination automatically? See template hierarchy.