コード例 #1
0
        //FromBody attributes only binds the data from the body of request
        public IHttpActionResult ProcessPayment([FromBody] ProcessPaymentRequestDTO merchantRequestDTO)
        {
            if (_gateWayService.ifNotExists(merchantRequestDTO.MerchantID))
            {
                return(Json("No Mechant found"));
            }

            BankResponse bankResponse = null;

            //contact bank
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:64388/");
                var response = client.PostAsJsonAsync("api/BankAPI/BankAPI", merchantRequestDTO);
                response.Wait();

                var result = response.Result;
                if (result.IsSuccessStatusCode)
                {
                    var readTask = result.Content.ReadAsAsync <BankResponse>();
                    readTask.Wait();
                    bankResponse = readTask.Result;
                }
                else
                {
                    return(Json("Error contacting bank"));
                }
            }

            return(Json(_gateWayService.AddNewRequest(merchantRequestDTO, bankResponse.BankResponseID, bankResponse.BankStatus)));
        }
コード例 #2
0
        public ProcessPaymentResponseDTO AddNewRequest(ProcessPaymentRequestDTO m, Guid bankResponse, Status status)
        {
            var transactionID = Guid.NewGuid();
            var requestDate   = DateTime.Today;


            _unitOfWork.Requests.Add(new Request()
            {
                RequestID      = transactionID,
                CardNumber     = m.CardNumber,
                ExpiryDate     = m.ExpiryDate,
                Amount         = m.Amount,
                Currency       = m.Currency,
                CVV            = m.CVV,
                RequestDate    = requestDate,
                MerchantID     = m.MerchantID,
                BankResponseID = bankResponse,
                BankStatus     = status
            });

            _unitOfWork.SaveAll();

            return(new ProcessPaymentResponseDTO()
            {
                TransactionID = transactionID,
                Status = status.ToString(),
                TransactionDate = requestDate.ToString("dd/MM/yyyy hh:mm:ss")
            });
        }
コード例 #3
0
        public IHttpActionResult BankAPI([FromBody] ProcessPaymentRequestDTO merchantRequestDTO)
        {
            var bankResponseID = Guid.NewGuid();
            var bankStatus     = Status.Unsuccessfull;

            var bank = new BankResponse()
            {
                BankResponseID = bankResponseID,
                BankStatus     = bankStatus
            };

            return(Json(bank));
        }