Dapp question using 2 smart contracts (theory question)

There are 2 smart contracts, one is the erc20 token itself. This contract will mint a certain amount to another smart contract which will be used to pay out people who do a transfer of some of these tokens they already have to a friend . When they make a transfer I want to pay them 3 times as many of the same token from this 2cnd contract. Like a vendor contract idea from openzeppelin, or crowdsale (sortof).
So the first part of the Moralis code is the let result = await (Moralis.Web3 as any).transfer(options);, which is working and users can transfer some token to their friends .
The next part will be the second contract gets called to pay them out certain amount of tokens . .
All the same erc20 token.
Can I do a transfer from the 2cnd contract to the users address ? Because when the supply gets minted to the second contract , it includes an approval for the second contract to spend the tokens .
Am I close ?

you should be able to do a transfer from that second contract to the user address, the possible problems that you could have could be if the contract pays the gas fees for those transfers and how do you validate how much the user should receive from that contract

The how much is already in the dapp react side, the contract just needs to multiply by three. Is there a way to see how much the gas prices will be / are when I test this on ropsten ? Will it even be relevant to mainnet ?

The gas price on eth mainnet can vary a lot compared to test net. You need to secure the contract from the contract code, you can not take a value from react and send it to the contract as anyone can change that value before sending it to the contract.

but thats what I am doing for the transfer . You have to know how many tokens to transfer, that comes from user input. For the user to user transfer anyways . For the contract to user transfer is different ? Im not sure I understand what you mean A wallet lets you input how many tokens you want to transfer ? Can you explain more about this?

a contract could to a transfer too, it doesn’t matter how many tokens it transfers, it would be same gas cost, but the price of the gas in mainnet can vary, and you have to check if the contract or the user will pay for that transfer (you have to test it on chain)