Hello, i would like to work in your project, but i need to make some observations to your requirements:
1.- On ethereun gas fees are always paid by the one who makes the transaction, those fees can't by paid from a contract, one workarround could be to make the contract send the expent amount of gas to the caller.
2.- You should NEVER store some kind of key within a contract because, even it's set to private, contract code can be read with anyone, ans stored variables too, also when you send a transaction the infor is broadcasted so anyone can catch the key.
made that observations just for security measures.
I'm a solidity and dapps developer, if you share with me more information i can give you an idea of what can be done.