Ejemplo n.º 1
0
        public async Task <Guid> AddDonation(LiqPayCheckoutDto liqPayCheckoutDto)
        {
            var liqPayData      = new LiqPayData(liqPayCheckoutDto.Data);
            var liqPaySignature = new LiqPaySignature(liqPayData, _liqPayKeys.PrivateKey);

            if (!await liqPaySignature.Validate(liqPayCheckoutDto.Signature))
            {
                throw new InvalidArgumentException(nameof(liqPayCheckoutDto.Signature),
                                                   "Invalid signature");
            }

            var donation = liqPayData.Donation;

            var commissionModel = liqPayData.Commission;

            donation.Amount -= commissionModel.ReceiverCommission;

            donation.ProjectId = liqPayCheckoutDto.ProjectId;
            donation.SocietyId = liqPayCheckoutDto.SocietyId;
            donation.DonatorId = liqPayCheckoutDto.DonatorId;

            _unitOfWork.Repository <Donation>().Add(donation);
            await _unitOfWork.SaveChangesAsync();

            return(donation.Id);
        }
Ejemplo n.º 2
0
        public async Task <LiqPayCheckoutDto> GetLiqPayCheckoutModel(
            LiqPayCheckoutModelRequestDto liqPayCheckoutModelRequest)
        {
            var mapper = new MapperConfiguration(mapOpts =>
            {
                mapOpts.CreateMap <LiqPayCheckoutModelRequestDto, LiqPayCheckout>()
                .ForMember(c => c.Amount, opts => opts.MapFrom(dto => dto.DonationAmount));
            }).CreateMapper();

            var liqPayCheckout = mapper.Map <LiqPayCheckout>(liqPayCheckoutModelRequest);

            liqPayCheckout.PublicKey = _liqPayKeys.PublicKey;
            var liqPayData      = new LiqPayData(liqPayCheckout);
            var liqPaySignature = new LiqPaySignature(liqPayData, _liqPayKeys.PrivateKey);

            return(new LiqPayCheckoutDto()
            {
                Data = liqPayData.Base64Data,
                Signature = await liqPaySignature.GetSignature()
            });
        }
Ejemplo n.º 3
0
        public async Task TopUpBalance(LiqPayCheckoutDto liqPayCheckoutDto)
        {
            var liqPayData      = new LiqPayData(liqPayCheckoutDto.Data);
            var liqPaySignature = new LiqPaySignature(liqPayData, _liqPayInfo.PrivateKey);

            if (!await liqPaySignature.Validate(liqPayCheckoutDto.Signature))
            {
                throw new InvalidArgumentException(nameof(liqPayCheckoutDto.Signature),
                                                   "Invalid signature");
            }

            var user = await _unitOfWork.Repository <UserDetails>()
                       .Get(i => i.UserDetailsId == liqPayCheckoutDto.MemberId);

            if (user == null)
            {
                throw new NotFoundException($"User with id {liqPayCheckoutDto.MemberId}");
            }
            var donation = liqPayData.Donation;

            var commissionModel = liqPayData.Commission;

            donation.Amount -= commissionModel.ReceiverCommission;
            user.Balance    += donation.Amount;

            var paymentHistory = new PaymentHistory()
            {
                Description    = PaymentDescription.TopUp,
                Saldo          = donation.Amount,
                UserId         = (Guid)liqPayCheckoutDto.MemberId,
                CurrentBalance = user.Balance
            };

            _unitOfWork.Repository <UserDetails>().Update(user);
            _unitOfWork.Repository <PaymentHistory>().Add(paymentHistory);
            await _unitOfWork.SaveChangesAsync();
        }