public async Task <IActionResult> Refund(RefundViewModel viewModel) { var result = await _onlinePayment.RefundCompletelyAsync(viewModel.TrackingNumber); // Note: This is just for development and testing. // Don't show the actual result object to clients in production environment. // Instead, show only the important information such as IsSucceed, Tracking Number and Transaction Code. return(View("RefundResult", result)); }
public async Task <IActionResult> Refund(RefundViewModel viewModel) { var result = await _onlinePayment.RefundCompletelyAsync(viewModel.TrackingNumber); return(View("RefundResult", result)); }
public async Task <IActionResult> RefundSend(RefundRequestDto refundRequestDto) { var model = new GateApiReturn <RefundResponseDto> { Status = true }; //Error var factorFromRepo = await _dbFinancial.FactorRepository.GetByIdAsync(refundRequestDto.Token); if (factorFromRepo == null) { errorModel.Messages.Clear(); errorModel.Messages = new string[] { "تراکنشی با این مشخصات یافت نشد" }; return(BadRequest(errorModel)); } if (factorFromRepo.DateModified.AddMinutes(20) < DateTime.Now) { errorModel.Messages.Clear(); errorModel.Messages = new string[] { "زمان استرداد تراکنش شما گذشته است" }; return(BadRequest(errorModel)); } if (factorFromRepo.IsAlreadyVerified) { errorModel.Messages.Clear(); errorModel.Messages = new string[] { "این تراکنش قبلا بررسی شده است" }; return(BadRequest(errorModel)); } var gateFromRepo = (await _db._GateRepository.GetAllAsync(p => p.Id == refundRequestDto.Api, null, "Wallet")).SingleOrDefault(); if (gateFromRepo == null) { errorModel.Messages.Clear(); errorModel.Messages = new string[] { "Api درگاه معتبر نمیباشد" }; return(BadRequest(errorModel)); } //var userDocuments = await _db.DocumentRepository // .GetManyAsync(p => p.Approve == 1 && p.UserId == gateFromRepo.Wallet.UserId, null, ""); //if (!userDocuments.Any()) //{ // errorModel.Messages.Clear(); // errorModel.Messages = new string[] { "مدارک کاربر صاحب درگاه تکمیل نمیباشد" }; // return BadRequest(errorModel); //} if (!gateFromRepo.IsActive) { errorModel.Messages.Clear(); errorModel.Messages = new string[] { "این درگاه غیر فعال میباشد . درصورت نیاز با پشتیبانی در تماس باید" }; return(BadRequest(errorModel)); } if (gateFromRepo.IsIp) { var currentIp = HttpContext.Connection.RemoteIpAddress.ToString(); //::1 var gateWebsiteIp = await _utilities.GetDomainIpAsync(gateFromRepo.WebsiteUrl); if (currentIp != gateWebsiteIp) { errorModel.Messages.Clear(); errorModel.Messages = new string[] { "آی پی وبسایت درخواست دهنده پرداخت معبتر نمیباشد" }; return(BadRequest(errorModel)); } } //Refund var trackingNumber = Convert.ToInt64(factorFromRepo.RefBank); var refundResult = await _onlinePayment.RefundCompletelyAsync(trackingNumber); if (refundResult.IsSucceed) { factorFromRepo.Status = false; factorFromRepo.IsAlreadyVerified = true; factorFromRepo.DateModified = DateTime.Now; factorFromRepo.Message = "تراکنش انجام شده و مبلغ استرداد شده است"; _dbFinancial.FactorRepository.Update(factorFromRepo); await _dbFinancial.SaveAcync(); model.Messages.Clear(); model.Messages = new string[] { "مبلغ تراکنش استرداد شد" }; model.Result = new RefundResponseDto { Amount = factorFromRepo.EndPrice, FactorNumber = factorFromRepo.FactorNumber, RefBank = "MPC-" + factorFromRepo.RefBank, Mobile = factorFromRepo.Mobile, Email = factorFromRepo.Email, Description = factorFromRepo.Description, CardNumber = factorFromRepo.ValidCardNumber }; return(Ok(model)); } else { factorFromRepo.IsAlreadyVerified = true; factorFromRepo.DateModified = DateTime.Now; factorFromRepo.Message = refundResult.Message; _dbFinancial.FactorRepository.Update(factorFromRepo); await _dbFinancial.SaveAcync(); errorModel.Messages.Clear(); errorModel.Messages = new string[] { refundResult.Message }; return(BadRequest(errorModel)); } }