Mycelium has implemented Proof of Payment (BIP120 and BIP121), and I'm really glad they did. It's one of the most popular wallets out there. Plus, I implemented most of it. I'd like to show you how smooth the user experience can be when PoP is used poperly! If you would like to play with this, please visit my PoP test site. It supports both mainnet and testnet. I'll show a service I call PayMess. That's a site where you pay for a message space. You can then update that message space with whatever you want for free whenever you like using PoP. Here we go:!(images/04-paymess-update.png?classes=caption "Let's update it. Enter a new sentence and hit "Update".") !(images/05-pop-request.png?classes=caption "Now it's time to prove the previous payment. Note the "label=PayMess%2014" parameter. It's used by the wallet to find the correct payment to prove.")
Now take a look at the transaction to prove. I'm about to prove a transaction I paid at 14:36 today, and the label and amount seems reasonable. The PoP will be sent to www.rosenbaum.se, that's what I expect. Let's sign and send by hitting "Prove".
This was a rough walkthrough of the Proof of Payment process in Mycelium. I hope you get the idea and how it can be useful. If you've got something on your mind regarding BIP120, Proof of Payment, don't hesitate to contact me at email@example.com.