public async Task Can_Charge_Customer_with_idempotency_key()
        {
            var customer = await CreateCustomerAsync();

            var idempotencyKey = Guid.NewGuid();

            var chargeInput = new ChargeStripeCustomer
            {
                Amount      = 100,
                Customer    = customer.Id,
                Currency    = "usd",
                Description = "Test Charge Customer",
            };

            var charge = await gateway.PostAsync(chargeInput, idempotencyKey.ToString());

            charge.PrintDump();

            Assert.That(charge.Id, Is.Not.Null);
            Assert.That(charge.Customer, Is.EqualTo(customer.Id));
            Assert.That(charge.Amount, Is.EqualTo(100));
            Assert.That(charge.Source.Last4, Is.EqualTo("4242"));
            Assert.That(charge.Paid, Is.True);

            var charge2 = gateway.Post(chargeInput, idempotencyKey.ToString());

            Assert.That(charge.Id, Is.Not.Null);
            Assert.That(charge2.Id, Is.EqualTo(charge.Id)); //with idempotency key should not create additional charge
            Assert.That(charge.Customer, Is.EqualTo(customer.Id));
            Assert.That(charge.Amount, Is.EqualTo(100));
            Assert.That(charge.Source.Last4, Is.EqualTo("4242"));
            Assert.That(charge.Paid, Is.True);
        }
Exemplo n.º 2
0
        public void Can_Charge_Customer_without_idempotency_key()
        {
            var customer = CreateCustomer();

            var chargeInput = new ChargeStripeCustomer
            {
                Amount      = 100,
                Customer    = customer.Id,
                Currency    = "usd",
                Description = "Test Charge Customer",
            };

            var charge = gateway.Post(chargeInput);

            charge.PrintDump();

            Assert.That(charge.Id, Is.Not.Null);
            Assert.That(charge.Customer, Is.EqualTo(customer.Id));
            Assert.That(charge.Amount, Is.EqualTo(100));
            Assert.That(charge.Source.Last4, Is.EqualTo("4242"));
            Assert.That(charge.Paid, Is.True);

            var charge2 = gateway.Post(chargeInput);

            Assert.That(charge.Id, Is.Not.Null);
            Assert.That(charge2.Id, Is.Not.EqualTo(charge.Id)); //without idempotency key should create additional charge
            Assert.That(charge.Customer, Is.EqualTo(customer.Id));
            Assert.That(charge.Amount, Is.EqualTo(100));
            Assert.That(charge.Source.Last4, Is.EqualTo("4242"));
            Assert.That(charge.Paid, Is.True);
        }
Exemplo n.º 3
0
        public void Can_Charge_Customer_without_idempotency_key()
        {
            var customer = CreateCustomer();

            var chargeInput = new ChargeStripeCustomer
            {
                Amount = 100,
                Customer = customer.Id,
                Currency = "usd",
                Description = "Test Charge Customer",
            };

            var charge = gateway.Post(chargeInput);

            charge.PrintDump();

            Assert.That(charge.Id, Is.Not.Null);
            Assert.That(charge.Customer, Is.EqualTo(customer.Id));
            Assert.That(charge.Amount, Is.EqualTo(100));
            Assert.That(charge.Card.Last4, Is.EqualTo("4242"));
            Assert.That(charge.Paid, Is.True);

            var charge2 = gateway.Post(chargeInput);
            Assert.That(charge.Id, Is.Not.Null);
            Assert.That(charge2.Id, Is.Not.EqualTo(charge.Id)); //without idempotency key should create additional charge
            Assert.That(charge.Customer, Is.EqualTo(customer.Id));
            Assert.That(charge.Amount, Is.EqualTo(100));
            Assert.That(charge.Card.Last4, Is.EqualTo("4242"));
            Assert.That(charge.Paid, Is.True);
        }
        public async Task Can_Charge_Customer_with_idempotency_key()
        {
            var customer = await CreateCustomerAsync();
            var idempotencyKey = Guid.NewGuid();

            var chargeInput = new ChargeStripeCustomer
            {
                Amount = 100,
                Customer = customer.Id,
                Currency = "usd",
                Description = "Test Charge Customer",
            };

            var charge = await gateway.PostAsync(chargeInput, idempotencyKey.ToString());

            charge.PrintDump();

            Assert.That(charge.Id, Is.Not.Null);
            Assert.That(charge.Customer, Is.EqualTo(customer.Id));
            Assert.That(charge.Amount, Is.EqualTo(100));
            Assert.That(charge.Source.Last4, Is.EqualTo("4242"));
            Assert.That(charge.Paid, Is.True);

            var charge2 = gateway.Post(chargeInput, idempotencyKey.ToString());
            Assert.That(charge.Id, Is.Not.Null);
            Assert.That(charge2.Id, Is.EqualTo(charge.Id)); //with idempotency key should not create additional charge
            Assert.That(charge.Customer, Is.EqualTo(customer.Id));
            Assert.That(charge.Amount, Is.EqualTo(100));
            Assert.That(charge.Source.Last4, Is.EqualTo("4242"));
            Assert.That(charge.Paid, Is.True);
        }