public async Task <IHttpActionResult> MakePayment([FromBody] ListPaymentRequest payment)
 {
     try
     {
         PaymentService client = new PaymentService();
         payments = await client.MakePayment(payment);
     }
     catch (Exception)
     {
         return(StatusCode(HttpStatusCode.BadRequest));
     }
     return(Ok(payments));
 }
        public async Task <ListPaymentResponse> MakePayment(ListPaymentRequest payment)
        {
            HttpResponseMessage response = null;
            string responseJson          = null;

            ListPaymentResponse payments = new ListPaymentResponse();

            using (HttpClient client = new HttpClient())
            {
                System.Net.ServicePointManager.ServerCertificateValidationCallback +=
                    (se, cert, chain, sslerror) =>
                {
                    return(true);
                };
                System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls;

                try
                {
                    string requestBody = JsonConvert.SerializeObject(new ListPaymentRequest
                    {
                        LSID             = payment.LSID,
                        BRGNR            = payment.BRGNR,
                        AFTLNR           = payment.AFTLNR,
                        VIEWUSER         = payment.VIEWUSER,
                        LDKD_BRUGER      = payment.LDKD_BRUGER,
                        SPROG            = payment.SPROG,
                        TIMEZONEID       = payment.TIMEZONEID,
                        ACTION           = payment.ACTION,
                        CBOSELFOLDER     = payment.CBOSELFOLDER,
                        CBOSELPERIOD     = payment.CBOSELPERIOD,
                        OPTPERIODTP      = payment.OPTPERIODTP,
                        CBOSELPAYSTAT    = payment.CBOSELPAYSTAT,
                        TXIPERFROM       = payment.TXIPERFROM.Substring(0, 8),
                        TXIPERTO         = payment.TXIPERTO.Substring(0, 8),
                        cboSelSortCrit   = payment.cboSelSortCrit,
                        CBOSELPAGESIZE   = payment.CBOSELPAGESIZE,
                        BULKREFLBD       = payment.BULKREFLBD,
                        ISBIGCUSTOMER    = payment.ISBIGCUSTOMER,
                        txiAmountFrom    = payment.txiAmountFrom,
                        txiAmountFromDec = payment.txiAmountFromDec,
                        txiAmountTo      = payment.txiAmountTo,
                        txiAmountToDec   = payment.txiAmountToDec,
                        cboCurrency      = payment.cboCurrency,
                        cboCreateUsr     = payment.cboCreateUsr,
                        cboApproveUsr    = payment.cboApproveUsr,
                        cboDebAccount    = payment.cboDebAccount,
                        txiTextStr       = payment.txiTextStr,
                        txiBeneNameStr   = payment.txiBeneNameStr,
                        txiBeneAccStr    = payment.txiBeneAccStr,
                        cboPaymType      = payment.cboPaymType,
                        txiRfNr          = payment.txiRfNr,
                        cboRfnrTp        = payment.cboRfnrTp,
                        txiSenderID      = payment.txiSenderID,
                        chkBulkDebit     = payment.chkBulkDebit,
                        chkXtraFee       = payment.chkXtraFee
                    });

                    client.BaseAddress = new Uri("https://10.14.30.183:8600/mobilebusiness/sb/");
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    client.DefaultRequestHeaders.Add("X-DB-LSID", "");
                    client.DefaultRequestHeaders.Add("X-DB-CorrelId", "MOBANK3"); //This will only work in Test-env - makes it possible to fetch data without valid LSID.. BUT ONLY IN TEST :)
                    client.DefaultRequestHeaders.Add("X-IBM-Client-Id", "5487284e-9bca-4ca7-9d7b-b37f542fc62c");
                    client.DefaultRequestHeaders.Add("X-IBM-Client-Secret", "kL4iV5qL4hQ6iV8xX1pM0mU0sP3mG4bD0yV7sN7nT5hV8iX4yO");

                    HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, "BNF9PListServiceV00/get");
                    req.Content = new StringContent(
                        requestBody,
                        Encoding.UTF8,
                        "application/json");

                    response = await client.SendAsync(req);

                    responseJson = await response.Content.ReadAsStringAsync();

                    if (response.IsSuccessStatusCode && ValidateResponseData(responseJson))
                    {
                        //if (JsonConvert.DeserializeObject<dynamic>(responseJson).NumberOfTransactions > "0")
                        //{
                        //Json deserializer throws when {} orccurs. That is why we replace all {} with empty string.
                        var tempResp = responseJson.Replace("{}", "\"\"");
                        payments = JsonConvert.DeserializeObject <ListPaymentResponse>(tempResp);
                        for (var i = 0; i < payments.payments.paymentrow.Count(); i++)
                        {
                            payments.payments.paymentrow[i].txoAmount = payments.payments.paymentrow[i].txoAmount.TrimStart('0');
                            string dec     = payments.payments.paymentrow[i].txoAmount.Substring(payments.payments.paymentrow[i].txoAmount.Length - 2);
                            string mantisa = payments.payments.paymentrow[i].txoAmount.Substring(0, payments.payments.paymentrow[i].txoAmount.Length - 2);
                            payments.payments.paymentrow[i].txoAmount = mantisa + "," + dec;
                        }
                        //}
                        //else
                        //{
                        //    res = new Response
                        //    {
                        //        ReturnText = "No Transactions",
                        //        ReturnCode = "0",
                        //        FailureId = "0000000"
                        //    };
                        //}
                    }
                    else
                    {
                        payments = new ListPaymentResponse()
                        {
                            MoreRows         = "N",
                            LastRowRepos     = "",
                            NumberOfPayments = "0",
                            Returkode        = "0",
                            StatusCode       = "",
                            ReasonCode       = "",
                            Returtekst       = "ISLAY error"
                        };
                    }

                    return(payments);
                }
                catch (Exception ex)
                {
                    #region ErrorLogging

                    #endregion
                    return(null);
                }
            }
        }