Esempio n. 1
0
        public async Task <AccountBalanceResponse> GetAccountBalance(IBtcMarketsApi api = null)
        {
            var responseObj = new AccountBalanceResponse
            {
                Success = true
            };

            try
            {
                if (api == null)
                {
                    api = Api;
                }
                HttpResponseMessage response = await api.GetAccountBalanceRaw();

                if (response.IsSuccessStatusCode)
                {
                    var content = await response.Content.ReadAsStringAsync();

                    try
                    {
                        var balances = JsonConvert.DeserializeObject <List <AccountBalance> >(content);
                        responseObj.Balances = balances;
                    }
                    catch (Exception)
                    {
                        var baseResponse = JsonConvert.DeserializeObject <BaseResponse>(content);
                        if (baseResponse != null)
                        {
                            responseObj.Success      = baseResponse.Success;
                            responseObj.ErrorCode    = baseResponse.ErrorCode;
                            responseObj.ErrorMessage = baseResponse.ErrorMessage;
                        }
                    }
                }
                else
                {
                    responseObj.Success      = false;
                    responseObj.ErrorCode    = 101;
                    responseObj.ErrorMessage = "Remote api returned invalid status code while retrieving balances";
                }
            }
            catch (Exception ex)
            {
                responseObj.Success      = false;
                responseObj.ErrorCode    = 100;
                responseObj.ErrorMessage = ex.ToString();
            }
            return(responseObj);
        }
Esempio n. 2
0
        public AccountBalanceDataPackage Query(int beginYear, int beginPeriod, int endYear, int endPeriod)
        {
            var request = new AccountBalanceRequest
            {
                BeginPeriod = beginPeriod,
                BeginYear   = beginYear,
                EndPeriod   = endPeriod,
                EndYear     = endYear
            };
            AccountBalanceResponse    rsp     = Execute(request);
            AccountBalanceDataPackage package = new AccountBalanceDataPackage();

            package.ListBeginBalnace  = rsp.ListBeginBalnace;
            package.ListCurrentOccurs = rsp.ListCurrentOccurs;
            return(package);
        }
        /// <summary>
        ///     获取提现账户余额
        /// </summary>
        /// <param name="userContext"></param>
        /// <returns></returns>
        public ResponseModel GetWithdrawingBalance(UserContext userContext)
        {
            var result                 = _accountbookProxyService.GetWithdrawingBalance(userContext);
            var responseModel          = new ResponseModel();
            var accountBalanceResponse = new AccountBalanceResponse();

            if (result.Code == Convert.ToInt32(ResponseErrorcode.C200))
            {
                if (result.Data != null)
                {
                    var model = result.Data;
                    accountBalanceResponse.TotalBalance     = model.Money + model.TotalFrozenPayMoney;
                    accountBalanceResponse.AvailableBalance = model.Money;
                    accountBalanceResponse.TotalAmount      = model.BillingBusinessList.Sum(b => b.TotalMoney);
                    if (model.BillingBusinessList != null &&
                        model.BillingBusinessList.Any(b => b.Id == (int)BillingBusinessTypeEnum.WechatGathering))
                    {
                        accountBalanceResponse.WechatGatheringAmount =
                            model.BillingBusinessList.First(b => b.Id == (int)BillingBusinessTypeEnum.WechatGathering)
                            .TotalMoney;
                        accountBalanceResponse.WechatTotalBillingJournalsNum =
                            model.BillingBusinessList.First(b => b.Id == (int)BillingBusinessTypeEnum.WechatGathering)
                            .TotalBillingJournalsNum;
                    }

                    if (model.BillingBusinessList != null &&
                        model.BillingBusinessList.Any(b => b.Id == (int)BillingBusinessTypeEnum.MobileShop))
                    {
                        accountBalanceResponse.MobileShopGatheringAmount =
                            model.BillingBusinessList.First(b => b.Id == (int)BillingBusinessTypeEnum.MobileShop)
                            .TotalMoney;

                        accountBalanceResponse.MobileShopTotalBillingJournalsNum =
                            model.BillingBusinessList.First(b => b.Id == (int)BillingBusinessTypeEnum.MobileShop)
                            .TotalBillingJournalsNum;
                    }
                }
            }

            responseModel.Data    = accountBalanceResponse;
            responseModel.Code    = result.Code;
            responseModel.Message = result.Message;
            return(responseModel);
        }
Esempio n. 4
0
        public async Task <IActionResult> Balance(string id)
        {
            _logger.LogInformation($"{nameof(AccountController)}.{nameof(Balance)} - {id}");

            if (string.IsNullOrWhiteSpace(id))
            {
                return(BadRequest($"Account id cannot be null"));
            }


            BalanceResult balanceResult = await _accountService.GetBalance(new AccountInfo(id, Amount.None));

            if (balanceResult.Status == AccountStatus.Error)
            {
                return(BadRequest($"{balanceResult.Message}"));
            }

            AccountBalanceResponse response = new AccountBalanceResponse(balanceResult.AccountId,
                                                                         balanceResult.Amount.Value, balanceResult.Name);

            return(Ok(response));
        }
        static async Task <AccountBalanceResponse> AccountBalanceAsync()
        {
            AccountBalanceRequest _accountBalanceRequest = new AccountBalanceRequest()
                                                           .AsSecurityCredential("Safaricom474!")
                                                           .AsEntity("testapi474", "600474")
                                                           .AsCommandID("AccountBalance")
                                                           .AsEndpoints("https://safaricom.api", "https://safaricom.api")
                                                           .AsComments("Test")
                                                           .AsIdentifierType(4);

            AccountBalanceResponse _response = await _safaricomApiClient.PostPaymentRequestAsync(_accountBalanceRequest);

            if (_response.ErrorCode == null)
            {
                Console.WriteLine("===========================================");
                Console.WriteLine("=====Account Balance Success Response======");
                Console.WriteLine("===========================================");

                Console.WriteLine(Environment.NewLine);
                Console.WriteLine(_response.OriginatorConversationID + Environment.NewLine + _response.ConversationID + Environment.NewLine + _response.ResponseDescription);
                Console.WriteLine(Environment.NewLine);
            }

            else
            {
                Console.WriteLine("===========================================");
                Console.WriteLine("======Account Balance Error Response=======");
                Console.WriteLine("===========================================");

                Console.WriteLine(Environment.NewLine);
                Console.WriteLine(_response.ErrorCode + Environment.NewLine + _response.ErrorMessage + Environment.NewLine + _response.ErrorRequestId);
                Console.WriteLine(Environment.NewLine);
            }

            return(_response);
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            TradeioApi api    = new TradeioApi("aaaaaaaa-bbbb-cccc-dddd-eeeeeeee", "aaaaaaaa-bbbb-cccc-dddd-eeeeeeee");
            string     symbol = "btc_usdt";

            Console.WriteLine("******PAIRS******");
            PairsResponse pairsResponse = api.GetPairs().Result;

            Console.WriteLine(string.Join(',', pairsResponse.Pairs));

            Console.WriteLine("******CANDLES******");
            CandlesResponse candles = api.GetCandles("btc_usdt", CandleInterval.OneDay, DateTime.UtcNow.AddMonths(-1), DateTime.UtcNow, 20).Result;

            foreach (CandleInfo candle in candles.Candles)
            {
                Console.WriteLine($"open: {candle.Open}; close: {candle.Close}; low: {candle.Low}; high: {candle.High}");
            }

            Console.WriteLine("******ORDER BOOK******");
            OrderBookResponse orderBookResponse = api.GetOrderBook(symbol, 2).Result;

            Console.WriteLine("***ASK***");
            foreach (var askArray in orderBookResponse.Book.Asks)
            {
                Console.WriteLine($"Price: {askArray[0]}; Count: {askArray[1]}");
            }
            Console.WriteLine("***BID***");
            foreach (var bidArray in orderBookResponse.Book.Bids)
            {
                Console.WriteLine($"Price: {bidArray[0]}; Count: {bidArray[1]}");
            }

            Console.WriteLine("******TICKER******");
            TickerResponse tickerResponse = api.GetTicker(symbol).Result;

            Console.WriteLine($"ASK price: {tickerResponse.Ticker.AskPrice}, qty: {tickerResponse.Ticker.AskQty}; BID price: {tickerResponse.Ticker.BidPrice}, qty: {tickerResponse.Ticker.BidQty}");
            //tickers for all pairs
            //var tickers = api.GetTickers().Result;

            Console.WriteLine("******RECENT TRADES******");
            TradesResponse tradesResponse = api.GetRecentTrades("btc_usdt", 2).Result;

            foreach (TradeInfo trade in tradesResponse.Trades)
            {
                Console.WriteLine($"{trade.Symbol} price: {trade.Price}, qty: {trade.Quantity}, side: {trade.Type}, date: {UnixTime.GetDateTime(trade.Time)} UTC");
            }


            //PRIVATE METHODS. NOT WORKING WITHOUT PUBLIC AND PRIVATE KEY

            Console.WriteLine("******CURRENT BALANCES******");
            AccountBalanceResponse accountBalance = api.GetAccount().Result;

            foreach (BalanceInfo balanceInfo in accountBalance.Balances)
            {
                Console.WriteLine($"{balanceInfo.Asset}:{balanceInfo.Available} (locked: {balanceInfo.Locked})");
            }

            Console.WriteLine("******OPEN ORDERS******");
            OrdersResponse ordersResponse = api.GetOpenOrders(symbol).Result;

            foreach (OrderInfoResponse order in ordersResponse.Orders)
            {
                Console.WriteLine($"{order.Side} {order.Instrument} for {order.Price}. Filled: {order.UnitsFilled}");
            }
            Console.WriteLine("******CLOSED ORDERS******");
            FilteredResponse <OrderInfoResponse> closeOrdersResponse = api.GetClosedOrders(symbol, UnixTime.Get(DateTime.UtcNow.AddDays(-1)), UnixTime.Get(DateTime.UtcNow)).Result;

            foreach (OrderInfoResponse order in closeOrdersResponse.Data)
            {
                Console.WriteLine($"{order.Side} {order.Instrument} for {order.Price}. Filled: {order.UnitsFilled}. Status: {order.Status}");
            }
            Console.WriteLine("******PLACE ORDER******");
            var orderResponse = api.PlaceOrder(new Models.OrderRequest()
            {
                Price    = 4000,
                Quantity = 10,
                Side     = Models.OrderSide.Buy,
                Symbol   = symbol,
                Type     = Models.OrderType.Limit
            }).Result;

            Console.WriteLine("******CANCEL ORDER******");
            Response response = api.CancelOrder(orderResponse.Order.OrderId).Result;

            if (response.Code == 200)
            {
                Console.WriteLine("Order canceled");
            }
            Console.ReadLine();
        }