POS Receipt payment identification
You should use a new address for each transaction, likely generated from an BIP32 extended public key (your #2).


  I don't think this could be technically possible, as it is neccessary to derivate child key from master private key.


Extended public keys can be derived from a parent public key if the Chain Code (256 bits) for that parent extended public key is known. Merchants should give you an extended public key and chain code, and then you can generate a new address for them each time. Note that your system wouldn't have any risk of exposing private keys, as you would only be using BIP32 extended public keys.

For technical information on BIP32, visit https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki.