public async Task _01CreateNewDonationFromSameDonorAsync()
        {
            DonationDB donation = new DonationDB()
            {
                Currency      = "USD",
                Date          = DateTime.Now,
                Fee           = 0.15M,
                Gross         = 2.0M,
                TransactionId = "2",
                Donor         = CreateDonorWithLondonAddress()
            };

            await AddAndAssertAsync(donation).ConfigureAwait(false);
        }
        public async Task _04CreateNewDonationFromOtherDonorWithSameAddressAsync()
        {
            DonationDB donation = new DonationDB()
            {
                Currency      = "USD",
                Date          = DateTime.Now,
                Fee           = 0.15M,
                Gross         = 5.0M,
                TransactionId = "5",
                Donor         = CreateDonorWithAmsterdamAddress()
            };

            await AddAndAssertAsync(donation).ConfigureAwait(false);
        }
        public async Task _05CreateNewDonationFromDonorWithNewAddress_OldAddressIsUsedAsync()
        {
            DonorDB    donor    = CreateDonorWithLondonAddress();
            DonationDB donation = new DonationDB()
            {
                Currency      = "USD",
                Date          = DateTime.Now,
                Fee           = 0.15M,
                Gross         = 6.0M,
                TransactionId = "6",
                Donor         = donor
            };

            await AddAndAssertAsync(donation).ConfigureAwait(false);
        }
        public async Task _02CreateNewDonationFromChangedDonorWithUnmodifiedAddressAsync()
        {
            DonorDB donor = CreateDonorWithLondonAddress();

            donor.IsVerified = true;
            DonationDB donation = new DonationDB()
            {
                Currency      = "USD",
                Date          = DateTime.Now,
                Fee           = 0.15M,
                Gross         = 3.0M,
                TransactionId = "3",
                Donor         = donor
            };

            await AddAndAssertAsync(donation).ConfigureAwait(false);
        }
        public async Task _06CreateNewDonationFromDonorWithChangedButExistAddress_OldAddressIsNotUsedAsync()
        {
            DonorDB donor = CreateDonorWithAmsterdamAddress();

            donor.Address = CreateLondonAddress();
            DonationDB donation = new DonationDB()
            {
                Currency      = "USD",
                Date          = DateTime.Now,
                Fee           = 0.15M,
                Gross         = 7.0M,
                TransactionId = "7",
                Donor         = donor
            };

            await AddAndAssertAsync(donation).ConfigureAwait(false);
        }
示例#6
0
        /// <summary>
        /// Asynchronously processes the PayPal notification.
        /// </summary>
        /// <param name="payPalRequestString"></param>
        private async Task ProcessPayPalRequestAsync(string payPalRequestString)
        {
            // check that Payment_status=Completed
            // check that Txn_id has not been previously processed
            // check that Receiver_email is your Primary PayPal email
            // check that Payment_amount/Payment_currency are correct
            // process payment
            NameValueCollection payPalArguments = HttpUtility.ParseQueryString(payPalRequestString);

            if (payPalArguments[IPN.Payment.PAYMENT_STATUS] != IPN.Payment.Status.COMPLETED ||
                _appSettings[AppSettings.OUR_PAYPAL_EMAIL] != payPalArguments[IPN.Transaction.RECEIVER_EMAIL] ||
                await _donationRepository.ContainsAsync(payPalArguments[IPN.Transaction.TXN_ID]).ConfigureAwait(false))
            {
                return;
            }

            Donation   donation   = FillDonation(payPalArguments);
            DonationDB donationDB = _mapper.Map <DonationDB>(donation);
            await _donationRepository.AddAsync(donationDB).ConfigureAwait(false);
        }
        private async Task AddAndAssertAsync(DonationDB donation)
        {
            await _donationRepository.AddAsync(donation).ConfigureAwait(false);

            Assert.IsTrue(await _donationRepository.ContainsAsync(donation.TransactionId).ConfigureAwait(false));
        }