Ejemplo n.º 1
0
        public void TestFormatFixedDiscountRowsAmountExVatAndVatPercentWithDifferentVatRatesPresent()
        {
            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .AddOrderRow(Item.OrderRow()
                                                    .SetAmountExVat(100.00M)
                                                    .SetVatPercent(25)
                                                    .SetQuantity(2))
                                       .AddOrderRow(Item.OrderRow()
                                                    .SetAmountExVat(100.00M)
                                                    .SetVatPercent(6)
                                                    .SetQuantity(1))
                                       .AddDiscount(Item.FixedDiscount()
                                                    .SetDiscountId("42")
                                                    .SetName(".SetAmountIncVat(100)")
                                                    .SetDescription("testFormatFixedDiscountRowsWithDifferentVatRatesPresent")
                                                    .SetAmountExVat(111)
                                                    .SetVatPercent(25)
                                                    .SetUnit("st"));

            List <OrderRow> newRows = new WebServiceRowFormatter <CreateOrderBuilder>(order).FormatRows();


            // 100 @25% vat = -80 excl. vat
            OrderRow newRow = newRows[2];

            Assert.That(newRow.ArticleNumber, Is.EqualTo("42"));
            Assert.That(newRow.Description, Is.EqualTo(".SetAmountIncVat(100): testFormatFixedDiscountRowsWithDifferentVatRatesPresent"));
            Assert.That(newRow.PricePerUnit, Is.EqualTo(-111.00M));
            Assert.That(newRow.VatPercent, Is.EqualTo(25));
            Assert.That(newRow.DiscountPercent, Is.EqualTo(0));
            Assert.That(newRow.NumberOfUnits, Is.EqualTo(1));
            Assert.That(newRow.Unit, Is.EqualTo("st"));
        }
Ejemplo n.º 2
0
        public void Test_CreateOrder_NO_WithAllCustomerDetailsSet_ShouldNotSetIndividualIdentity()
        {
            CreateOrderBuilder createOrderBuilder = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                                    .AddOrderRow(TestingTool.CreateExVatBasedOrderRow("1"))
                                                    .AddOrderRow(TestingTool.CreateExVatBasedOrderRow("2"))
                                                    .AddCustomerDetails(Item.IndividualCustomer()
                                                                        .SetNationalIdNumber("17054512066") // NO test individual "Ola Norrmann"
                                                                                                            // below taken from docs, not accurate
                                                                        .SetBirthDate("19460509")           //Required for individual customers in NL and DE
                                                                        .SetName("Tess", "Testson")         //Required for individual customers in NL and DE
                                                                        .SetInitials("SB")                  //Required for individual customers in NL
                                                                        .SetStreetAddress("Gatan", "23")    //Required in NL and DE
                                                                        .SetCoAddress("c/o Eriksson")       //Optional
                                                                        .SetZipCode("9999")                 //Required in NL and DE
                                                                        .SetLocality("Stan")                //Required in NL and DE
                                                                        .SetPhoneNumber("999999")           //Optional
                                                                        .SetEmail("*****@*****.**")          //Optional but desirable
                                                                        .SetIpAddress("123.123.123")        //Optional but desirable
                                                                        )
                                                    .SetCountryCode(CountryCode.NO)                         // NO
                                                    .SetOrderDate(TestingTool.DefaultTestDate)
                                                    .SetClientOrderNumber("33308")                          // NO Invoice
                                                    .SetCurrency(TestingTool.DefaultTestCurrency)
            ;
            CreateOrderEuRequest request = createOrderBuilder.UseInvoicePayment().PrepareRequest();

            Assert.IsNull(request.CreateOrderInformation.CustomerIdentity.IndividualIdentity);

            CreateOrderEuResponse order = createOrderBuilder.UseInvoicePayment().DoRequest();

            Assert.IsTrue(order.Accepted);
        }
 private void ValidateCurrency(CreateOrderBuilder order)
 {
     if (order.GetCurrency() == null)
     {
         Errors += "MISSING VALUE - Currency is required. Use SetCurrency(...).\n";
     }
 }
        public void TestAmountWithRelativeDiscountWithDifferentVatRatesPresent()
        {
            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .AddOrderRow(Item.OrderRow()
                                                    .SetAmountExVat(100.00M)
                                                    .SetVatPercent(25)
                                                    .SetQuantity(2))
                                       .AddOrderRow(Item.OrderRow()
                                                    .SetAmountExVat(100.00M)
                                                    .SetVatPercent(6)
                                                    .SetQuantity(1))
                                       .AddDiscount(Item.RelativeDiscount()
                                                    .SetDiscountPercent(25));

            // follows HostedPayment calculateRequestValues() outline:
            var formatter = new HostedRowFormatter <CreateOrderBuilder>();

            List <HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order);
            long formattedTotalAmount = formatter.GetTotalAmount();
            long formattedTotalVat    = formatter.GetTotalVat();

            Assert.That(formatRowsList.Count, Is.EqualTo(3));
            // 5000*.25 = 1250
            // 600*.25 = 150
            // matches 1400 discount
            Assert.That(formattedTotalAmount, Is.EqualTo(26700)); // 35600 - 8900 discount
            Assert.That(formattedTotalVat, Is.EqualTo(4200));     //  5600 - 1400 discount (= 10000/35600 *5600) discount
        }
        public void TestAmountWithFixedDiscountIncVatOnlyWithDifferentVatRatesPresent()
        {
            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .AddOrderRow(Item.OrderRow()
                                                    .SetAmountExVat(100.00M)
                                                    .SetVatPercent(25)
                                                    .SetQuantity(2))
                                       .AddOrderRow(Item.OrderRow()
                                                    .SetAmountExVat(100.00M)
                                                    .SetVatPercent(6)
                                                    .SetQuantity(1))
                                       .AddDiscount(Item.FixedDiscount()
                                                    .SetAmountIncVat(100.00M));

            // follows HostedPayment calculateRequestValues() outline:
            var formatter = new HostedRowFormatter <CreateOrderBuilder>();
            List <HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order);

            long formattedTotalAmount = formatter.GetTotalAmount();
            long formattedTotalVat    = formatter.GetTotalVat();

            Assert.That(formatRowsList.Count, Is.EqualTo(3));
            // 100*250/356 = 70.22 incl. 25% vat => 14.04 vat as amount
            // 100*106/356 = 29.78 incl. 6% vat => 1.69 vat as amount
            // matches 15,73 discount (= 100/356 *56) discount
            Assert.That(formattedTotalAmount, Is.EqualTo(25600)); // 35600 - 10000 discount
            Assert.That(formattedTotalVat, Is.EqualTo(4027));     //  5600 -  1573 discount (= 10000/35600 *5600) discount
        }
Ejemplo n.º 6
0
        public void TestFormatRelativeDiscountRowsWithSingleVatRatePresent()
        {
            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .AddOrderRow(Item.OrderRow()
                                                    .SetAmountExVat(100.00M)
                                                    .SetVatPercent(12)
                                                    .SetQuantity(1))
                                       .AddDiscount(Item.RelativeDiscount()
                                                    .SetDiscountId("0")
                                                    .SetName(".SetDiscountPercent(20)")
                                                    .SetDescription("TestFormatRelativeDiscountRowsWithSingleVatRatePresent")
                                                    .SetDiscountPercent(20)
                                                    .SetUnit("st"));

            List <OrderRow> newRows = new WebServiceRowFormatter <CreateOrderBuilder>(order).FormatRows();

            OrderRow newRow = newRows[1];

            Assert.That(newRow.ArticleNumber, Is.EqualTo("0"));
            Assert.That(newRow.Description, Is.EqualTo(".SetDiscountPercent(20): TestFormatRelativeDiscountRowsWithSingleVatRatePresent"));
            Assert.That(newRow.PricePerUnit, Is.EqualTo(-20.00M));
            Assert.That(newRow.VatPercent, Is.EqualTo(12));
            Assert.That(newRow.DiscountPercent, Is.EqualTo(0)); // not the same thing as in our WebPayItem...
            Assert.That(newRow.NumberOfUnits, Is.EqualTo(1));
            Assert.That(newRow.Unit, Is.EqualTo("st"));
        }
        public void ConvertOrderBuilderToOrder()
        {
            var orderBuilder = new CreateOrderBuilder(SveaConfig.GetDefaultConfig());
            var order        = WebServiceRowFormatter <CreateOrderBuilder> .ConvertToOrder(orderBuilder);

            Assert.That(order.Original, Is.SameAs(orderBuilder));
        }
Ejemplo n.º 8
0
        public void TestXmlWithCompanyCustomer()
        {
            _order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                     .AddOrderRow(Item.OrderRow()
                                  .SetAmountExVat(4)
                                  .SetVatPercent(25)
                                  .SetQuantity(1))
                     .SetCurrency(TestingTool.DefaultTestCurrency)
                     .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                     .SetCountryCode(TestingTool.DefaultTestCountryCode)
                     .AddCustomerDetails(TestingTool.CreateCompanyCustomer());

            var payment = new FakeHostedPayment(_order);

            payment.SetReturnUrl("http://myurl.se")
            .CalculateRequestValues();

            _xml = _xmlBuilder.GetXml(payment);

            const string expectedString =
                "<customer><ssn>194608142222</ssn><firstname>Tess, T Persson</firstname>" +
                "<phone>0811111111</phone><email>[email protected]</email>" +
                "<address>Testgatan</address><housenumber>1</housenumber>" +
                "<address2>c/o Eriksson, Erik</address2><zip>99999</zip>" +
                "<city>Stan</city><country>SE</country></customer>";

            Assert.That(_xml.Contains(expectedString), Is.True);
            Assert.That(_xml.Contains("<ipaddress>123.123.123.123</ipaddress>"), Is.True);
        }
Ejemplo n.º 9
0
        public void TestOrderRowXml()
        {
            _order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                     .AddOrderRow(Item.OrderRow()
                                  .SetArticleNumber("0")
                                  .SetName("Product")
                                  .SetDescription("Good product")
                                  .SetAmountExVat(4)
                                  .SetVatPercent(25)
                                  .SetQuantity(1)
                                  .SetUnit("kg"))
                     .AddCustomerDetails(Item.CompanyCustomer())
                     .SetCountryCode(TestingTool.DefaultTestCountryCode)
                     .SetCurrency(TestingTool.DefaultTestCurrency)
                     .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber);

            var payment = new FakeHostedPayment(_order);

            payment.SetPayPageLanguageCode(LanguageCode.sv)
            .SetReturnUrl("http://myurl.se")
            .CalculateRequestValues();

            _xml = _xmlBuilder.GetXml(payment);

            const string expectedString =
                "<orderrows><row><sku>0</sku><name>Product</name>" +
                "<description>Good product</description><amount>500</amount>" +
                "<vat>100</vat><quantity>1</quantity><unit>kg</unit></row></orderrows>";

            Assert.That(_xml.Contains(expectedString), Is.True);
        }
        public void TestBasicXml()
        {
            _order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                     .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                     .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                     .SetCurrency(TestingTool.DefaultTestCurrency)
                                     .AddCustomerDetails(Item.IndividualCustomer()
                                                             .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                                     .AddOrderRow(Item.OrderRow()
                                                      .SetAmountExVat(4)
                                                      .SetVatPercent(25)
                                                      .SetQuantity(1));

            var payment = new FakeHostedPayment(_order);
            payment.SetReturnUrl("http://myurl.se")
                   .CalculateRequestValues();

            _xml = _xmlBuilder.GetXml(payment);

            const string expectedXml =
                "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--Message generated by Integration package C#-->" +
                "<payment><customerrefno>33</customerrefno><currency>SEK</currency><amount>500</amount>" +
                "<vat>100</vat><lang>en</lang><returnurl>http://myurl.se</returnurl><iscompany>false</iscompany>" +
                "<customer><ssn>194605092222</ssn><country>SE</country></customer><orderrows><row><sku /><name />" +
                "<description /><amount>500</amount><vat>100</vat><quantity>1</quantity></row></orderrows>" +
                "<excludepaymentMethods /><addinvoicefee>false</addinvoicefee></payment>";

            Assert.That(_xml, Is.EqualTo(expectedXml));
        }
Ejemplo n.º 11
0
 private void ValidateCurrency(CreateOrderBuilder order)
 {
     if (order.GetCurrency() == null)
     {
         Errors += "MISSING VALUE - Currency is required. Use SetCurrency(...).\n";
     }
 }
        public void TestBuildCompanyDetails()
        {
            _order = CreateCompanyDetails(_order);

            Assert.That(_order.GetCompanyCustomer().GetCompanyName(), Is.EqualTo("TestCompagniet"));
            Assert.That(_order.GetCompanyCustomer().GetVatNumber(), Is.EqualTo("2345234"));
        }
        public void TestBuildCompanyDetails()
        {
            _order = CreateCompanyDetails(_order);

            Assert.That(_order.GetCompanyCustomer().GetCompanyName(), Is.EqualTo("TestCompagniet"));
            Assert.That(_order.GetCompanyCustomer().GetVatNumber(), Is.EqualTo("2345234"));
        }
Ejemplo n.º 14
0
        public void TestBasicXml()
        {
            _order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                     .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                     .SetCountryCode(TestingTool.DefaultTestCountryCode)
                     .SetCurrency(TestingTool.DefaultTestCurrency)
                     .AddCustomerDetails(Item.IndividualCustomer()
                                         .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                     .AddOrderRow(Item.OrderRow()
                                  .SetAmountExVat(4)
                                  .SetVatPercent(25)
                                  .SetQuantity(1));

            var payment = new FakeHostedPayment(_order);

            payment.SetReturnUrl("http://myurl.se")
            .CalculateRequestValues();

            _xml = _xmlBuilder.GetXml(payment);

            const string expectedXml =
                "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--Message generated by Integration package C#-->" +
                "<payment><customerrefno>33</customerrefno><currency>SEK</currency><amount>500</amount>" +
                "<vat>100</vat><lang>en</lang><returnurl>http://myurl.se</returnurl><iscompany>false</iscompany>" +
                "<customer><ssn>194605092222</ssn><country>SE</country></customer><orderrows><row><sku /><name />" +
                "<description /><amount>500</amount><vat>100</vat><quantity>1</quantity></row></orderrows>" +
                "<excludepaymentMethods /><addinvoicefee>false</addinvoicefee></payment>";

            Assert.That(_xml, Is.EqualTo(expectedXml));
        }
Ejemplo n.º 15
0
        public void TestFormatFixedDiscountRowsAmountExVatAndVatPercentWithSingleVatRatePresent()
        {
            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .AddOrderRow(Item.OrderRow()
                                                    .SetAmountExVat(4.0M)
                                                    .SetVatPercent(25)
                                                    .SetQuantity(1))
                                       .AddDiscount(Item.FixedDiscount()
                                                    .SetDiscountId("0")
                                                    .SetName("Tess")
                                                    .SetDescription("Tester")
                                                    .SetAmountExVat(1.0M)
                                                    .SetVatPercent(25)
                                                    .SetUnit("st"));

            List <OrderRow> newRows = new WebServiceRowFormatter <CreateOrderBuilder>(order).FormatRows();

            OrderRow newRow = newRows[1];

            Assert.That(newRow.ArticleNumber, Is.EqualTo("0"));
            Assert.That(newRow.Description, Is.EqualTo("Tess: Tester"));
            Assert.That(newRow.PricePerUnit, Is.EqualTo(-1.0M));
            Assert.That(newRow.VatPercent, Is.EqualTo(25));
            Assert.That(newRow.DiscountPercent, Is.EqualTo(0));
            Assert.That(newRow.NumberOfUnits, Is.EqualTo(1));
            Assert.That(newRow.Unit, Is.EqualTo("st"));
        }
Ejemplo n.º 16
0
        public string ValidateNlIdentity(CreateOrderBuilder order)
        {
            string errors = "";

            //Individual
            if (!order.GetIsCompanyIdentity())
            {
                if (order.GetIndividualCustomer().GetInitials() == null)
                {
                    errors +=
                        "MISSING VALUE - Initials is required for individual customers when countrycode is NL. Use SetInitials().\n";
                }
                if (order.GetIndividualCustomer().GetBirthDate() == null)
                {
                    errors +=
                        "MISSING VALUE - Birth date is required for individual customers when countrycode is NL. Use SetBirthDate().\n";
                }
                if (order.GetIndividualCustomer().GetFirstName() == null ||
                    order.GetIndividualCustomer().GetLastName() == null)
                {
                    errors +=
                        "MISSING VALUE - Name is required for individual customers when countrycode is NL. Use SetName().\n";
                }
            }

            //Company
            if (order.GetIsCompanyIdentity())
            {
                if (order.GetCompanyCustomer().GetVatNumber() == null)
                {
                    errors +=
                        "MISSING VALUE - Vat number is required for company customers when countrycode is NL. Use SetVatNumber().\n";
                }
                if (order.GetCompanyCustomer().GetCompanyName() == null)
                {
                    errors +=
                        "MISSING VALUE - Company name is required for individual customers when countrycode is NL. Use SetName().\n";
                }
            }

            //Individual and Company
            if (order.GetCustomerIdentity().Street == null || order.GetCustomerIdentity().HouseNumber == null)
            {
                errors +=
                    "MISSING VALUE - Street address and house number is required for all customers when countrycode is NL. Use SetStreetAddress().\n";
            }
            if (order.GetCustomerIdentity().Locality == null)
            {
                errors +=
                    "MISSING VALUE - Locality is required for all customers when countrycode is NL. Use SetLocality().\n";
            }
            if (order.GetCustomerIdentity().ZipCode == null)
            {
                errors +=
                    "MISSING VALUE - Zip code is required for all customers when countrycode is NL. Use SetZipCode().\n";
            }

            return(errors);
        }
Ejemplo n.º 17
0
        public void CreateOrder(int userId, Order order, OrderLumberLineItem[] lumberLineItems, OrderMiscellaneousLineItem[] miscLineItems)
        {
            var builder = new CreateOrderBuilder(userId, order,
                                                 lumberLineItems, miscLineItems);
            var transaction = new TransactionalCommand(builder.Commands);

            transaction.Execute();
        }
 public HostedPayment(CreateOrderBuilder createOrderBuilder)
 {
     CrOrderBuilder = createOrderBuilder;
     HrowBuilder = new List<HostedOrderRowBuilder>();
     Excluded = new ExcludePayments();
     ExcludedPaymentMethod = new List<string>();
     ReturnUrl = "";
 }
Ejemplo n.º 19
0
 public HostedPayment(CreateOrderBuilder createOrderBuilder)
 {
     CrOrderBuilder        = createOrderBuilder;
     HrowBuilder           = new List <HostedOrderRowBuilder>();
     Excluded              = new ExcludePayments();
     ExcludedPaymentMethod = new List <string>();
     ReturnUrl             = "";
 }
Ejemplo n.º 20
0
        public string ValidateNlIdentity(CreateOrderBuilder order)
        {
            string errors = "";
            //Individual
            if (!order.GetIsCompanyIdentity())
            {
                if (order.GetIndividualCustomer().GetInitials() == null)
                {
                    errors +=
                        "MISSING VALUE - Initials is required for individual customers when countrycode is NL. Use SetInitials().\n";
                }
                if (order.GetIndividualCustomer().GetBirthDate() == null)
                {
                    errors +=
                        "MISSING VALUE - Birth date is required for individual customers when countrycode is NL. Use SetBirthDate().\n";
                }
                if (order.GetIndividualCustomer().GetFirstName() == null ||
                    order.GetIndividualCustomer().GetLastName() == null)
                {
                    errors +=
                        "MISSING VALUE - Name is required for individual customers when countrycode is NL. Use SetName().\n";
                }
            }

            //Company
            if (order.GetIsCompanyIdentity())
            {
                if (order.GetCompanyCustomer().GetVatNumber() == null)
                {
                    errors +=
                        "MISSING VALUE - Vat number is required for company customers when countrycode is NL. Use SetVatNumber().\n";
                }
                if (order.GetCompanyCustomer().GetCompanyName() == null)
                {
                    errors +=
                        "MISSING VALUE - Company name is required for individual customers when countrycode is NL. Use SetName().\n";
                }
            }

            //Individual and Company
            if (order.GetCustomerIdentity().Street == null || order.GetCustomerIdentity().HouseNumber == null)
            {
                errors +=
                    "MISSING VALUE - Street address and house number is required for all customers when countrycode is NL. Use SetStreetAddress().\n";
            }
            if (order.GetCustomerIdentity().Locality == null)
            {
                errors +=
                    "MISSING VALUE - Locality is required for all customers when countrycode is NL. Use SetLocality().\n";
            }
            if (order.GetCustomerIdentity().ZipCode == null)
            {
                errors +=
                    "MISSING VALUE - Zip code is required for all customers when countrycode is NL. Use SetZipCode().\n";
            }

            return errors;
        }
        public void TestBuildEmptyOrder()
        {
            CreateOrderBuilder sveaRequest = _order
                                             .SetCountryCode(CountryCode.NL)
                                             .Build();

            Assert.That(sveaRequest.GetOrderRows().Count, Is.EqualTo(0));
            Assert.That(sveaRequest.GetFixedDiscountRows().Count, Is.EqualTo(0));
        }
        private void SerializeUnknownCustomer(CreateOrderBuilder order, XmlWriter xmlw)
        {
            Action <string, string> doWriteSimple = (name, value) => WriteSimpleElement(name, value, xmlw);

            xmlw.WriteStartElement("customer");
            doWriteSimple("unknowncustomer", "true");
            doWriteSimple("country", order.GetCountryCode().ToString().ToUpper());
            xmlw.WriteEndElement();
        }
Ejemplo n.º 23
0
        protected void ValidateRequiredFieldsForOrder(CreateOrderBuilder order)
        {
            if (order.GetOrderRows() != null && order.GetOrderRows().Count > 0)
            {
                return;
            }

            Errors +=
                "MISSING VALUE - OrderRows are required. Use AddOrderRow(Item.OrderRow) to get orderrow setters.\n";
        }
Ejemplo n.º 24
0
        protected void ValidateRequiredFieldsForOrder(CreateOrderBuilder order)
        {
            if (order.GetOrderRows() != null && order.GetOrderRows().Count > 0)
            {
                return;
            }

            Errors +=
                "MISSING VALUE - OrderRows are required. Use AddOrderRow(Item.OrderRow) to get orderrow setters.\n";
        }
        public void AllPricesAreSpecifiedIncVatForSingleRowIncVat()
        {
            var orderBuilder = new CreateOrderBuilder(SveaConfig.GetDefaultConfig());

            orderBuilder.AddOrderRow(Item.OrderRow().SetAmountIncVat(12.23M));
            var order = new WebServiceRowFormatter <CreateOrderBuilder> .Order(orderBuilder);

            var resultOrder = WebServiceRowFormatter <CreateOrderBuilder> .CheckIfRowsIncVat(true)(order);

            Assert.That(resultOrder.AllPricesAreSpecifiedIncVat, Is.True);
        }
        public void TestCheckOfIdentityClass()
        {
            const string expectedMessage = "MISSING VALUE - CountryCode is required. Use SetCountryCode().\n" +
                                           "MISSING VALUE - OrderRows are required. Use AddOrderRow(Item.OrderRow) to get orderrow setters.\n" +
                                           "MISSING VALUE - OrderDate is required. Use SetOrderDate().\n";

            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .AddCustomerDetails(TestingTool.CreateCompanyCustomer());

            Assert.That(_orderValidator.Validate(order), Is.EqualTo(expectedMessage));
        }
Ejemplo n.º 27
0
        public void TestFormatFixedDiscountRowsAmount()
        {
            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .AddDiscount(Item.FixedDiscount()
                                                    .SetAmountIncVat(4));

            List <HostedOrderRowBuilder> newRows = new HostedRowFormatter <CreateOrderBuilder>().FormatRows(order);
            HostedOrderRowBuilder        newRow  = newRows[0];

            Assert.That(newRow.GetAmount(), Is.EqualTo(-400L));
        }
        public void TestSucceedOnGoodValuesSe()
        {
            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .AddOrderRow(TestingTool.CreateMiniOrderRow())
                                       .AddCustomerDetails(Item.IndividualCustomer()
                                                           .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                                       .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                       .SetOrderDate(new DateTime(2012, 05, 01))
                                       .SetValidator(new VoidValidator());

            Assert.That(_orderValidator.Validate(order), Is.EqualTo(""));
        }
 private void ValidateClientOrderNumber(CreateOrderBuilder order)
 {
     if (order.GetClientOrderNumber() == null)
     {
         Errors += "MISSING VALUE - ClientOrderNumber is required. Use SetClientOrderNumber(...).\n";
     }
     else if (order.GetClientOrderNumber().Trim().Length == 0)
     {
         Errors +=
             "MISSING VALUE - ClientOrderNumber is required (has an empty value). Use SetClientOrderNumber(...).\n";
     }
 }
Ejemplo n.º 30
0
 private void ValidateClientOrderNumber(CreateOrderBuilder order)
 {
     if (order.GetClientOrderNumber() == null)
     {
         Errors += "MISSING VALUE - ClientOrderNumber is required. Use SetClientOrderNumber(...).\n";
     }
     else if (order.GetClientOrderNumber().Trim().Length == 0)
     {
         Errors +=
             "MISSING VALUE - ClientOrderNumber is required (has an empty value). Use SetClientOrderNumber(...).\n";
     }
 }
Ejemplo n.º 31
0
        public string ValidateNordicIdentity(CreateOrderBuilder order)
        {
            //check Company identity
            if (order.GetCustomerIdentity().NationalIdNumber == null)
            {
                return(order.GetIsCompanyIdentity()
                           ? "MISSING VALUE - Organisation number is required for company customers when countrycode is SE, NO, DK or FI. Use SetNationalIdNumber(...).\n"
                           : "MISSING VALUE - National number(ssn) is required for individual customers when countrycode is SE, NO, DK or FI. Use SetNationalIdNumber(...).\n");
            }

            return("");
        }
Ejemplo n.º 32
0
        public void TestGetTotalVatNegative()
        {
            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .AddOrderRow(Item.OrderRow()
                                                    .SetAmountIncVat(-100L)
                                                    .SetVatPercent(25)
                                                    .SetQuantity(2));
            var formatter = new HostedRowFormatter <CreateOrderBuilder>();
            List <HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order);

            Assert.That(formatter.GetTotalVat(), Is.EqualTo(-4000L));
        }
Ejemplo n.º 33
0
        public void TestFormatShippingFeeRowsVat()
        {
            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .AddFee(Item.ShippingFee()
                                               .SetAmountExVat(4)
                                               .SetVatPercent(25));

            List <HostedOrderRowBuilder> newRows = new HostedRowFormatter <CreateOrderBuilder>().FormatRows(order);
            HostedOrderRowBuilder        newRow  = newRows[0];

            Assert.That(newRow.GetAmount(), Is.EqualTo(500L));
            Assert.That(newRow.GetVat(), Is.EqualTo(100L));
        }
        public void TestFailOnMissingCountryCodeOnCreateOrder()
        {
            const string expectedMessage = "MISSING VALUE - CountryCode is required. Use SetCountryCode().\n" +
                                           "MISSING VALUE - OrderRows are required. Use AddOrderRow(Item.OrderRow) to get orderrow setters.\n" +
                                           "MISSING VALUE - OrderDate is required. Use SetOrderDate().\n";

            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .SetValidator(new VoidValidator())
                                       .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                       .AddCustomerDetails(Item.IndividualCustomer()
                                                           .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber));

            Assert.That(_orderValidator.Validate(order), Is.EqualTo(expectedMessage));
        }
Ejemplo n.º 35
0
        public void TestFailOnNullClientOrderNumber()
        {
            const string expectedMessage = "MISSING VALUE - CountryCode is required. Use SetCountryCode(...).\n" +
                                           "MISSING VALUE - ClientOrderNumber is required. Use SetClientOrderNumber(...).\n" +
                                           "MISSING VALUE - Currency is required. Use SetCurrency(...).\n" +
                                           "MISSING VALUE - OrderRows are required. Use AddOrderRow(Item.OrderRow) to get orderrow setters.\n";

            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                       .AddCustomerDetails(TestingTool.CreateMiniCompanyCustomer())
                                       .SetValidator(new VoidValidator())
                                       .Build();

            Assert.That(_orderValidator.Validate(order), Is.EqualTo(expectedMessage));
        }
Ejemplo n.º 36
0
        public override string Validate(CreateOrderBuilder order)
        {
            if (order.GetCustomerIdentity() == null)
            {
                Errors += "MISSING VALUE - CustomerIdentity must be set.\n";
            }

            var identityValidator = new IdentityValidator();

            switch (order.GetCountryCode())
            {
            case CountryCode.NONE:
                Errors += "MISSING VALUE - CountryCode is required. Use SetCountryCode().\n";
                break;

            case CountryCode.FI:
            case CountryCode.DK:
            case CountryCode.NO:
            case CountryCode.SE:
                Errors += identityValidator.ValidateNordicIdentity(order);
                break;

            case CountryCode.DE:
                Errors += identityValidator.ValidateDeIdentity(order);
                break;

            case CountryCode.NL:
                Errors += identityValidator.ValidateNlIdentity(order);
                break;

            default:
                Errors += "NOT VALID - Given countrycode does not exist in our system.\n";
                break;
            }

            ValidateRequiredFieldsForOrder(order);
            ValidateOrderRow(order);
            if (order.GetOrderDate() == DateTime.MinValue)
            {
                Errors += "MISSING VALUE - OrderDate is required. Use SetOrderDate().\n";
            }

            if (!String.IsNullOrEmpty(order.GetPeppolId()))
            {
                Errors += ValidatePeppolId(order);
            }

            return(Errors);
        }
Ejemplo n.º 37
0
        public static async Task <CreateOrderEuResponse> CreateInvoiceOrderWithOneOrderRow()
        {
            CreateOrderBuilder createOrderBuilder = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                                    .AddOrderRow(TestingTool.CreateExVatBasedOrderRow("1"))
                                                    .AddCustomerDetails(Item.IndividualCustomer()
                                                                        .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                                                    .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                                    .SetOrderDate(TestingTool.DefaultTestDate)
                                                    .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                                    .SetCurrency(TestingTool.DefaultTestCurrency)
            ;
            CreateOrderEuResponse order = await createOrderBuilder.UseInvoicePayment().DoRequest();

            return(order);
        }
        public override string Validate(CreateOrderBuilder order)
        {
            Errors = "";

            if (order.GetCountryCode() == CountryCode.NONE)
            {
                Errors += "MISSING VALUE - CountryCode is required. Use SetCountryCode(...).\n";
            }
            ValidateClientOrderNumber(order);
            ValidateCurrency(order);
            ValidateRequiredFieldsForOrder(order);
            ValidateOrderRow(order);

            return Errors;
        }
Ejemplo n.º 39
0
        protected void ValidateOrderRow(CreateOrderBuilder order)
        {
            foreach (OrderRowBuilder orderRow in order.GetOrderRows())
            {
                if (orderRow == null)
                {
                    Errors +=
                        "MISSING VALUES - AmountExVat, Quantity and VatPercent are required for Orderrow. Use SetAmountExVat(), SetQuantity() and SetVatPercent().\n";
                    continue;
                }

                if (orderRow.GetQuantity() <= 0)
                {
                    Errors += "MISSING VALUE - Quantity is required in Item object. Use Item.SetQuantity().\n";
                }

                if (orderRow.GetAmountExVat() == null && orderRow.GetVatPercent() == null &&
                    orderRow.GetAmountIncVat() == null)
                {
                    Errors +=
                        "MISSING VALUE - Two of the values must be set: AmountExVat(not set), AmountIncVat(not set) or VatPercent(not set) for Orderrow. Use two of: SetAmountExVat(), SetAmountIncVat or SetVatPercent().\n";
                }
                else if (orderRow.GetAmountExVat() != null && orderRow.GetVatPercent() == null &&
                         orderRow.GetAmountIncVat() == null)
                {
                    Errors +=
                        "MISSING VALUE - At least one of the values must be set in combination with AmountExVat: AmountIncVat or VatPercent for Orderrow. Use one of: SetAmountIncVat() or SetVatPercent().\n";
                }
                else if (orderRow.GetAmountExVat() == null && orderRow.GetVatPercent() == null &&
                         orderRow.GetAmountIncVat() != null)
                {
                    Errors +=
                        "MISSING VALUE - At least one of the values must be set in combination with AmountIncVat: AmountExVat or VatPercent for Orderrow. Use one of: SetAmountExVat() or SetVatPercent().\n";
                }
                else if (orderRow.GetAmountExVat() == null && orderRow.GetVatPercent() != null &&
                         orderRow.GetAmountIncVat() == null)
                {
                    Errors +=
                        "MISSING VALUE - At least one of the values must be set in combination with VatPercent: AmountIncVat or AmountExVat for Orderrow. Use one of: SetAmountExVat() or SetAmountIncVat().\n";
                }
            }
        }
        public override string Validate(CreateOrderBuilder order)
        {
            if (order.GetCustomerIdentity() == null)
            {
                Errors += "MISSING VALUE - CustomerIdentity must be set.\n";
            }

            var identityValidator = new IdentityValidator();

            switch (order.GetCountryCode())
            {
                case CountryCode.NONE:
                    Errors += "MISSING VALUE - CountryCode is required. Use SetCountryCode().\n";
                    break;
                case CountryCode.FI:
                case CountryCode.DK:
                case CountryCode.NO:
                case CountryCode.SE:
                    Errors += identityValidator.ValidateNordicIdentity(order);
                    break;
                case CountryCode.DE:
                    Errors += identityValidator.ValidateDeIdentity(order);
                    break;
                case CountryCode.NL:
                    Errors += identityValidator.ValidateNlIdentity(order);
                    break;
                default:
                    Errors += "NOT VALID - Given countrycode does not exist in our system.\n";
                    break;
            }

            ValidateRequiredFieldsForOrder(order);
            ValidateOrderRow(order);
            if (order.GetOrderDate() == DateTime.MinValue)
            {
                Errors += "MISSING VALUE - OrderDate is required. Use SetOrderDate().\n";
            }

            return Errors;
        }
Ejemplo n.º 41
0
 public WebServicePayment(CreateOrderBuilder orderBuilder)
 {
     CrOrderBuilder = orderBuilder;
 }
 public PaymentMethodPayment(CreateOrderBuilder createOrderBuilder, PaymentMethod paymentMethod)
     : base(createOrderBuilder)
 {
     _paymentMethod = paymentMethod;
 }
Ejemplo n.º 43
0
 public abstract string Validate(CreateOrderBuilder order);
        private void SerializeCustomer(CreateOrderBuilder order, XmlWriter xmlw)
        {
            if (order.GetCustomerIdentity() == null)
            {
                return;
            }

            CustomerIdentity customer;
            Action<string, string> doWriteSimple = (name, value) => WriteSimpleElement(name, value, xmlw);

            if (order.GetIsCompanyIdentity())
            {
                customer = order.GetCompanyCustomer();
            }
            else
            {
                customer = order.GetIndividualCustomer();
            }

            xmlw.WriteStartElement("customer");

            if (customer.NationalIdNumber != null) //nordic country individual customer type
            {
                doWriteSimple("ssn", customer.NationalIdNumber);
            }
            else if (!order.GetIsCompanyIdentity()) //euro country individual
            {
                doWriteSimple("ssn", customer.IndividualIdentity.BirthDate);
            }
            else if (order.GetIsCompanyIdentity() && order.GetCountryCode() != CountryCode.SE)
                //euro country, Company customer and nationalId not set
            {
                doWriteSimple("ssn", customer.CompanyIdentity.CompanyVatNumber);
            }

            //Individual customer
            if (!order.GetIsCompanyIdentity())
            {
                var individualIdentity = customer.IndividualIdentity;
                if (individualIdentity != null)
                {
                    doWriteSimple("firstname", individualIdentity.FirstName);
                    doWriteSimple("lastname", individualIdentity.LastName);
                    doWriteSimple("initials", individualIdentity.Initials);
                }
            }
            else //Company customer
            {
                doWriteSimple("firstname", customer.FullName);
            }

            //Address
            doWriteSimple("phone", customer.PhoneNumber);
            doWriteSimple("email", customer.Email);
            doWriteSimple("address", customer.Street);
            doWriteSimple("housenumber", customer.HouseNumber);
            doWriteSimple("address2", customer.CoAddress);
            doWriteSimple("zip", customer.ZipCode);
            doWriteSimple("city", customer.Locality);

            if (order.GetCountryCode() != CountryCode.NONE)
            {
                doWriteSimple("country", order.GetCountryCode().ToString().ToUpper());
            }

            xmlw.WriteEndElement();

            doWriteSimple("ipaddress",
                          order.GetIsCompanyIdentity()
                              ? order.GetCompanyCustomer().GetIpAddress()
                              : order.GetIndividualCustomer().GetIpAddress());
        }
        public void TestOrderRowXml()
        {
            _order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                     .AddOrderRow(Item.OrderRow()
                                                      .SetArticleNumber("0")
                                                      .SetName("Product")
                                                      .SetDescription("Good product")
                                                      .SetAmountExVat(4)
                                                      .SetVatPercent(25)
                                                      .SetQuantity(1)
                                                      .SetUnit("kg"))
                                     .AddCustomerDetails(Item.CompanyCustomer())
                                     .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                     .SetCurrency(TestingTool.DefaultTestCurrency)
                                     .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber);

            var payment = new FakeHostedPayment(_order);
            payment.SetPayPageLanguageCode(LanguageCode.sv)
                   .SetReturnUrl("http://myurl.se")
                   .CalculateRequestValues();

            _xml = _xmlBuilder.GetXml(payment);

            const string expectedString =
                "<orderrows><row><sku>0</sku><name>Product</name>" +
                "<description>Good product</description><amount>500</amount>" +
                "<vat>100</vat><quantity>1</quantity><unit>kg</unit></row></orderrows>";

            Assert.That(_xml.Contains(expectedString), Is.True);
        }
Ejemplo n.º 46
0
        public string ValidateNordicIdentity(CreateOrderBuilder order)
        {
            //check Company identity
            if (order.GetCustomerIdentity().NationalIdNumber == null)
            {
                return order.GetIsCompanyIdentity()
                           ? "MISSING VALUE - Organisation number is required for company customers when countrycode is SE, NO, DK or FI. Use SetNationalIdNumber(...).\n"
                           : "MISSING VALUE - National number(ssn) is required for individual customers when countrycode is SE, NO, DK or FI. Use SetNationalIdNumber(...).\n";
            }

            return "";
        }
 public FakeHostedPayment(CreateOrderBuilder createOrderBuilder)
     : base(createOrderBuilder)
 {
 }
 public DirectPayment(CreateOrderBuilder orderBuilder)
     : base(orderBuilder)
 {
 }
 private CreateOrderBuilder CreateCompanyDetails(CreateOrderBuilder orderBuilder)
 {
     return orderBuilder.AddCustomerDetails(TestingTool.CreateMiniCompanyCustomer());
 }
 public PaymentPlanPayment(CreateOrderBuilder orderBuilder)
     : base(orderBuilder)
 {
     PayType = PaymentType.PAYMENTPLAN;
 }
 private static CreateOrderBuilder CreateTestCustomerIdentity(CreateOrderBuilder orderBuilder)
 {
     return orderBuilder.AddCustomerDetails(TestingTool.CreateIndividualCustomer());
 }
        public void TestCustomerIdentity()
        {
            _order = CreateTestCustomerIdentity(_order);

            Assert.That(_order.GetIndividualCustomer().GetInitials(), Is.EqualTo("SB"));
            Assert.That(_order.GetIndividualCustomer().NationalIdNumber, Is.EqualTo("194605092222"));
            Assert.That(_order.GetIndividualCustomer().GetFirstName(), Is.EqualTo("Tess"));
            Assert.That(_order.GetIndividualCustomer().GetLastName(), Is.EqualTo("Persson"));
            Assert.That(_order.GetIndividualCustomer().GetBirthDate(), Is.EqualTo("19231212"));
            Assert.That(_order.GetIndividualCustomer().Email, Is.EqualTo("*****@*****.**"));
            Assert.That(_order.GetIndividualCustomer().PhoneNumber, Is.EqualTo("0811111111"));
            Assert.That(_order.GetIndividualCustomer().IpAddress, Is.EqualTo("123.123.123"));
            Assert.That(_order.GetIndividualCustomer().Street, Is.EqualTo("Testgatan"));
            Assert.That(_order.GetIndividualCustomer().HouseNumber, Is.EqualTo("1"));
            Assert.That(_order.GetIndividualCustomer().CoAddress, Is.EqualTo("c/o Eriksson, Erik"));
            Assert.That(_order.GetIndividualCustomer().ZipCode, Is.EqualTo("99999"));
            Assert.That(_order.GetIndividualCustomer().Locality, Is.EqualTo("Stan"));
        }
 public InvoicePayment(CreateOrderBuilder orderBuilder)
     : base(orderBuilder)
 {
     PayType = PaymentType.INVOICE;
 }
 public PayPagePayment(CreateOrderBuilder orderBuilder)
     : base(orderBuilder)
 {
     _includedPaymentMethod = new List<string>();
 }
        public void TestXmlCancelUrl()
        {
            _order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                     .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                     .SetCurrency(TestingTool.DefaultTestCurrency)
                                     .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                     .AddOrderRow(TestingTool.CreateMiniOrderRow())
                                     .AddCustomerDetails(Item.CompanyCustomer());

            var payment = new FakeHostedPayment(_order);
            payment.SetCancelUrl("http://www.cancel.com")
                   .SetReturnUrl("http://myurl.se")
                   .CalculateRequestValues();

            _xml = _xmlBuilder.GetXml(payment);

            Assert.That(_xml.Contains("<cancelurl>http://www.cancel.com</cancelurl>"), Is.True);
        }
 public void SetUp()
 {
     _order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig());
     _order.SetValidator(new VoidValidator());
 }
        public void TestXmlWithIndividualCustomer()
        {
            _order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                     .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                     .SetCurrency(TestingTool.DefaultTestCurrency)
                                     .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                     .AddOrderRow(Item.OrderRow()
                                                      .SetAmountExVat(4)
                                                      .SetVatPercent(25)
                                                      .SetQuantity(1))
                                     .AddCustomerDetails(Item.IndividualCustomer()
                                                             .SetName("Julius", "Caesar")
                                                             .SetInitials("JS")
                                                             .SetNationalIdNumber("666666")
                                                             .SetPhoneNumber("999999")
                                                             .SetEmail("*****@*****.**")
                                                             .SetIpAddress("123.123.123.123")
                                                             .SetStreetAddress("Gatan", "23")
                                                             .SetCoAddress("c/o Eriksson")
                                                             .SetZipCode("9999")
                                                             .SetLocality("Stan"));

            var payment = new FakeHostedPayment(_order);
            payment.SetReturnUrl("http://myurl.se")
                   .CalculateRequestValues();

            _xml = _xmlBuilder.GetXml(payment);

            const string expectedString =
                "<customer><ssn>666666</ssn><firstname>Julius</firstname>" +
                "<lastname>Caesar</lastname><initials>JS</initials>" +
                "<phone>999999</phone><email>[email protected]</email>" +
                "<address>Gatan</address><housenumber>23</housenumber>" +
                "<address2>c/o Eriksson</address2><zip>9999</zip>" +
                "<city>Stan</city><country>SE</country></customer>";

            Assert.That(_xml.Contains(expectedString), Is.True);
            Assert.That(_xml.Contains("<ipaddress>123.123.123.123</ipaddress>"), Is.True);
        }
 public CardPayment(CreateOrderBuilder orderBuilder)
     : base(orderBuilder)
 {
 }
        public void TestXmlWithCompanyCustomer()
        {
            _order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                     .AddOrderRow(Item.OrderRow()
                                                      .SetAmountExVat(4)
                                                      .SetVatPercent(25)
                                                      .SetQuantity(1))
                                     .SetCurrency(TestingTool.DefaultTestCurrency)
                                     .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                     .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                     .AddCustomerDetails(TestingTool.CreateCompanyCustomer());

            var payment = new FakeHostedPayment(_order);
            payment.SetReturnUrl("http://myurl.se")
                   .CalculateRequestValues();

            _xml = _xmlBuilder.GetXml(payment);

            const string expectedString =
                "<customer><ssn>164608142222</ssn><firstname>Tess, T Persson</firstname>" +
                "<phone>0811111111</phone><email>[email protected]</email>" +
                "<address>Testgatan</address><housenumber>1</housenumber>" +
                "<address2>c/o Eriksson, Erik</address2><zip>99999</zip>" +
                "<city>Stan</city><country>SE</country></customer>";

            Assert.That(_xml.Contains(expectedString), Is.True);
            Assert.That(_xml.Contains("<ipaddress>123.123.123.123</ipaddress>"), Is.True);
        }