Esempio n. 1
0
        public IActionResult Post(UsersRequestUSDT request)
        {
            _logger.LogInformation(JsonConvert.SerializeObject(request));
            try
            {
                request.EthereumAddress = request.EthereumAddress.ConvertToEthereumChecksumAddress();
            }
            catch (Exception)
            {
                return(BadRequest("Address not valid"));
            }
            if (request.ExpectedAmount < _config.GetValue <decimal>("minAmount"))
            {
                return(BadRequest("Amount to low"));
            }
            var index = request.Phone.IndexOf('(');

            if (index < 0)
            {
                return(BadRequest("Phone not valid"));
            }
            var withoutCode = request.Phone.Substring(index);
            var userId      = withoutCode.Replace("(", "")
                              .Replace(")", "")
                              .Replace(" ", "")
                              .Replace("-", "");

            request.UserId = userId;
            _context.RequestUsdts.Add(request);
            _context.SaveChanges();
            return(Created("", request.Id));
        }
Esempio n. 2
0
        private async void PayForConsolidation(UsersRequestUSDT request, OkexFundingDepositDetails details)
        {
            var(txId, error) = await TokenService.Pay(_config, request);

            if (txId != null)
            {
                _logger.LogInformation("For user request: " + JsonConvert.SerializeObject(request) + "\nTxId: " + txId);
                request.Settled        = true;
                request.TxId           = details.TxId;
                request.EthereumStatus = txId;
                _context.RequestUsdts.Update(request);
                await _context.SaveChangesAsync();
            }
            else
            {
                _logger.LogError("For user request: " + JsonConvert.SerializeObject(request) + "\nError:\n" + error);
                request.EthereumStatus = error;
                _context.RequestUsdts.Update(request);
                await _context.SaveChangesAsync();
            }
        }
Esempio n. 3
0
        public static async Task <(string txId, string error)> Pay(IConfiguration config, UsersRequestUSDT request)
        {
            var contractDecimals = Convert.ToDecimal(Math.Pow(10, config.GetValue <int>("decimals")));
            var rpcClient        = new RpcClient(new Uri(config["rpc_client"]));
            var wallet           = new Wallet(config["mnemo"], "");
            var account          = wallet.GetAccount(0);
            var web3             = new Web3(account, rpcClient);
            var noBtcService     = new NOBTCService(web3, config["erc20_address"]);
            var fullMintAmount   = new BigInteger(request.ExpectedAmount * contractDecimals);
            var commission       = new BigInteger(request.ExpectedAmount * 0.01m * contractDecimals);
            var userAmount       = fullMintAmount - commission;

            try
            {
                var mintFunction = new MintFunction()
                {
                    Account    = request.EthereumAddress,
                    Amount     = userAmount,
                    Commission = commission
                };
                var response = await noBtcService.MintRequestAsync(mintFunction);

                return(response, null);
            }
            catch (Exception e)
            {
                return(null, e.Message);
            }
        }