It's basically implicit.
P1 can provide a transaction hash, block number, or even just the address they sent it from. P2, or anyone else, can then look for that transaction in the canonical blockchain--if it's not there, it didn't happen in the blockchain by definition.
"Canonical blockchain" usually refers to the longest (that is, the one with the most work proved) chain available. There's significant amount of philosophy of what exactly this means (especially when you add hardforks, soft forks, microforks...). For almost all purposes, waiting a sufficient number of blocks and then looking in the chain is definitive.