public virtual Task <string> Verify(VerifyRequestDto input) { if (_signatureChecker.Validate(_officialOptions.Token, input.Timestamp, input.Nonce, input.Signature)) { return(Task.FromResult(input.EchoStr)); } return(Task.FromResult("非法参数。")); }
public virtual Task <string> Verify(VerifyRequestDto input) { var options = _optionsResolver.Resolve(); if (_signatureChecker.Validate(options.Token, input.Timestamp, input.Nonce, input.Signature)) { return(Task.FromResult(input.EchoStr)); } return(Task.FromResult("非法参数。")); }
public virtual async Task <string> Verify(VerifyRequestDto input) { var options = await _optionsResolver.ResolveAsync(); if (_signatureChecker.Validate(options.Token, input.Timestamp, input.Nonce, input.Signature)) { return(input.EchoStr); } return("非法参数。"); }
public async Task <IActionResult> VerifySend(VerifyRequestDto verifyRequestDto) { var model = new GateApiReturn <VerifyResponseDto> { Status = true }; //Error var factorFromRepo = await _dbFinancial.FactorRepository.GetByIdAsync(verifyRequestDto.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.GetManyAsync(p => p.Id == verifyRequestDto.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)); } } //Verify var trackingNumber = Convert.ToInt64(factorFromRepo.RefBank); var verifyResult = await _onlinePayment.VerifyAsync(trackingNumber); if (verifyResult.IsSucceed) { factorFromRepo.Status = true; factorFromRepo.IsAlreadyVerified = true; factorFromRepo.DateModified = DateTime.Now; factorFromRepo.Message = "تراکنش با موفقیت انجام شد"; _dbFinancial.FactorRepository.Update(factorFromRepo); await _dbFinancial.SaveAsync(); await _walletService .IncreaseInventoryAsync(factorFromRepo.EndPrice, factorFromRepo.EnterMoneyWalletId, true); model.Messages.Clear(); model.Messages = new string[] { "تراکنش با موفقیت انجام شد" }; model.Result = new VerifyResponseDto { 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 = verifyResult.Message; _dbFinancial.FactorRepository.Update(factorFromRepo); await _dbFinancial.SaveAsync(); errorModel.Messages.Clear(); errorModel.Messages = new string[] { verifyResult.Message }; return(BadRequest(errorModel)); } }