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)); }
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; } }