pragma solidity ^0.4.24; //Cria uma interface para voce comunicar com o token ERC20 interface ERC20Interface { function balanceOf(address who) external constant returns (uint256); function transfer(address to, uint256 value) external returns (bool); } contract MyPlataformUserTokenSilvio { //Declara a Interface ERC20Interface tokenInterface; //Aqui voce irá Setar o endereço do token ou seja, voce irá dizer pro codigo, //"Ei codigo, voce deve se comunicar com esse contrato aqui Ò" //passa o contrato do seu token function _setInterfaceContractAddress(address _address) external { tokenInterface = ERC20Interface(_address); } //Como voce disse que queria fazer um pagamento fiz um pequeno exemplo de como ira se comportar, //1- Pega o saldo do usuario //2- testa pra ver se o usuario de fato tem seu saldo //3- Faz a tranferencia, lembre que o saldo sai do endereço do usuario, ou seja, se ele não tiver tokens a transação não ira ser concluido, por causa do passo antior //4 - true processo foi concluido. function _payment (address _to, uint256 _value) external returns (bool){ uint256 balanceTokenUser; balanceTokenUser = tokenInterface.balanceOf(msg.sender); require(balanceTokenUser > _value,'saldo insuficiente'); return tokenInterface.transfer(_to,_value); } //Busca o saldo de tokens pela interface que criamos anteriormente function _getBalanceToken(address _addres) external view returns (uint256) { return tokenInterface.balanceOf(_addres); } //Retorna o endereço da interface, ou seja, o endereço do token que foi cadastrado anteriormente. function _getContract() external view returns(address) { return tokenInterface; } }
0.4.18