public async Task <ProcessResponseV1Model> Process([FromBody] ProcessPaymentV1Model processPaymentModel)
 {
     using (Engine engine = new Engine())
     {
         return(await engine.ProcessPayment(processPaymentModel));
     }
 }
示例#2
0
        public async Task <ProcessResponseV1Model> ProcessPayment(ProcessPaymentV1Model processPaymentModel)
        {
            //Validate data from request
            var validation = processPaymentModel.Validate();

            //return informational details to caller
            if (!validation.IsValid)
            {
                return(new ProcessResponseV1Model
                {
                    Status = Statuses.Fail.ToString(),
                    Message = validation.ErrorMessage
                });
            }

            //build data to be sent to acquiring bank
            RequestModel requestModel = new RequestModel
            {
                MerchantAccountID     = processPaymentModel.MerchantAccountID,
                Amount                = processPaymentModel.Amount,
                CardNumber            = processPaymentModel.CardNumber,
                CardVerificationValue = processPaymentModel.CardVerificationValue,
                Currency              = processPaymentModel.Currency,
                ExpiryDate            = processPaymentModel.ProcessedExpiryDate
            };

            //send data to acquiring bank
            Money money    = new Money();
            var   response = await money.Transfer(requestModel);

            //build transaction to be saved in DB
            Transaction transaction = new Transaction
            {
                Amount              = requestModel.Amount,
                CardExpiryDate      = requestModel.ExpiryDate,
                CardNumber          = requestModel.CardNumber,
                ID                  = response.TransactionID,
                MerchantAccountID   = requestModel.MerchantAccountID,
                PaymentCurrency     = requestModel.Currency,
                TransactionDateTime = DateTime.Now,
                PaymentDescription  = processPaymentModel.PurchaseDescription,
                TransactionStatus   = (response.ResponseStatus == ResponseStatuses.Successful.ToString()) ? Statuses.successful.ToString() : Statuses.Fail.ToString(),
                TransactionMessage  = response.ResponseMessage
            };
            await repository.AddTransaction(transaction);

            //respond to caller
            return(new ProcessResponseV1Model
            {
                TransactionID = transaction.ID,
                Status = transaction.TransactionStatus,
                Message = transaction.TransactionMessage
            });
        }
示例#3
0
        private static void ProcessPayment()
        {
            Console.WriteLine("Enter Merchant Account ID");
            Guid merchantAccountID = new Guid(Console.ReadLine());

            Console.WriteLine("Enter Card Number");
            string cardNumber = Console.ReadLine();

            Console.WriteLine("Enter cvv");
            string cvv = Console.ReadLine();

            Console.WriteLine("Enter Expiry Date (MM/YY)");
            string expiryDate = Console.ReadLine();

            Console.WriteLine("Enter Amount");
            int amount = Int16.Parse(Console.ReadLine());

            Console.WriteLine("Enter Currency");
            string currency = Console.ReadLine();

            Console.WriteLine("Enter purchase description");
            string purchaseDescription = Console.ReadLine();

            Console.WriteLine();

            Console.WriteLine("Processing...");
            Console.WriteLine();


            ProcessPaymentV1Model processPaymentV1Model = new ProcessPaymentV1Model
            {
                MerchantAccountID     = merchantAccountID,
                CardNumber            = cardNumber,
                CardVerificationValue = cvv,
                ExpiryDate            = expiryDate,
                Amount              = amount,
                Currency            = currency,
                PurchaseDescription = purchaseDescription
            };

            TransactionV1 transactionV1 = new TransactionV1();
            var           result        = JsonConvert.SerializeObject(transactionV1.Process(processPaymentV1Model).Result);

            Console.WriteLine(result);
            Console.WriteLine();
        }
示例#4
0
        /// <summary>
        /// Process a payment through the payment gateway
        /// </summary>
        /// <param name="requestModel"></param>
        /// <returns></returns>
        public async Task <ProcessResponseV1Model> Process(ProcessPaymentV1Model requestModel)
        {
            //create body parameter
            Parameter parameter = new Parameter
            {
                Name  = "RequestModel",
                Value = JsonConvert.SerializeObject(requestModel),
                Type  = ParameterType.RequestBody
            };

            //sends the request to payment gateway
            var task = Requestor.SendRequest("Process", Method.POST, parameters: parameter);

            string jsonResult = await task;

            return(JsonConvert.DeserializeObject <ProcessResponseV1Model>(jsonResult));
        }