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