コード例 #1
0
        public ActionResult Checkout(string amount)
        {
            bool parseAmount = decimal.TryParse(amount, out decimal _amount);

            if (parseAmount != true)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            OpenOrderModel openOrderModel = new OpenOrderModel()
            {
                MerchantId     = MERCHANT_ID,
                MerchantSiteId = MERCHANT_SITE_ID,
                Currency       = CURRENCY,
                Amount         = amount,
                TimeStamp      = DateTime.UtcNow.ToString("yyyyMMddHHmmss")
            };

            string composedString = string.Concat(MERCHANT_ID, MERCHANT_SITE_ID, openOrderModel.Amount, CURRENCY, openOrderModel.TimeStamp, SECRET);

            openOrderModel.Checksum = GetChecksumSha256(composedString);

            var options = new JsonSerializerOptions
            {
                PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
            };

            options.Converters.Add(new LongToStringJsonConverter());

            string    inputJson = JsonSerializer.Serialize(openOrderModel, options);
            WebClient client    = new WebClient();

            client.Headers["Content-type"] = "application/json";
            client.Encoding = Encoding.UTF8;
            string json = client.UploadString(API_OPEN_ORDER, inputJson);

            OpenOrderResultModel openOrderResult = JsonSerializer.Deserialize <OpenOrderResultModel>(json, options);

            if (openOrderResult.Status == "PENDING")
            {
                return(RedirectToAction("CheckoutPending", openOrderResult));
            }
            else if (openOrderResult.Status == "ERROR")
            {
                return(RedirectToAction("CheckoutError", openOrderResult));
            }

            return(View(openOrderResult));
        }
コード例 #2
0
        public void StopOrderTracking(OpenOrderModel order)
        {
            try
            {
                var exchange         = _dictionaryModelsMapper.GetName <ExchangeModel>(order.ExchangeId);
                var targetInstrument = _instrumentsNameMapper.GetExchangeInstrument(
                    _dictionaryModelsMapper.GetName <InstrumentModel>(order.InstrumentId), exchange);
                var orderIdentifier = new OrderIdentifier(order.OrderId, targetInstrument);

                _allOrders.TryRemove(order.OrderId, out OpenOrderModel removedOrder);
                _ordersWatcher.StopOrderTracking(orderIdentifier, exchange);
                _orderCancelationWatcher.RemoveFromWatcher(order);
            }
            catch (Exception e)
            {
                _logger?.Log(SeverityLevel.Error, $"Failed to start tracking for new order! Exchange: {order.ExchangeId}, OrderId = {order.OrderId}");
                _logger?.Log(SeverityLevel.Error, e);
                throw;
            }
        }