public ResultDto Payment(PaymentVo model) { var result = new ResultDto(); if (!ModelState.IsValid) { result.Code = Param_Error; foreach (string error in ModelState.Values.SelectMany(v => v.Errors.Select(b => b.ErrorMessage))) { result.Message += error + Environment.NewLine; } return(result); } return(new OrderComponent().Payment(model)); }
public ResultDto Payment(PaymentVo model) { var result = new ResultDto(); var userAccountId = model.UserId; var userAccountDac = new UserAccountDAC(); var userWalletDac = new UserWalletDAC(); var mallDac = new MallPaymentOrderDAC(); var account = userAccountDac.GetById(userAccountId); if (account == null) { result.Code = AccountNotFound; result.Message = Resource.AccountNotFound; return(result); } if (!PasswordHasher.VerifyHashedPassword(account.Pin, model.PIN)) { result.Code = PINError; result.Message = Resource.PINError; return(result); } var wallet = userWalletDac.GetByCryptoCode(userAccountId, "FIII"); if (wallet == null) { result.Code = WalletNotFound; result.Message = Resource.WalletNotFound; return(result); } if (wallet.Balance < model.CryptoAmount) { result.Code = InsufficientBalance; result.Message = Resource.InsufficientBalance; return(result); } var extisorder = mallDac.GetByOrderId(model.OrderId); if (extisorder != null && extisorder.Status == OrderStatus.Completed) { result.Code = OrderExist; result.Message = Resource.OrderExist; return(result); } try { if (extisorder == null) { var order = new MallPaymentOrder { Id = Guid.NewGuid(), CryptoAmount = model.CryptoAmount, ExpiredTime = DateTime.UtcNow.AddMinutes(30), OrderId = model.OrderId, Remark = "", Status = OrderStatus.Pending, Timestamp = DateTime.UtcNow, UserAccountId = userAccountId, RefundTradeNo = string.Empty, TradeNo = string.Empty }; mallDac.Create(order); RabbitMQSender.SendMessage("PaymentGatewayPayOrder", order); } else { RabbitMQSender.SendMessage("PaymentGatewayPayOrder", extisorder); } result.Message = Resource.Success; return(result); } catch (Exception exception) { _log.Error(exception); result.Code = PaymentError; result.Message = Resource.PaymentError; return(result); } }