The expression “to have the goods on one” means: To catch one with the goods, or, that is to say, to have evidence or proof of one’s guilt; to catch one red-handed.
“Goods” in such usage refers to merchandise of any sort, whatever article a thief may purloin.
The American expression dates from about the turn of the present century.