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)); } }
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"); }
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"); }
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); }
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); }
// 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)); }
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); }
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>()); }