Delaying BTC payment until customer is satisfied with new Product
This is what escrow was designed for... customer gives BTC to escrow, merchant sends product to customer, escrow waits until customer is "satisfied" before sending funds to merchant.
If customer attempts to keep without paying, escrow can release the funds to merchant
If merchant doesn't send the item, or customer is not satisfied, escrow can return the funds to customer (after item is returned etc)
Escrow is essentially the mediator in any disputes and their decision will determine who ends up with the funds.
Can be achieved using a 2-of-3 multisig with customer, escrow and merchant... and using this method both the customer and merchant have "equal" risk (assuming the escrow is legit and not colluding with either party)
The problem is finding a "trusted and independent" escrow.
So is the best way to implement this via Child Pays For Parent chain of 20 transactions?
No, if, for whatever reason, you need to invalidate one of the transactions (ie. one person doesn't do their job as promised)... any transactions in the chain after it will also be invalidated as their inputs won't exist any more.