Exemplo n.º 1
0
 /// <summary>
 /// Method Name     : BindExpiryDateToPaymentModel
 /// Author          : Hiren Patel
 /// Creation Date   : 15 Feb 2018
 /// Purpose         : Binds the expiry date to payment model.
 /// Revision        :
 /// </summary>
 /// <param name="paymentGatewayModel">Payment gateway model.</param>
 private void BindExpiryDateToPaymentModel(PaymentGatewayModel paymentGatewayModel)
 {
     if (!string.IsNullOrEmpty(txtExpiredDate.Text))
     {
         paymentGatewayModel.CardExpiryDate = txtExpiredDate.Text.Replace("/", "");
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Method Name     : BindDepositToPaymentModel
 /// Author          : Hiren Patel
 /// Creation Date   : 15 Feb 2018
 /// Purpose         : Binds the deposit to payment model.
 /// Revision        :
 /// </summary>
 /// <param name="paymentGatewayModel">Payment gateway model.</param>
 private void BindDepositToPaymentModel(PaymentGatewayModel paymentGatewayModel)
 {
     if (!IsNullOrEmptyOrWhiteSpace(estimateModel.Deposit))
     {
         paymentGatewayModel.TransactionAmout = Convert.ToDouble(RemoveCurrencyFormat(estimateModel.Deposit));
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// Method Name     : BindCardNumberToPaymentModel
 /// Author          : Hiren Patel
 /// Creation Date   : 15 Feb 2018
 /// Purpose         : Binds the card number to payment model.
 /// Revision        :
 /// </summary>
 /// <param name="paymentGatewayModel">Payment gateway model.</param>
 private void BindCardNumberToPaymentModel(PaymentGatewayModel paymentGatewayModel)
 {
     if (!string.IsNullOrEmpty(txtCardNumber.Text))
     {
         paymentGatewayModel.CreditCardNumber = txtCardNumber.Text.Replace(" ", "").Replace("-", "");
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// Event Name      : BtnSubmitPayment_TouchUpInside
        /// Author          : Hiren Patel
        /// Creation Date   : 23 Dec 2017
        /// Purpose         : To complete payment process.
        /// Revision        :
        /// </summary>
        /// <param name="sender">Sender.</param>
        /// <param name="e">Event Argument</param>
        private async void BtnSubmitPayment_TouchUpInside(object sender, EventArgs e)
        {
            if (btnAreYouPaying.Tag == 1)
            {
                estimateModel.IsDepositPaidByCheck = true;
                PerformSegue("depositToMoveConfirmed", this);
            }
            else
            {
                estimateModel.IsDepositPaidByCheck = false;

                PaymentGatewayModel paymentGatewayModel = new PaymentGatewayModel();
                BindCardHolderNameToPaymentModel(paymentGatewayModel);
                BindCardNumberToPaymentModel(paymentGatewayModel);
                BindCVVToPaymentModel(paymentGatewayModel);
                BindExpiryDateToPaymentModel(paymentGatewayModel);
                BindDepositToPaymentModel(paymentGatewayModel);
                paymentGatewayModel.CustomerID = LoginCustomerData.CustomerId;
                paymentGatewayModel.EmailID    = LoginCustomerData.EmailId;

                string message = estimateValidateServices.ValidatePaymentModel(paymentGatewayModel);
                if (string.IsNullOrEmpty(message))
                {
                    await callPaymentService(paymentGatewayModel);
                }
                else
                {
                    UIHelper.ShowMessage(message);
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Method Name     : GetCardDetails
        /// Author          : Vivek Bhavsar
        /// Creation Date   : 30 Jan 2018
        /// Purpose         : generate json string containing card details for payment
        /// Revision        :
        /// </summary>
        /// <param name="paymentGateway"></param>
        /// <returns></returns>
        private string GetCardDetails(PaymentGatewayModel paymentGateway)
        {
            try
            {
                StringBuilder cardDetails = new StringBuilder();
                cardDetails.Append("{");
                cardDetails.Append("\"Customer\":\"" + paymentGateway.CustomerID + "\",");
                cardDetails.Append("\"Currency\":\"" + Resource.PaymentCurrency + "\",");
                cardDetails.Append("\"Amount\":\"" + paymentGateway.TransactionAmout + "\",");
                cardDetails.Append("\"Type\":\"" + Resource.PaymentTransactionType + "\",");
                cardDetails.Append("\"SetupId\":\"" + Resource.PaymentGatewaySetupID + "\",");

                //Card Details
                cardDetails.Append("\"Card\":{");
                cardDetails.Append("\"Account\":\"" + paymentGateway.CreditCardNumber + "\",");
                cardDetails.Append("\"Cvc\":\"" + paymentGateway.CVVNo + "\",");
                cardDetails.Append("\"ExpDate\":\"" + paymentGateway.CardExpiryDate + "\",");

                // Card Holder
                cardDetails.Append("\"CardHolder\":{");
                cardDetails.Append("\"FirstName\":\"" + paymentGateway.FirstName + "\",");
                cardDetails.Append("\"LastName\":\"" + paymentGateway.LastName + "\",");
                cardDetails.Append("\"Email\":\"" + paymentGateway.EmailID + "\"");
                cardDetails.Append("}}");

                return(cardDetails.ToString());
            }
            catch (Exception)
            {
                return(string.Empty);
            }
        }
Exemplo n.º 6
0
        public string ValidatePaymentModel(PaymentGatewayModel paymentGatewayModel)
        {
            string errorMessage = string.Empty;

            if (UtilityPCL.IsNullOrEmptyOrWhiteSpace(paymentGatewayModel.FirstName))
            {
                return(Resource.msgCardFirstNameIsRequired);
            }
            else if (UtilityPCL.IsNullOrEmptyOrWhiteSpace(paymentGatewayModel.LastName))
            {
                return(Resource.msgCardLastNameIsRequired);
            }
            else if (UtilityPCL.IsNullOrEmptyOrWhiteSpace(paymentGatewayModel.CreditCardNumber))
            {
                return(Resource.msgCardNumberIsRequired);
            }
            else if (!ValidateCardNumber(paymentGatewayModel.CreditCardNumber.Replace(" ", "").Replace("-", "")))
            {
                return(Resource.msgInvalidCardNumber);
            }
            else if (UtilityPCL.IsNullOrEmptyOrWhiteSpace(paymentGatewayModel.CardExpiryDate))
            {
                return(Resource.msgCardExpiryDateIsRequired);
            }
            else if (paymentGatewayModel.CVVNo == -1)
            {
                return(Resource.msgCardCCVIsRequired);
            }

            return(errorMessage);
        }
Exemplo n.º 7
0
 public HttpResponseMessage CreatePaymentOrder(PaymentGatewayModel model)
 {
     try
     {
         if (model.LoginID > 0 && model.OrderNumber != "" && model.StoreId > 0)
         {
             var data = _repository.CreatePaymentOrder(model.LoginID, model.OrderNumber, model.StoreId);
             if (data != null)
             {
                 return(Request.CreateResponse(HttpStatusCode.OK, new { data }));
             }
             else
             {
                 return(Request.CreateResponse(HttpStatusCode.BadRequest, new { data }));
             }
         }
         else
         {
             return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Something Worng !"));
         }
     }
     catch (Exception ex)
     {
         return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Something Worng !", ex));
     }
 }
Exemplo n.º 8
0
 /// <summary>
 /// Method Name     : BindCVVToPaymentModel
 /// Author          : Hiren Patel
 /// Creation Date   : 15 Feb 2018
 /// Purpose         : Binds the CVVT o payment model.
 /// Revision        :
 /// </summary>
 /// <param name="paymentGatewayModel">Payment gateway model.</param>
 private void BindCVVToPaymentModel(PaymentGatewayModel paymentGatewayModel)
 {
     if (!string.IsNullOrEmpty(txtCVV.Text))
     {
         decimal number;
         if (!Decimal.TryParse(txtCVV.Text, out number))
         {
             paymentGatewayModel.CVVNo = -1;
         }
         else
         {
             paymentGatewayModel.CVVNo = Convert.ToInt32(txtCVV.Text);
         }
     }
 }
Exemplo n.º 9
0
 /// <summary>
 /// Method Name     : BindCardHolderNameToPaymentModel
 /// Author          : Hiren Patel
 /// Creation Date   : 15 Feb 2018
 /// Purpose         : Binds the card holder name to payment model.
 /// Revision        :
 /// </summary>
 /// <param name="paymentGatewayModel">Payment gateway model.</param>
 private void BindCardHolderNameToPaymentModel(PaymentGatewayModel paymentGatewayModel)
 {
     if (!string.IsNullOrEmpty(txtNameOfCardholder.Text))
     {
         if (txtNameOfCardholder.Text.Split(' ').Length > 1)
         {
             paymentGatewayModel.FirstName = txtNameOfCardholder.Text.Split(' ')[0];
             paymentGatewayModel.LastName  = txtNameOfCardholder.Text.Split(' ')[1];
         }
         else
         {
             paymentGatewayModel.FirstName = txtNameOfCardholder.Text.Split(' ')[0];
         }
     }
 }
Exemplo n.º 10
0
        /// <summary>
        /// Method Name     : callPaymentService
        /// Author          : Hiren Patel
        /// Creation Date   : 15 Feb 2018
        /// Purpose         : Calls the payment service.
        /// Revision        :
        /// </summary>
        /// <param name="paymentGatewayModel">Payment gateway model.</param>
        private async Task callPaymentService(PaymentGatewayModel paymentGatewayModel)
        {
            APIResponse <PaymentTransactonModel> serviceResponse = new APIResponse <PaymentTransactonModel>()
            {
                STATUS = false
            };
            string errorMessage = string.Empty;

            try
            {
                LoadingOverlay loadingOverlay = UIHelper.ShowLoadingScreen(View);
                serviceResponse = await payment.ProcessPaymentTransaction(paymentGatewayModel);

                loadingOverlay.Hide();
                if (serviceResponse.STATUS)
                {
                    if (serviceResponse.DATA != null)
                    {
                        estimateModel.TransactionId = serviceResponse.DATA.TransactionID;
                        estimateModel.PaymentStatus = true;
                        await CallPostPaymentTransaction(serviceResponse.DATA, estimateModel);

                        PerformSegue("depositToMoveConfirmed", this);
                    }
                }
                else
                {
                    errorMessage = serviceResponse.Message;
                    if (serviceResponse.DATA != null)
                    {
                        estimateModel.TransactionId = serviceResponse.DATA.TransactionID;
                        estimateModel.PaymentStatus = false;
                    }
                }
            }
            catch (Exception error)
            {
                errorMessage = error.Message;
            }
            finally
            {
                if (!string.IsNullOrEmpty(errorMessage))
                {
                    await UIHelper.ShowMessageWithOKConfirm(string.Empty, errorMessage, AppConstant.ALERT_TRY_AGAIN_BUTTON_TEXT);
                }
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Method Name     : callPaymentService
        /// Author          : Hiren Patel
        /// Creation Date   : 15 Feb 2018
        /// Purpose         : Calls the payment service.
        /// Revision        :
        /// </summary>
        /// <param name="paymentGatewayModel">Payment gateway model.</param>
        private async Task callPaymentService(PaymentGatewayModel paymentGatewayModel)
        {
            APIResponse <PaymentTransactonModel> serviceResponse = new APIResponse <PaymentTransactonModel>()
            {
                STATUS = false
            };
            string         errorMessage   = string.Empty;
            LoadingOverlay loadingOverlay = UIHelper.ShowLoadingScreen(View);

            try
            {
                serviceResponse = await payment.ProcessPaymentTransaction(paymentGatewayModel);

                if (serviceResponse.STATUS)
                {
                    if (serviceResponse.DATA != null)
                    {
                        lblTransactionId.Text           = serviceResponse.DATA.TransactionID;
                        lblPaymentStatusAmountPaid.Text = UtilityPCL.CurrencyFormat(Convert.ToString(paymentGatewayModel.TransactionAmout));
                        await CallPostPaymentTransaction(serviceResponse.DATA, paymentGatewayModel);
                    }
                }
                else
                {
                    errorMessage = serviceResponse.Message;

                    if (serviceResponse.DATA != null)
                    {
                        lblTransactionId.Text = serviceResponse.DATA.TransactionID;
                    }
                }
            }
            catch (Exception error)
            {
                errorMessage = error.Message;
            }
            finally
            {
                loadingOverlay.Hide();
                if (!string.IsNullOrEmpty(errorMessage))
                {
                    await UIHelper.ShowMessageWithOKConfirm(string.Empty, errorMessage, AppConstant.ALERT_OK_BUTTON_TEXT);
                }
            }

            ShowPaymentStatus(serviceResponse.STATUS);
        }
        public IActionResult HandleRequest(CheckOutViewModel checkOutViewModel)
        {
            PaymentGatewayModel model = new PaymentGatewayModel();
            string secretKey          = configuration["PaymentGatewaysecretKey"];

            model.appId = configuration["PaymentGatewayappid"];

            model.orderId       = checkOutViewModel.order.OrderId.ToString();
            model.orderNote     = checkOutViewModel.order.OrderId.ToString();
            model.orderAmount   = checkOutViewModel.order.OrderTotal.ToString();
            model.orderCurrency = "INR";
            model.customerName  = checkOutViewModel.order.FirstName + checkOutViewModel.order.LastName;
            model.customerEmail = checkOutViewModel.order.Email;
            model.customerPhone = checkOutViewModel.order.PhoneNumber;
            model.returnUrl     = configuration["DomainName"] + "/CheckOut/HandleResponse";
            model.notifyUrl     = configuration["DomainName"] + "/CheckOut/HandleResponse";
            string mode          = "TEST"; //change mode to PROD for production
            string signatureData = "";

            PropertyInfo[] keys = model.GetType().GetProperties();
            keys = keys.OrderBy(key => key.Name).ToArray();

            foreach (PropertyInfo key in keys)
            {
                signatureData += key.Name + key.GetValue(model);
            }
            var hmacsha256 = new HMACSHA256(StringEncode(secretKey));

            byte[] gensignature = hmacsha256.ComputeHash(StringEncode(signatureData));
            string signature    = Convert.ToBase64String(gensignature);

            ViewData["signature"] = signature;
            if (mode == "PROD")
            {
                ViewData["url"] = configuration["payemetGatewayProdUrl"];
            }
            else
            {
                ViewData["url"] = configuration["payemetGatewayTestUrl"];
            }
            return(View("HandleRequest", model));
        }
Exemplo n.º 13
0
 /// </summary>
 /// Method Name     : FillCustomerData
 /// Author          : Sanket Prajapati
 /// Creation Date   : 31 jan 2018
 /// Purpose         : Set customer details
 /// Revision        :
 /// </summary>
 private PaymentGatewayModel FillCustomerData(PaymentGatewayModel paymentModel)
 {
     if (LoginCustomerData != null)
     {
         String firstName = string.Empty;
         String lastName  = string.Empty;
         if (!string.IsNullOrEmpty(txtNameofCardHolder.Text.Trim()))
         {
             string[] customerName = txtNameofCardHolder.Text.Trim().Split(' ');
             if (customerName.Length > 1)
             {
                 firstName = customerName[0];
                 lastName  = customerName[1];
             }
         }
         paymentModel.CustomerID = LoginCustomerData.CustomerId;
         paymentModel.FirstName  = firstName;
         paymentModel.LastName   = lastName;
         paymentModel.EmailID    = LoginCustomerData.EmailId;
     }
     return(paymentModel);
 }
Exemplo n.º 14
0
        /// <summary>
        /// Event Name      : BtnMakePayment_TouchUpInsidet
        /// Author          : Hiren Patel
        /// Creation Date   : 23 Feb 2018
        /// Purpose         : To redirec to back screen as valuation.
        /// Revision        :
        /// </summary>
        /// <param name="sender">Sender.</param>
        /// <param name="e">Event Argument</param>
        private async void BtnMakePayment_TouchUpInside(object sender, EventArgs e)
        {
            PaymentGatewayModel paymentGatewayModel = new PaymentGatewayModel();

            UIHelper.BindCardHolderNameToPaymentModel(paymentGatewayModel, txtNameOfCardHolder.Text);
            UIHelper.BindCardNumberToPaymentModel(paymentGatewayModel, txtCardNumber.Text);
            UIHelper.BindCVVToPaymentModel(paymentGatewayModel, txtCVV.Text);
            UIHelper.BindExpiryDateToPaymentModel(paymentGatewayModel, txtExpiredDate.Text);
            UIHelper.BindDepositToPaymentModel(paymentGatewayModel, txtAmount.Text);
            paymentGatewayModel.CustomerID = UtilityPCL.LoginCustomerData.CustomerId;
            paymentGatewayModel.EmailID    = UtilityPCL.LoginCustomerData.EmailId;

            if (!string.IsNullOrEmpty(txtAmount.Text))
            {
                paymentGatewayModel.TransactionAmout = Convert.ToDouble(txtAmount.Text);
                double totlDueAmount = Convert.ToDouble(UtilityPCL.RemoveCurrencyFormat(lblTotalDue.Text));
                if (paymentGatewayModel.TransactionAmout > totlDueAmount)
                {
                    UIHelper.ShowMessage(AppConstant.PAYMENT_TOTAL_DUE_AMOUNT_LESS_THAN_TOTAL_COST);
                    return;
                }
            }
            else
            {
                UIHelper.ShowMessage(AppConstant.PAYMENT_TRANSACTION_AMOUNT_IS_REQUIRED);
                return;
            }

            string message = estimateValidateServices.ValidatePaymentModel(paymentGatewayModel);

            if (string.IsNullOrEmpty(message))
            {
                await callPaymentService(paymentGatewayModel);
            }
            else
            {
                UIHelper.ShowMessage(message);
            }
        }
Exemplo n.º 15
0
        /// </summary>
        /// Method Name     : PaymentTransaction
        /// Author          : Sanket Prajapati
        /// Creation Date   : 31 jan 2018
        /// Purpose         : Set payment details
        /// Revision        :
        /// </summary>
        public PaymentGatewayModel PaymentTransactionAsync()
        {
            PaymentGatewayModel paymentModel = new PaymentGatewayModel();

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
            string expiryYear = spinnerExpYear.SelectedItem.ToString().Substring(2, 2);

            paymentModel.CardExpiryDate   = spinnerExpMonth.SelectedItem.ToString() + expiryYear;
            paymentModel.CreditCardNumber = txtCardNumber.Text.Replace("-", "").Trim();
            paymentModel.CVVNo            = Convert.ToInt32(txtCVV.Text.Trim());
            if (estimateModel != null)
            {
                paymentModel.TransactionAmout = Convert.ToDouble(estimateModel.Deposit);
            }
            PaymentGatewayModel payment = FillCustomerData(paymentModel);

            if (payment != null)
            {
                paymentModel = payment;
            }

            return(paymentModel);
        }
Exemplo n.º 16
0
        /// </summary>
        /// Method Name     : PaymentTransaction
        /// Author          : Sanket Prajapati
        /// Creation Date   : 31 jan 2018
        /// Purpose         : Set payment details
        /// Revision        :
        /// </summary>
        public async Task <APIResponse <PaymentTransactonModel> > ProcessPaymentTransactionAsync()
        {
            paymentGateway = new Payment();
            APIResponse <PaymentTransactonModel> paymentTransacton = new APIResponse <PaymentTransactonModel>();
            PaymentGatewayModel paymentModel = PaymentTransactionAsync();

            if (paymentModel != null)
            {
                paymentTransacton = await paymentGateway.ProcessPaymentTransaction(paymentModel);

                if (paymentTransacton.STATUS)
                {
                    estimateModel.TransactionId = paymentTransacton.DATA.TransactionID;
                    estimateModel.PaymentStatus = true;
                    estimateModel.IsDepositPaid = true;
                    await CallPostPaymentTransaction(paymentTransacton, estimateModel);
                }
                else
                {
                    estimateModel.PaymentStatus = false;
                }
            }
            return(paymentTransacton);
        }
Exemplo n.º 17
0
        /// <summary>
        /// Method Name     : ProcessPaymentTransaction
        /// Author          : Vivek Bhavsar
        /// Creation Date   : 30 Jan 2018
        /// Purpose         : for payment through authorize.net using credit cards
        /// Revision        :
        /// </summary>
        /// <param name="paymentGatewayModel"></param>
        /// <returns></returns>
        public async Task <APIResponse <PaymentTransactonModel> > ProcessPaymentTransaction(PaymentGatewayModel paymentGatewayModel)
        {
            APIResponse <PaymentTransactonModel> apiResponse = new APIResponse <PaymentTransactonModel> {
                STATUS = false
            };

            apiResponse = await paymentGateway.ProcessPaymentGateway(paymentGatewayModel);

            if (apiResponse.STATUS)
            {
                if (apiResponse.DATA.Status == Resource.msgPaymentApproved)
                {
                    apiResponse.STATUS  = true;
                    apiResponse.Message = Resource.msgNodusPaymentSuccessfull;
                }
                else
                {
                    apiResponse.Message = apiResponse.DATA.Message;
                    apiResponse.STATUS  = false;
                }
            }

            return(apiResponse);
        }
Exemplo n.º 18
0
        /// <summary>
        /// Method Name     : CallPostPaymentTransaction
        /// Author          : Hiren Patel
        /// Creation Date   : 15 Feb 2018
        /// Purpose         : Calls the post payment transaction.
        /// Revision        :
        /// </summary>
        /// <returns>The post payment transaction.</returns>
        /// <param name="paymentTransactonModel">Payment transacton model.</param>
        /// <param name="paymentGatewayModel">payment gateway model.</param>
        private async Task CallPostPaymentTransaction(PaymentTransactonModel paymentTransactonModel, PaymentGatewayModel paymentGatewayModel)
        {
            APIResponse <PaymentModel> serviceResponse = new APIResponse <PaymentModel>()
            {
                STATUS = false
            };
            string errorMessage = string.Empty;

            try
            {
                paymentModel.CustomerID        = paymentGatewayModel.CustomerID;
                paymentModel.MoveID            = DTOConsumer.dtoMoveData.MoveNumber;
                paymentModel.TransactionNumber = paymentTransactonModel.TransactionID;
                paymentModel.TransactionDate   = UIHelper.DisplayDateFormatForEstimate(DateTime.Now);
                paymentModel.CustomerID        = paymentGatewayModel.CustomerID;
                paymentModel.TransactionAmount = Convert.ToString(paymentGatewayModel.TransactionAmout);
                CalculateDueAmountToPaymentModel();
                serviceResponse = await payment.PutPaymentAmount(paymentModel);
            }
            catch (Exception error)
            {
                errorMessage = error.Message;
            }
            finally
            {
                if (!string.IsNullOrEmpty(errorMessage))
                {
                    await UIHelper.ShowMessageWithOKConfirm(string.Empty, errorMessage, AppConstant.ALERT_OK_BUTTON_TEXT);
                }
            }
        }
Exemplo n.º 19
0
        /// <summary>
        /// Class Name      : ProcessPaymentGateway
        /// Author          : Vivek Bhavsar
        /// Creation Date   : 25 Jan 2018
        /// Purpose         : redirect to payment gateway to process payment using credit card details
        /// Revision        :
        /// </summary>
        /// <param name="paymentGatewayModel"></param>
        /// <returns></returns>
        public async Task <APIResponse <PaymentTransactonModel> > ProcessPaymentGateway(PaymentGatewayModel paymentGatewayModel)
        {
            APIResponse <PaymentTransactonModel> apiResponse = new APIResponse <PaymentTransactonModel> {
                STATUS = false
            };

            apiResponse = await ProcessTransaction(GetCardDetails(paymentGatewayModel));

            return(apiResponse);
        }