Exemplo n.º 1
0
            public void PostPurchaseSampleTest()
            {
                var     markUp              = new MarkupModel(20, 10);
                var     merchant            = new OrderMerchantModel(markUp);
                var     address             = new OrderMerchantModel("").BlockChainAddress;
                var     assetPair           = "BTCUSD";
                var     baseAsset           = "USD";
                decimal amount              = 100;
                var     postAssetsPairRates = lykkePayApi.assetPairRates.PostAssetsPairRates(assetPair, merchant, markUp).GetResponseObject();

                var purchaseModel = new PostPurchaseModel(address, assetPair, baseAsset, amount)
                {
                    successUrl  = "http://tut.by",
                    errorUrl    = "http://yandex.ru",
                    progressUrl = "http://www.google.com",
                    orderId     = "1231123123412",
                    markup      = new PostMarkup(20, 0, null)
                };

                var purchaceJson = JsonConvert.SerializeObject(purchaseModel);

                merchant = new OrderMerchantModel(purchaceJson);
                var result = lykkePayApi.purchase.PostPurchaseResponse(merchant, purchaceJson);

                Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.OK), "Purchase was unsuccessfull");
                Assert.That(result.Content, Does.Contain("TRANSFER_INPROGRESS"), "Purchase response doesn't contain 'TRANSFER_INPROGRESS'");
            }
            public void OrderResponseValidateTest()
            {
                var assetPair = "BTCUSD";

                MarkupModel markUp = new MarkupModel(50, 30);

                var merchant = new MerchantModel(markUp);
                var response = lykkePayApi.assetPairRates.PostAssetPairRates(assetPair, merchant, markUp);

                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK), "Unexpected status code");
                var postModel = JsonConvert.DeserializeObject <PostAssetsPairRatesModel>(response.Content);

                Assert.That(postModel.LykkeMerchantSessionId, Is.Not.Null, "LykkeMerchantSessionId not present in response");

                // order request below

                var orderRequest = new OrderRequestModel()
                {
                    currency = "USD", amount = 10, exchangeCurrency = "BTC", successURL = successURL, errorURL = errorURL, progressURL = progressURL, orderId = TestData.GenerateNumbers(5), markup = new PostMarkup(markUp, 0)
                };
                var orderRequestJson = JsonConvert.SerializeObject(orderRequest);

                merchant = new MerchantModel(orderRequestJson);

                var orderResponse = lykkePayApi.order.PostOrderModel(merchant, orderRequestJson, postModel.LykkeMerchantSessionId);

                Assert.That(orderResponse.currency, Is.EqualTo(orderRequest.exchangeCurrency), "Unexpected currency in order response");
                Assert.That(orderResponse.exchangeRate * orderResponse.amount, Is.EqualTo(orderRequest.amount), "Exchange rate * amount in order response not equals to request amount");
            }
            public void OrderPostCurrencyNotValidTest(object currency)
            {
                var assetPair       = "BTCUSD";
                var currentCurrency = currency.ToString();

                MarkupModel markUp = new MarkupModel(50, 30);

                var merchant = new MerchantModel(markUp);
                var response = lykkePayApi.assetPairRates.PostAssetPairRates(assetPair, merchant, markUp);

                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK), "Unexpected status code");
                var postModel = JsonConvert.DeserializeObject <PostAssetsPairRatesModel>(response.Content);

                Assert.That(postModel.LykkeMerchantSessionId, Is.Not.Null, "LykkeMerchantSessionId not present in response");

                // order request below

                var orderRequest = new OrderRequestModel()
                {
                    currency = currentCurrency, amount = 10, exchangeCurrency = "BTC", successURL = successURL, errorURL = errorURL, progressURL = progressURL, orderId = TestData.GenerateNumbers(5), markup = new PostMarkup(markUp, 0)
                };
                var orderRequestJson = JsonConvert.SerializeObject(orderRequest);

                merchant = new MerchantModel(orderRequestJson);

                var orderResponse = lykkePayApi.order.PostOrder(merchant, orderRequestJson, postModel.LykkeMerchantSessionId);

                Assert.That(orderResponse.StatusCode, Is.EqualTo(HttpStatusCode.NotFound), "Unexpected status code in case currency not valid");
            }
        public ActionResult Index(MarkupModel mm)
        {
            int i = 0;

            foreach (Markup m in mm.markups)
            {
                if (m.ratio < 0)
                {
                    ModelState.AddModelError($"markups[{i}].ratio", "The Markup (%) cannot be tess than 0. ");
                }
                if (m.margin < 0)
                {
                    ModelState.AddModelError($"markups[{i}].margin", "The Margin (%) cannot be less than 0. ");
                }
                if (m.margin > 100)
                {
                    ModelState.AddModelError($"markups[{i}].margin", "The Margin (%) cannot be more than 100. ");
                }
                if (m.multiplier < 0)
                {
                    ModelState.AddModelError($"markups[{i}].multiplier", "The Multiplier (%) cannot be less than 0. ");
                }
                if (m.ratio != 0 && m.margin != 0)
                {
                    ModelState.AddModelError($"markups[{i}].ratio", "You can only use one of Markup and Margin. ");
                }
                i++;
            }
            if (ModelState.IsValid)
            {
                // Save in Company
                Company       company       = db.FindCompany(mm.CompanyId);
                List <Markup> markupsToSave = new List <Markup>();
                foreach (Markup m in mm.markups)
                {
                    switch (m.State)
                    {
                    case MMState.Added:
                    case MMState.Clean:
                    case MMState.Dirty:
                        m.State = MMState.Dirty;
                        markupsToSave.Add(m);
                        break;

                    default:
                        break;
                    }
                }
                company.markup = JsonConvert.SerializeObject(markupsToSave);
                db.SaveChanges();
                return(RedirectToAction("Index", "Companies"));
            }
            else
            {
                return(View(mm));
            }
        }
Exemplo n.º 5
0
            public void PostAssetPairSpacesEmptyTest()
            {
                var assetPair = "BTCUSD";

                MarkupModel markUp   = null;
                var         merchant = new MerchantModel(markUp);
                var         response = lykkePayApi.assetPairRates.PostAssetsPairRates(assetPair, merchant, markUp);

                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.UnsupportedMediaType), "Unexpected status code");
                Assert.That(string.IsNullOrEmpty(response.Content), Is.True, "Unexpected response content");
            }
Exemplo n.º 6
0
            public void OrderPostBackSuccessResponseTest()
            {
                //add GetBalance and skip(Fail?) if not enough crypto

                var assetPair = "BTCUSD";

                MarkupModel markUp = new MarkupModel(50, 30);

                var merchant = new MerchantModel(markUp);
                var response = lykkePayApi.assetPairRates.PostAssetsPairRates(assetPair, merchant, markUp);

                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK), "Unexpected status code");
                var postModel = JsonConvert.DeserializeObject <PostAssetsPairRatesModel>(response.Content);

                Assert.That(postModel.LykkeMerchantSessionId, Is.Not.Null, "LykkeMerchantSessionId not present in response");

                // order request below
                var oId          = TestData.GenerateNumbers(5);
                var orderRequest = new OrderRequestModel()
                {
                    currency = "USD", amount = 10, exchangeCurrency = "BTC", successURL = successURL + $"?orderId={oId}", errorURL = errorURL, progressURL = progressURL, orderId = TestData.GenerateNumbers(5), markup = new PostMarkup(markUp, 0)
                };
                var orderRequestJson = JsonConvert.SerializeObject(orderRequest);

                merchant = new MerchantModel(orderRequestJson);

                var orderResponse = lykkePayApi.order.PostOrderModel(merchant, orderRequestJson, postModel.LykkeMerchantSessionId).GetResponseObject();

                Assert.That(orderResponse.currency, Is.EqualTo(orderRequest.exchangeCurrency), "Unexpected currency in order response");
                Assert.That(orderResponse.exchangeRate * orderResponse.amount, Is.EqualTo(orderRequest.amount).Within("0.00000000001"), "Exchange rate * amount in order response not equals to request amount");

                var transfer = new TransferRequestModel()
                {
                    amount = orderResponse.amount + 0.000476m /*temp value - with fee*/, destinationAddress = orderResponse.address, assetId = "BTC", sourceAddress = "n1gDxgVtJmTxaXupcFNd8AeKmdJaihTacx"
                };
                var transferJson    = JsonConvert.SerializeObject(transfer);
                var merch           = new OrderMerchantModel(transferJson);
                var convertTransfer = lykkePayApi.transfer.PostTransferModel(merch, transferJson);

                var tId = convertTransfer.GetResponseObject().transferResponse.transactionId;

                Assert.That(() => lykkePayApi.postBack.GetCallBackByTransactionID(tId).Content, Does.Contain("paymentResponse").And.Contain("PAYMENT_CONFIRMED").And.Contain("PAYMENT_INPROGRESS").After(5 * 60 * 1000, 3 * 1000), $"postback for order id {orderRequest.orderId} is not correct");
            }
Exemplo n.º 7
0
            public void PostAssetPairValidValuesTest()
            {
                MarkupModel markUp = new MarkupModel(50, 30);

                var expectedAsk = ExpectedAsk(50.0, 30, testAsset);
                var expectedBid = ExpectedBid(50.0, 30, testAsset);

                var merchant = new MerchantModel(markUp);
                var response = lykkePayApi.assetPairRates.PostAssetsPairRates(testAsset, merchant, markUp);

                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK), "Unexpected status code");
                var postModel = JsonConvert.DeserializeObject <PostAssetsPairRatesModel>(response.Content);

                Assert.Multiple(() =>
                {
                    Assert.That(postModel.LykkeMerchantSessionId, Is.Not.Null, "LykkeMerchantSessionId not present in response");
                    Assert.That(expectedAsk, Is.EqualTo(postModel.ask), "Actual ask is not equal to expected");
                    Assert.That(expectedBid, Is.EqualTo(postModel.bid), "Actual bid is not equal to expected");
                });
            }
            public void OrderPostBackSuccessResponseTest()
            {
                var assetPair = "BTCUSD";

                MarkupModel markUp = new MarkupModel(50, 30);

                var merchant = new MerchantModel(markUp);
                var response = lykkePayApi.assetPairRates.PostAssetPairRates(assetPair, merchant, markUp);

                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK), "Unexpected status code");
                var postModel = JsonConvert.DeserializeObject <PostAssetsPairRatesModel>(response.Content);

                Assert.That(postModel.LykkeMerchantSessionId, Is.Not.Null, "LykkeMerchantSessionId not present in response");

                // order request below

                var orderRequest = new OrderRequestModel()
                {
                    currency = "USD", amount = 10, exchangeCurrency = "BTC", successURL = successURL, errorURL = errorURL, progressURL = progressURL, orderId = TestData.GenerateNumbers(5), markup = new PostMarkup(markUp, 0)
                };
                var orderRequestJson = JsonConvert.SerializeObject(orderRequest);

                merchant = new MerchantModel(orderRequestJson);

                var orderResponse = lykkePayApi.order.PostOrderModel(merchant, orderRequestJson, postModel.LykkeMerchantSessionId);

                Assert.That(orderResponse.currency, Is.EqualTo(orderRequest.exchangeCurrency), "Unexpected currency in order response");
                Assert.That(orderResponse.exchangeRate * orderResponse.amount, Is.EqualTo(orderRequest.amount).Within("0.00000000001"), "Exchange rate * amount in order response not equals to request amount");

                var transfer = new TransferRequestModel()
                {
                    amount = orderResponse.amount, destinationAddress = orderResponse.address, assetId = "BTC", sourceAddress = "n1gDxgVtJmTxaXupcFNd8AeKmdJaihTacx"
                };
                var transferJson    = JsonConvert.SerializeObject(transfer);
                var merch           = new OrderMerchantModel(transferJson);
                var convertTransfer = lykkePayApi.transfer.PostTransferModel(merch, transferJson);

                var getB = lykkePayApi.getBalance.GetGetBalance("BTC", merch);
            }
Exemplo n.º 9
0
            public void OrderPostOnlyRequiredParamsTest()
            {
                var assetPair = "BTCUSD";

                MarkupModel markUp = new MarkupModel(50, 30);

                var merchant = new MerchantModel(markUp);
                var response = lykkePayApi.assetPairRates.PostAssetsPairRates(assetPair, merchant, markUp);

                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK), "Unexpected status code");

                Assert.That(response.GetResponseObject().LykkeMerchantSessionId, Is.Not.Null, "LykkeMerchantSessionId not present in response");

                // order request below
                var orderRequestJson = "{\"currency\":\"USD\",\"amount\":10.0}";

                merchant = new MerchantModel(orderRequestJson);

                var orderResponse = lykkePayApi.order.PostOrderModel(merchant, orderRequestJson, response.GetResponseObject().LykkeMerchantSessionId);

                Assert.That(orderResponse.StatusCode, Is.EqualTo(HttpStatusCode.OK), "Unexpected status code");
            }
            public void PostPurchaseSampleTest()
            {
                var     markUp              = new MarkupModel(20, 10);
                var     merchant            = new MerchantModel(markUp);
                var     address             = new OrderMerchantModel("").BlockChainAddress;
                var     assetPair           = "BTCUSD";
                var     baseAsset           = "USD";
                decimal amount              = 100;
                var     postAssetsPairRates = lykkePayApi.assetPairRates.PostAssetsPairRatesModel(assetPair, merchant, markUp);

                var purchaseModel = new PostPurchaseModel(address, assetPair, baseAsset, amount)
                {
                    successUrl  = "http://tut.by",
                    errorUrl    = "http://yandex.ru",
                    progressUrl = "http://www.google.com",
                    orderId     = "1231123123412",
                    markup      = new PostMarkup(20, 0, null)
                };

                merchant.LykkeMerchantSessionId = postAssetsPairRates.LykkeMerchantSessionId;

                var result = lykkePayApi.purchase.PostPurchaseResponse(merchant, purchaseModel);
            }
Exemplo n.º 11
0
        // GET: Markups
        public ActionResult Index(int?CompanyId)
        {
            if (CompanyId == null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            Company company = db.FindCompany(CompanyId);

            if (company == null)
            {
                return(HttpNotFound());
            }
            MarkupModel mm = new MarkupModel()
            {
                CompanyId   = company.Id,
                CompanyName = company.Name
            };

            if (company.markup != null)
            {
                mm.markups = JsonConvert.DeserializeObject <List <Markup> >(company.markup);
            }
            return(View(mm));
        }
Exemplo n.º 12
0
        public FileResult ExportMarkups(int companyId, string sCurrDate)
        {
            byte[] b;

            DateTime curr;

            sCurrDate = sCurrDate.Replace("'", "");
            if (!DateTime.TryParse(sCurrDate, out curr))
            {
                curr = DateTime.Now.ToLocalTime();
            }
            string currDate = $"{curr.ToShortDateString()} {curr.ToShortTimeString()}";

            Company     company = db.FindCompany(companyId);
            MarkupModel mm      = new MarkupModel();

            if (company.markup != null)
            {
                mm.markups = JsonConvert.DeserializeObject <List <Markup> >(company.markup);
            }


            DCTSOpenXML oxl = new DCTSOpenXML();

            using (MemoryStream memStream = new MemoryStream())
            {
                using (SpreadsheetDocument document = SpreadsheetDocument.Create(memStream, SpreadsheetDocumentType.Workbook))
                {
                    // Build Excel File
                    WorkbookPart workbookPart = document.AddWorkbookPart();
                    workbookPart.Workbook = new Workbook();

                    WorksheetPart worksheetPart = workbookPart.AddNewPart <WorksheetPart>();
                    worksheetPart.Worksheet = new Worksheet(new SheetData());

                    Sheets sheets = document.WorkbookPart.Workbook.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.Sheets());

                    // declare locals
                    Row    row;
                    Cell   cell;
                    string loc;
                    int    rr;

                    Sheet sheet = new Sheet()
                    {
                        Id      = workbookPart.GetIdOfPart(worksheetPart),
                        SheetId = 1,
                        Name    = "Markups"
                    };
                    sheets.Append(sheet);

                    Worksheet worksheet = new Worksheet();
                    SheetData sd        = new SheetData();
                    // Build sheet
                    // Title
                    row  = new Row();
                    cell = oxl.SetCellVal("A1", $"Export - Markups  {currDate}");
                    row.Append(cell);
                    sd.Append(row);
                    row  = new Row();
                    cell = oxl.SetCellVal("A2", "");
                    row.Append(cell);
                    sd.Append(row);
                    // Headers
                    row = new Row();
                    oxl.columns.Append(new Column()
                    {
                        Width = oxl.ComputeExcelCellWidth(oxl.minWidth), Min = 1, Max = 1, BestFit = true, CustomWidth = true
                    }); cell = oxl.SetCellVal("A3", "Title"); row.Append(cell);
                    oxl.columns.Append(new Column()
                    {
                        Width = oxl.ComputeExcelCellWidth(oxl.minWidth), Min = 2, Max = 2, BestFit = true, CustomWidth = true
                    }); cell = oxl.SetCellVal("B3", "Multiplier"); row.Append(cell);
                    oxl.columns.Append(new Column()
                    {
                        Width = oxl.ComputeExcelCellWidth(oxl.minWidth), Min = 3, Max = 3, BestFit = true, CustomWidth = true
                    }); cell = oxl.SetCellVal("C3", "Markup"); row.Append(cell);
                    oxl.columns.Append(new Column()
                    {
                        Width = oxl.ComputeExcelCellWidth(oxl.minWidth), Min = 3, Max = 3, BestFit = true, CustomWidth = true
                    }); cell = oxl.SetCellVal("D3", "Margin"); row.Append(cell);
                    oxl.columns.Append(new Column()
                    {
                        Width = oxl.ComputeExcelCellWidth(oxl.minWidth), Min = 4, Max = 4, BestFit = true, CustomWidth = true
                    }); cell = oxl.SetCellVal("E3", "Addend"); row.Append(cell);
                    worksheet.Append(oxl.columns);
                    sd.Append(row);
                    // Content
                    for (int i = 0; i < mm.markups.Count(); i++)
                    {
                        Markup m = mm.markups[i];
                        row = new Row();
                        rr  = 4 + i;
                        loc = "A" + rr; cell = oxl.SetCellVal(loc, m.title); row.Append(cell);
                        loc = "B" + rr; cell = oxl.SetCellVal(loc, m.multiplier); row.Append(cell);
                        loc = "C" + rr; cell = oxl.SetCellVal(loc, m.ratio); row.Append(cell);
                        loc = "D" + rr; cell = oxl.SetCellVal(loc, m.margin); row.Append(cell);
                        loc = "E" + rr; cell = oxl.SetCellVal(loc, m.Addend); row.Append(cell);
                        sd.Append(row);
                    }
                    worksheet.Append(sd);
                    // Autofit columns - ss:AutoFitWidth="1"
                    worksheetPart.Worksheet = worksheet;
                    workbookPart.Workbook.Save();
                    document.Close();

                    b = memStream.ToArray();
                    return(File(b, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                                $"Markups as of {currDate}.xlsx"));
                }
            }
        }
 public PostAssetsPairRatesModel PostAssetsPairRatesModel(string assetPair, MerchantModel merchant, MarkupModel markup) =>
 JsonConvert.DeserializeObject <PostAssetsPairRatesModel>(PostAssetPairRates(assetPair, merchant, markup).Content);
        public IRestResponse PostAssetPairRates(string assetPair, MerchantModel merchant, MarkupModel markup)
        {
            IRestRequest request = new RestRequest($"{resource}/{assetPair}", Method.POST);

            request.AddHeader("Lykke-Merchant-Id", merchant.LykkeMerchantId);
            request.AddHeader("Lykke-Merchant-Sign", merchant.LykkeMerchantSign);
            if (markup != null)
            {
                var body = JsonConvert.SerializeObject(markup, Formatting.Indented);
                request.AddParameter("application/json", body, ParameterType.RequestBody);
            }

            var respose = client.Execute(request);

            return(respose);
        }
Exemplo n.º 15
0
        public IResponse <PostAssetsPairRatesModel> PostAssetsPairRates(string assetPair, AbstractMerchant merchant, MarkupModel markup)
        {
            var request = Request.Post($"{resource}/{assetPair}").
                          WithHeaders("Lykke-Merchant-Id", merchant.LykkeMerchantId).
                          WithHeaders("Lykke-Merchant-Sign", merchant.LykkeMerchantSign);

            if (markup != null)
            {
                var body = JsonConvert.SerializeObject(markup, Formatting.Indented);
                request.AddJsonBody(body);
            }

            return(request.Build().Execute <PostAssetsPairRatesModel>());
        }