public PaymentResultModel ProcessRefund(BasicRequestModel requestModel) { var result = new PaymentResultModel { Message = "Process refund failed. " }; var paymentData = (HelcimBasicRequestModel)requestModel; var values = GetBasicData(paymentData); values["transactionType"] = "refund"; values["terminalId"] = paymentData.TerminalId; values["test"] = paymentData.Test ? "1" : "0"; values["amount"] = paymentData.Amount.ToString("0.00"); if (paymentData.CreditCard != null) { var creditCard = (HelcimCreditCardRequestModel)paymentData.CreditCard; values["cardHolderName"] = creditCard.CardHolderName; values["cardNumber"] = creditCard.cardNumber; values["cardExpiry"] = creditCard.cardExpiry; values["cardCVV"] = creditCard.cardCVV; var data = BasicRequest(values); if (data != null) { result.Success = true; result.Message = "Process refund success. "; result.Data = data; } } return(result); }
public PaymentResultModel ProcessVoid(BasicRequestModel requestModel) { var result = new PaymentResultModel(); var paymentData = (HelcimBasicRequestModel)requestModel; var values = GetBasicData(paymentData); values["transactionType"] = "void"; values["transactionId"] = paymentData.TransactionId; var data = BasicRequest(values); if (data != null) { result.Success = true; result.Message = "Process void success. "; result.Data = data; } else { result.Message = "Process void failed. "; } return(result); }
public IActionResult Result(PaymentResultModel paymentReceiver) { if (!TryValidateModel(paymentReceiver)) { return(BadRequest("ошибка ответа от платежной системы")); } ViewBag.Result = paymentReceiver.GetResultVerification(); return(View("Result")); }
public IActionResult Paid() { Square.Environment environment = this.appSettings.Environment == "sandbox" ? Square.Environment.Sandbox : Square.Environment.Production; // Build base client SquareClient client = new SquareClient.Builder() .Environment(environment) .AccessToken(this.appSettings.AccessToken) .Build(); string nonce = Request.Form["nonce"]; IPaymentsApi PaymentsApi = client.PaymentsApi; // Every payment you process with the SDK must have a unique idempotency key. // If you're unsure whether a particular payment succeeded, you can reattempt // it with the same idempotency key without worrying about double charging // the buyer. string uuid = this.NewIdempotencyKey(); // Monetary amounts are specified in the smallest unit of the applicable currency. // This amount is in cents. It's also hard-coded for $1.00, // which isn't very useful. Money amount = new Money.Builder() .Amount(500L) .Currency("USD") .Build(); // To learn more about splitting payments with additional recipients, // see the Payments API documentation on our [developer site] // (https://developer.squareup.com/docs/payments-api/overview). CreatePaymentRequest createPaymentRequest = new CreatePaymentRequest.Builder(nonce, uuid, amount) .Note("From Square Visit Cart App") .Build(); try { CreatePaymentResponse response = PaymentsApi.CreatePayment(createPaymentRequest); PaymentResultModel model = new PaymentResultModel { ResultMessage = "Payment complete! " + response.Payment.Note }; return(View(model)); } catch (ApiException ex) { return(View("PaymentError", new ErrorViewModel { Message = ex.Message })); } }
public PaymentResultModel ProcessPayment(BasicRequestModel requestModel) { var result = new PaymentResultModel(); var paymentData = (StripeBasicRequestModel)requestModel; var tokenId = paymentData.TokenId; if (string.IsNullOrWhiteSpace(tokenId)) { var card = new CreditCardOptions { Number = paymentData.CreditCard.cardNumber, ExpYear = paymentData.CreditCard.ExpiryYear, ExpMonth = paymentData.CreditCard.ExpiryMonth, Cvc = paymentData.CreditCard.cardCVV }; tokenId = GetTokenId(null, card).Result; } var options = new RequestOptions { ApiKey = Keys.PrivateKey }; var myCharge = new ChargeCreateOptions { Amount = (long)(paymentData.Amount * 100), Currency = paymentData.Currency.ToString().ToLower(), Description = paymentData.Description, Source = tokenId }; var chargeService = new ChargeService(); var stripeCharge = chargeService.Create(myCharge, options); result = new PaymentResultModel { Success = true, Message = "Payment success. ", Approved = stripeCharge.Status == "succeeded", AuthCode = stripeCharge.AuthorizationCode, CardToken = tokenId, FailureCode = stripeCharge.FailureCode, FailureMessage = stripeCharge.FailureMessage, TransactionId = stripeCharge.Id, Data = stripeCharge }; return(result); }
public PaymentResultModel ProcessPayment(BasicRequestModel requestModel) { PaymentResultModel result = new PaymentResultModel(); var paymentData = (HelcimBasicRequestModel)requestModel; var values = GetBasicData(paymentData); values["transactionType"] = "purchase"; values["terminalId"] = paymentData.TerminalId; values["test"] = paymentData.Test ? "1" : "0"; values["amount"] = paymentData.Amount.ToString("0.00"); if (paymentData.CreditCard != null) { var creditCard = (HelcimCreditCardRequestModel)paymentData.CreditCard; values["cardHolderName"] = creditCard.CardHolderName; values["cardNumber"] = creditCard.cardNumber; values["cardExpiry"] = creditCard.cardExpiry; values["cardCVV"] = creditCard.cardCVV; values["cardHolderAddress"] = creditCard.cardHolderAddress; values["cardHolderPostalCode"] = creditCard.cardHolderPostalCode; } else { values["cardToken"] = paymentData.CardToken; values["cardF4L4"] = paymentData.CardF4L4; values["comments"] = paymentData.Comments; } var data = BasicRequest(values); if (data != null) { result.Success = true; result.Message = "Process success. "; result.Data = data; } else { result.Message = "Process failed "; } return(result); }
public async Task <IActionResult> GetResult(string billcode, string cust_msisdn, string error_code, string merchant_code, string order_id, string payment_status, string trans_amount, string vt_transaction_id, string check_sum) { var paymentResult = new PaymentResultModel() { error_code = "00", merchant_code = merchant_code, order_id = order_id, return_url = Url.Action(action: nameof(AccountController.MyWallet), controller: "Account", values: null, protocol: Request.Scheme), return_bill_code = billcode, return_other_info = "", check_sum = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"), "00", merchant_code, order_id) }; var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger(); logger.Info("Investment with ViettelPay: billcode = " + billcode + ", cust_msisdn = " + cust_msisdn + ", error_code = " + error_code + ", merchant_code = " + merchant_code + ", order_id = " + order_id + ", payment_status = " + payment_status + ", trans_amount = " + trans_amount + ", vt_transaction_id = " + vt_transaction_id + ", check_sum = " + check_sum); var orderId = 0; var config = await _globalConfigurationService.GetValueConfig(Constants.Configuration.ProgramLocked); if (string.IsNullOrWhiteSpace(error_code) || string.IsNullOrWhiteSpace(cust_msisdn) || string.IsNullOrWhiteSpace(merchant_code) || string.IsNullOrWhiteSpace(order_id) || !Int32.TryParse(order_id, out orderId) || string.IsNullOrWhiteSpace(payment_status) || string.IsNullOrWhiteSpace(check_sum) || config.Contains("true")) { logger.Error("Investment with ViettelPay: Param Invalid"); paymentResult.error_code = "01"; paymentResult.check_sum = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"), "01", merchant_code, order_id); return(Json(paymentResult)); } var phone = cust_msisdn; var userName = "******" + phone.Remove(0, 2); var currentUser = await _userService.GetUserByName(userName); if (currentUser == null || currentUser.KVRR == null) { logger.Error("Investment with ViettelPay: Error: User Not Found: " + userName); paymentResult.error_code = "01"; paymentResult.check_sum = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"), "01", merchant_code, order_id); return(Json(paymentResult)); } if (error_code == "00" && (Int32.Parse(payment_status) == 0 || Int32.Parse(payment_status) == 1 || Int32.Parse(payment_status) == 3)) { var order = await _orderService.GetOrder(orderId); if (order == null || order.IsSuccess) { logger.Error("Investment with ViettelPay: Error: Order Not Found "); paymentResult.error_code = "01"; paymentResult.check_sum = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"), "01", merchant_code, order_id); return(Json(paymentResult)); } var checkSum = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"), order.Id.ToString(), cust_msisdn, error_code, order.MerchantCode, order.Id.ToString(), payment_status, order.TransAmount, vt_transaction_id); if (check_sum.Replace(" ", "+").Replace("=", "%3D").Replace("+", "%2B") != checkSum) { order.IsSuccess = true; await _orderService.UpdateOrder(order); logger.Error("Investment with ViettelPay: Error: check_sum invalid"); paymentResult.error_code = "01"; paymentResult.check_sum = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"), "01", merchant_code, order_id); return(Json(paymentResult)); } await _fundTransactionHistoryService.Investment(decimal.Parse(order.TransAmount), currentUser.UserName, order_id); if (order.IsInvestmentTarget) { var investmentTarget = await _investmentTargetService.GetInvestmentTarget(currentUser.Id); investmentTarget.Status = Common.EditStatus.Success; await _investmentTargetService.UpdateInvestmentTarget(investmentTarget); //if(investmentTarget.InvestmentMethod == Common.InvestmentMethod.Manually) //{ // var smsConfig = SetSMSConfig(currentUser.UserName, _configuration.GetValue<string>("SMSMessage:InvestmentTarget")); // if (investmentTarget.Frequency == Common.Frequency.OneMonth) // { // RecurringJob.AddOrUpdate<InvestmentTargetService>("InvestmentTargetSend" + currentUser.UserName, s => s.AutoSendSMSRemind(currentUser.UserName, smsConfig), Cron.Monthly(DateTime.Now.Day)); // } // else if (investmentTarget.Frequency == Common.Frequency.OneWeek) // { // RecurringJob.AddOrUpdate<InvestmentTargetService>("InvestmentTargetSend" + currentUser.UserName, s => s.AutoSendSMSRemind(currentUser.UserName, smsConfig), Cron.Weekly(DateTime.Now.DayOfWeek)); // } // else if (investmentTarget.Frequency == Common.Frequency.TwoWeek) // { // RecurringJob.AddOrUpdate<InvestmentTargetService>("InvestmentTargetSend" + currentUser.UserName, s => s.AutoSendSMSRemind(currentUser.UserName, smsConfig), Cron.DayInterval(14)); // } //} //else //{ // //} } order.IsSuccess = true; await _orderService.UpdateOrder(order); return(Json(paymentResult)); } else { logger.Error("Investment with ViettelPay: Error Code: " + error_code); paymentResult.error_code = "01"; paymentResult.check_sum = Helpers.CreateCheckSum(_configuration.GetValue <string>("PaymentSecurity:AccessCode"), _configuration.GetValue <string>("PaymentSecurity:SecretKey"), "01", merchant_code, order_id); return(Json(paymentResult)); } }
public PaymentResultModel DoPayment(PaymentModel paymentModel) { var result = new PaymentResultModel(); try { var createDate = DateTime.UtcNow; var billingInfo = new BillingInfo() { FirstName = paymentModel.FirstName, Email = paymentModel.Email, CreatedOn = createDate, Country = paymentModel.Country, Active = false, Address1 = paymentModel.Address1, Address2 = paymentModel.Address2, City = paymentModel.City, LastName = paymentModel.LastName, Phone = paymentModel.Phone, PostalCode = paymentModel.PostalCode, State = paymentModel.State, Title = paymentModel.Title, Payment = new List <Payment> { } }; var payment = new Payment { Active = false, TransactionId = string.Empty, AuthCode = string.Empty, AmountPaid = decimal.Parse(paymentModel.PaymentAmount), CardHolderName = paymentModel.CardHolderName, CardF4L4 = paymentModel.CardNumber.Substring(0, 4) + paymentModel.CardNumber.Substring(paymentModel.CardNumber.Length - 4, 4), CurrencyId = (int)Currency.CAD, PaymentDate = createDate, PaymentType = (int)PaymentType.Purchase }; billingInfo.Payment.Add(payment); var data = _billingRepository.Add(billingInfo); var request = new HelcimBasicRequestModel() { OrderNumber = "Dora-" + DateTime.Now.ToString("yyyyMMddhhmmss"), Amount = decimal.Parse(paymentModel.PaymentAmount), CreditCard = new HelcimCreditCardRequestModel() { CardHolderName = paymentModel.CardHolderName, CardNumber = paymentModel.CardNumber, CardExpiry = paymentModel.CardExpiry, CardCVV = paymentModel.CardCVV, CardHolderAddress = paymentModel.Address1, CardHolderPostalCode = paymentModel.PostalCode } }; result = (PaymentResultModel)_helcimPaymentService.ProcessPayment(request); if (result.Success && result.Approved) { billingInfo.Active = true; payment.Active = true; payment.TransactionId = result.TransactionId; payment.AuthCode = result.AuthCode; _billingRepository.Update(billingInfo); result.PaymentId = payment.Id; } } catch (Exception ex) { result.Success = false; result.Message = ex.Message; } return(result); }
public PaymentResultModel ApplyPayment(PaymentDataModel requestMdoel) { var result = new PaymentResultModel(); var userContext = _userHandler.GetUserContext(); var invoiceDetailSpecification = new InvoiceSpecification(_clinicId); invoiceDetailSpecification.AddInvoiceId(requestMdoel.InvoiceId); var invoice = _invoiceRepository.GetSingleBySpec(invoiceDetailSpecification); if (invoice != null) { var payementResult = _stripePaymentService.ProcessPayment((StripeBasicRequestModel)requestMdoel); result = payementResult; var cardLast4 = requestMdoel.CreditCard.GetCardF4L4(); result.CardLast4 = cardLast4; if (payementResult.Success && payementResult.Approved) { var payment = new Payment { ClinicId = _clinicId, Description = requestMdoel.Note, PaymentDate = DateTime.UtcNow, PaymentMethodTypeId = (int)PaymentMethodType.Visa, PaymentStatusTypeId = (int)requestMdoel.PaymentStatusType, PaymentTypeId = (int)requestMdoel.PaymentType, UpdatedBy = userContext.SiteUserId, UpdatedDateUtc = DateTime.UtcNow, Amount = requestMdoel.PaymentAmount, TransactionId = payementResult.TransactionId, AuthorizationCode = payementResult.AuthCode, CardToken = payementResult.CardToken, CardF4L4 = cardLast4 }; var invoicePayment = new InvoicePayment { AmountPaid = requestMdoel.PaymentAmount, InvoiceId = requestMdoel.InvoiceId, Payment = payment, Note = requestMdoel.Note }; _invoicePaymentRepository.AddOnly(invoicePayment); var patientCardOnFile = new PatientCardOnFile { Active = true, CardF4L4 = requestMdoel.CreditCard.GetCardF4L4(), CardToken = payementResult.CardToken, UpdatedDateUtc = DateTime.UtcNow, PatientId = invoice.PatientId, UpdatedBy = userContext.SiteUserId }; _patientCardOnFileRepository.AddOnly(patientCardOnFile); invoice.AmountPaid += requestMdoel.PaymentAmount; _invoicePaymentRepository.SaveAll(); result.AmountPaidTotal = invoice.AmountPaid; } else { result.Message = "Process payment failed. "; } } else { result.Message = "Invalid invoice Id, Please choose right one and try again. "; } return(result); }