wordpress multiple meta value query is not working

You use the “p”-argument, which looks for the wordpress Post-ID. I guess you want to search the products, that have $product_id in the meta, not for the exact post with the ID $product_id. Just remove the “p” argument from your wp_query arguments.