I had an idea for a payment scheme that uses key derivation, but instead of the payee deriving the addresses, the payer would do it.

It would work like that:
  1. The payee publishes his master public key
  2. The payer generates a random "receipt number" (say, 25 random bytes)
  3. The payer derives an address from the master public key using the receipt number and pays to it
  4. The payer sends the receipt to the payee
  5. The payee derives a private key with that receipt and adds it to his wallet

Advantages:
Disadvantages:
What do you think?