I would like this in only one way:
Trading skins of equal value:
(How it is CURRENTLY in the shop) Will work 100% of the time after a few days of a delay before the transaction finishes. This way one of the two involved can cancel it if they regret the decision.
Example: You are trading Pulsefire Ezreal for Spiritguard Udyr. Because they are both equal price, then the deal goes smoothly after a waiting period.
Trading skins of different value:
Player wanting to trade for the higher value skin must have the difference in RP first, this RP will go to the player trading for the lower cost skin.
Example: You are trading Pulsefire Ezreal for Ghostly Gangplank. The player with Ghostly Gangplank must ALSO have 2300 RP to pay the difference to you.
This way, there are never any sour trades. Ever.
You're given time to cancel your decision. You're getting an equal trade, sometimes directly in RP you can spend on more things.
Notes: Trades could never be just RP to one skin. Two skins must ALWAYS be involved or else it's just black market trading under Riot's nose.
Skins that are being currently traded that go on sale in the store for a lower price will stay the same price the barter was first made as-- It would be up to the players involved to cancel and restart the trade to adjust.