void MakeCardPayment()//OrderRowBuilder orderRowBuilder, CountryCode countryCode = CountryCode.SE, string clientOrderNumber = "33")
        {
            PaymentForm form = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                               .AddOrderRow(TestingTool.CreateExVatBasedOrderRow())
                               .AddFee(TestingTool.CreateExVatBasedShippingFee())
                               .AddFee(TestingTool.CreateExVatBasedInvoiceFee())
                               .AddDiscount(TestingTool.CreateRelativeDiscount())
                               .AddCustomerDetails(TestingTool.CreateMiniCompanyCustomer())
                               .SetCountryCode(TestingTool.DefaultTestCountryCode)
                               .SetOrderDate(TestingTool.DefaultTestDate)
                               .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                               .SetCurrency(TestingTool.DefaultTestCurrency)
                               .UsePayPageCardOnly()
                               .SetReturnUrl("http://myurl.se")
                               .GetPaymentForm();

            //Card payment

            /*PaymentForm form = WebpayConnection.CreateOrder()
             *      .AddOrderRow(orderRowBuilder) //required
             *      .SetCountryCode(countryCode)  // required
             *      .SetClientOrderNumber(clientOrderNumber)
             *      .SetOrderDate(DateTime.Now)
             *      .UsePaymentMethod(PaymentMethod.SVEACARDPAY)
             *      .SetReturnUrl("http://myurl.se") //Required
             *      .SetCallbackUrl("http://myurl.se")
             *      .SetCancelUrl("http://myurl.se")
             *      .GetPaymentForm();*/
        }
Exemple #2
0
        public void TestInvoiceForIndividualFromSe()
        {
            var response = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                           .AddOrderRow(TestingTool.CreateExVatBasedOrderRow())
                           .AddCustomerDetails(
                Item.IndividualCustomer().SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                           .SetCountryCode(TestingTool.DefaultTestCountryCode)
                           .SetOrderDate(TestingTool.DefaultTestDate)
                           .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                           .SetCurrency(TestingTool.DefaultTestCurrency)
                           .UseInvoicePayment()
                           .DoRequest();

            Assert.IsTrue(response.Accepted);
            Assert.IsTrue(response.CreateOrderResult.SveaWillBuyOrder);
            Assert.That(response.CreateOrderResult.Amount, Is.EqualTo(250.00));
            Assert.That(response.CreateOrderResult.OrderType, Is.EqualTo("Invoice"));

            //CustomerIdentity
            Assert.That(response.CreateOrderResult.CustomerIdentity.NationalIdNumber, Is.EqualTo("194605092222"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.CountryCode, Is.EqualTo("SE"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.CustomerType, Is.EqualTo(CustomerType.Individual));
            Assert.That(response.CreateOrderResult.CustomerIdentity.FullName, Is.EqualTo("Persson Tess T"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.Street, Is.EqualTo("Testgatan 1"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.CoAddress, Is.EqualTo("c/o Eriksson, Erik"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.ZipCode, Is.EqualTo("99999"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.Locality, Is.EqualTo("Stan"));
        }
Exemple #3
0
        public void TestFormatShippingFeeRowsZero()
        {
            CreateOrderEuResponse response = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                             .AddOrderRow(Item.OrderRow()
                                                          .SetArticleNumber("1")
                                                          .SetQuantity(2)
                                                          .SetAmountExVat(10)
                                                          .SetDescription("Specification")
                                                          .SetName("Prod")
                                                          .SetVatPercent(0)
                                                          .SetDiscountPercent(0))
                                             .AddFee(Item.ShippingFee()
                                                     .SetShippingId("0")
                                                     .SetName("Tess")
                                                     .SetDescription("Tester")
                                                     .SetAmountExVat(0)
                                                     .SetVatPercent(0)
                                                     .SetUnit("st"))
                                             .AddCustomerDetails(Item.IndividualCustomer()
                                                                 .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                                             .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                             .SetOrderDate(TestingTool.DefaultTestDate)
                                             .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                             .SetCurrency(TestingTool.DefaultTestCurrency)
                                             .SetCustomerReference(TestingTool.DefaultTestCustomerReferenceNumber)
                                             .UseInvoicePayment()
                                             .DoRequest();

            Assert.That(response.ResultCode, Is.EqualTo(0));
            Assert.That(response.Accepted, Is.True);
        }
Exemple #4
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"));
        }
Exemple #5
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"));
        }
Exemple #6
0
        public void TestCardPaymentSpecificXml()
        {
            _xml = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                   .SetCountryCode(TestingTool.DefaultTestCountryCode)
                   .SetCurrency(TestingTool.DefaultTestCurrency)
                   .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                   .AddOrderRow(TestingTool.CreateMiniOrderRow())
                   .AddCustomerDetails(Item.CompanyCustomer())
                   .UsePayPageCardOnly()
                   .SetReturnUrl(
                "https://webpaypaymentgatewaystage.svea.com/Webpayconnection/admin/merchantresponSetest.xhtm")
                   .GetPaymentForm()
                   .GetXmlMessage();

            const string expectedString =
                "<excludepaymentMethods><exclude>PAYPAL</exclude>" +
                "<exclude>DBNORDEASE</exclude><exclude>DBSEBSE</exclude>" +
                "<exclude>DBSEBFTGSE</exclude><exclude>DBSHBSE</exclude>" +
                "<exclude>DBSWEDBANKSE</exclude><exclude>BANKAXESS</exclude>" +
                "<exclude>SVEAINVOICESE</exclude>" +
                "<exclude>SVEAINVOICEEU_SE</exclude>" +
                "<exclude>SVEASPLITSE</exclude><exclude>SVEASPLITEU_SE</exclude>" +
                "<exclude>SVEAINVOICEEU_DE</exclude>" +
                "<exclude>SVEASPLITEU_DE</exclude>" +
                "<exclude>SVEAINVOICEEU_DK</exclude>" +
                "<exclude>SVEASPLITEU_DK</exclude>" +
                "<exclude>SVEAINVOICEEU_FI</exclude><exclude>SVEASPLITEU_FI</exclude>" +
                "<exclude>SVEAINVOICEEU_NL</exclude><exclude>SVEASPLITEU_NL</exclude>" +
                "<exclude>SVEAINVOICEEU_NO</exclude><exclude>SVEASPLITEU_NO</exclude>" +
                "</excludepaymentMethods>";

            Assert.That(_xml.Contains(expectedString), Is.True);
        }
Exemple #7
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);
        }
        public void TestPayPagePaymentIncludePaymentMethodEmpty()
        {
            PaymentForm form = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                               .AddOrderRow(TestingTool.CreateExVatBasedOrderRow())
                               .AddDiscount(TestingTool.CreateRelativeDiscount())
                               .AddCustomerDetails(
                Item.IndividualCustomer().SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                               .SetCountryCode(TestingTool.DefaultTestCountryCode)
                               .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                               .SetOrderDate(TestingTool.DefaultTestDate)
                               .SetCurrency(TestingTool.DefaultTestCurrency)
                               .UsePayPage()
                               .IncludePaymentMethod()
                               .SetReturnUrl("http://myurl.se")
                               .GetPaymentForm();

            string xml           = form.GetXmlMessage();
            string paymentMethod = xml.Substring(
                xml.IndexOf("SVEAINVOICESE", System.StringComparison.InvariantCulture), "SVEAINVOICESE".Length);
            string paymentMethod2 = xml.Substring(
                xml.IndexOf("DBSWEDBANKSE", System.StringComparison.InvariantCulture), "DBSWEDBANKSE".Length);

            Assert.That(paymentMethod, Is.EqualTo(InvoiceType.INVOICESE.Value));
            Assert.That(paymentMethod2, Is.EqualTo(PaymentMethod.SWEDBANKSE.Value));
        }
Exemple #9
0
        public void TestCloseOrder()
        {
            CreateOrderEuResponse response = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                             .AddOrderRow(TestingTool.CreateExVatBasedOrderRow())
                                             .AddCustomerDetails(Item.IndividualCustomer()
                                                                 .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                                             .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                             .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                             .SetOrderDate(TestingTool.DefaultTestDate)
                                             .SetCurrency(TestingTool.DefaultTestCurrency)
                                             .UseInvoicePayment()
                                             .DoRequest();

            Assert.That(response.ResultCode, Is.EqualTo(0));
            Assert.That(response.Accepted, Is.True);

            CancelOrderResponse closeResponse = WebpayAdmin.CancelOrder(SveaConfig.GetDefaultConfig())
                                                .SetOrderId(response.CreateOrderResult.SveaOrderId)
                                                .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                                .CancelInvoiceOrder()
                                                .DoRequest();

            Assert.That(closeResponse.ResultCode, Is.EqualTo(0));
            Assert.That(response.Accepted, Is.True);
        }
        public void TestIncludePaymentMethod()
        {
            var includedPaymentMethod = new List <PaymentMethod>
            {
                PaymentMethod.KORTCERT,
                PaymentMethod.SKRILL,
                PaymentMethod.INVOICE,
                PaymentMethod.PAYMENTPLAN,
                PaymentMethod.SWEDBANKSE,
                PaymentMethod.SHBSE,
                PaymentMethod.SEBFTGSE,
                PaymentMethod.SEBSE,
                PaymentMethod.NORDEASE
            };

            PayPagePayment payPagePayment = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                            .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                            .UsePayPage()
                                            .IncludePaymentMethod(includedPaymentMethod);

            Assert.That(payPagePayment.GetExcludedPaymentMethod().Count, Is.EqualTo(15));
            Assert.That(payPagePayment.GetExcludedPaymentMethod()[0], Is.EqualTo("SVEAINVOICESE"));
            Assert.That(payPagePayment.GetExcludedPaymentMethod()[1], Is.EqualTo("SVEASPLITSE"));
            Assert.That(payPagePayment.GetExcludedPaymentMethod()[2], Is.EqualTo("SVEAINVOICEEU_DE"));
            Assert.That(payPagePayment.GetExcludedPaymentMethod()[3], Is.EqualTo("SVEASPLITEU_DE"));
            Assert.That(payPagePayment.GetExcludedPaymentMethod()[4], Is.EqualTo("SVEAINVOICEEU_DK"));
            Assert.That(payPagePayment.GetExcludedPaymentMethod()[12], Is.EqualTo("SVEACARDPAY"));
            Assert.That(payPagePayment.GetExcludedPaymentMethod()[13], Is.EqualTo("PAYPAL"));
            Assert.That(payPagePayment.GetExcludedPaymentMethod()[14], Is.EqualTo("BANKAXESS"));
        }
        public void TestPayPagePaymentIncludePaymentMethod()
        {
            var paymentMethods = new List <PaymentMethod> {
                PaymentMethod.KORTCERT, PaymentMethod.SKRILL
            };
            PaymentForm form = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                               .AddOrderRow(TestingTool.CreateExVatBasedOrderRow())
                               .AddDiscount(TestingTool.CreateRelativeDiscount())
                               .AddCustomerDetails(
                Item.IndividualCustomer().SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                               .SetCountryCode(TestingTool.DefaultTestCountryCode)
                               .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                               .SetOrderDate(TestingTool.DefaultTestDate)
                               .SetCurrency(TestingTool.DefaultTestCurrency)
                               .UsePayPage()
                               .IncludePaymentMethod(paymentMethods)
                               .SetReturnUrl("http://myurl.se")
                               .GetPaymentForm();

            string xml           = form.GetXmlMessage();
            string paymentMethod = xml.Substring(
                xml.IndexOf("SVEAINVOICESE", System.StringComparison.InvariantCulture), "SVEAINVOICESE".Length);

            //check to see if the first value is one of the excluded ones
            Assert.That(paymentMethod, Is.EqualTo(InvoiceType.INVOICESE.Value));
        }
        public void TestSetExcludePaymentMethod()
        {
            var excludePaymentMethod = new List <PaymentMethod> {
                PaymentMethod.INVOICE, PaymentMethod.NORDEASE
            };

            PayPagePayment payPagePayment = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                            .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                            .UsePayPage()
                                            .ExcludePaymentMethod(excludePaymentMethod);

            var expectedValues = new List <string>
            {
                InvoiceType.INVOICESE.Value,
                InvoiceType.INVOICEEUSE.Value,
                InvoiceType.INVOICENO.Value,
                InvoiceType.INVOICEDK.Value,
                InvoiceType.INVOICEFI.Value,
                InvoiceType.INVOICENL.Value,
                InvoiceType.INVOICEDE.Value,
                PaymentMethod.NORDEASE.Value,
            };

            Assert.That(payPagePayment.GetExcludedPaymentMethod(), Is.EqualTo(expectedValues));
        }
        public void ConvertOrderBuilderToOrder()
        {
            var orderBuilder = new CreateOrderBuilder(SveaConfig.GetDefaultConfig());
            var order        = WebServiceRowFormatter <CreateOrderBuilder> .ConvertToOrder(orderBuilder);

            Assert.That(order.Original, Is.SameAs(orderBuilder));
        }
        public void TestRecur()
        {
            const string customerRefNo       = "Customer reference number or client order number";
            const string subscriptionId      = "The subscription id";
            const long   amount              = 66600L;
            var          hostedActionRequest = new HostedAdmin(SveaConfig.GetDefaultConfig(), CountryCode.SE)
                                               .Recur(new Recur(
                                                          customerRefNo: customerRefNo,
                                                          subscriptionId: subscriptionId,
                                                          currency: Currency.SEK,
                                                          amount: amount
                                                          ));

            HostedAdminRequest hostedAdminRequest = hostedActionRequest.PrepareRequest();

            Assert.That(hostedAdminRequest.MessageXmlDocument.SelectSingleNode("/recur/currency").InnerText, Is.EqualTo(Currency.SEK.ToString()));
            Assert.That(hostedAdminRequest.MessageXmlDocument.SelectSingleNode("/recur/amount").InnerText, Is.EqualTo(amount + ""));
            Assert.That(hostedAdminRequest.MessageXmlDocument.SelectSingleNode("/recur/customerrefno").InnerText, Is.EqualTo(customerRefNo));
            Assert.That(hostedAdminRequest.MessageXmlDocument.SelectSingleNode("/recur/subscriptionid").InnerText, Is.EqualTo(subscriptionId));

            var hostedAdminResponse = hostedActionRequest.DoRequest <HostedAdminResponse>();

            //Call to non-existing subscription
            Assert.That(hostedAdminResponse.MessageXmlDocument.SelectSingleNode("/response/statuscode").InnerText, Is.EqualTo("322"));
        }
Exemple #15
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);
        }
        public void TestPayPagePaymentWithSetPaymentMethodSveaCardPayPF()
        {
            PaymentForm form = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                               .AddOrderRow(TestingTool.CreateExVatBasedOrderRow())
                               .AddDiscount(TestingTool.CreateRelativeDiscount())
                               .AddCustomerDetails(Item.IndividualCustomer()
                                                   .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                               .SetCountryCode(TestingTool.DefaultTestCountryCode)
                               .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                               .SetOrderDate(TestingTool.DefaultTestDate)
                               .SetCurrency(TestingTool.DefaultTestCurrency)
                               .SetCustomerReference(TestingTool.DefaultTestCustomerReferenceNumber)
                               .UsePaymentMethod(PaymentMethod.SVEACARDPAY_PF)
                               .SetReturnUrl("http://myurl.se")
                               .GetPaymentForm();


            string       xml         = form.GetXmlMessage();
            const string expectedXml =
                "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<!--Message generated by Integration package C#--><payment><paymentmethod>SVEACARDPAY_PF</paymentmethod><customerrefno>33</customerrefno><currency>SEK</currency><amount>12500</amount><vat>2500</vat><lang>en</lang><returnurl>http://myurl.se</returnurl><iscompany>false</iscompany><customer><unknowncustomer>true</unknowncustomer><country>SE</country></customer><orderrows><row><sku>1</sku><name>Prod</name><description>Specification</description><amount>12500</amount><vat>2500</vat><quantity>2</quantity><unit>st</unit></row><row><sku>1</sku><name>Relative</name><description>RelativeDiscount</description><amount>-12500</amount><vat>-2500</vat><quantity>1</quantity><unit>st</unit></row></orderrows><excludepaymentMethods /><addinvoicefee>false</addinvoicefee></payment>";

            Assert.That(xml, Is.EqualTo(expectedXml));

            string base64Payment = form.GetXmlMessageBase64();
            string html          = Base64Util.DecodeBase64String(base64Payment);

            Assert.That(html.Contains("<paymentmethod>SVEACARDPAY_PF</paymentmethod>"), Is.True);
        }
Exemple #17
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 TestDirectPaymentSpecificXml()
        {
            _xml = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                   .SetCountryCode(TestingTool.DefaultTestCountryCode)
                   .SetCurrency(TestingTool.DefaultTestCurrency)
                   .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                   .AddOrderRow(TestingTool.CreateMiniOrderRow())
                   .AddCustomerDetails(Item.CompanyCustomer())
                   .UsePayPageDirectBankOnly()
                   .SetReturnUrl(
                "https://test.sveaekonomi.se/Webpayconnection/admin/merchantresponSetest.xhtm")
                   .GetPaymentForm()
                   .GetXmlMessage();

            const string expectedString =
                "<excludepaymentMethods><exclude>BANKAXESS</exclude>" +
                "<exclude>PAYPAL</exclude><exclude>KORTCERT</exclude" +
                "><exclude>SKRILL</exclude><exclude>SVEAINVOICESE</exclude>" +
                "<exclude>SVEAINVOICEEU_SE</exclude><exclude>SVEASPLITSE</exclude>" +
                "<exclude>SVEASPLITEU_SE</exclude>" +
                "<exclude>SVEAINVOICEEU_DE</exclude><exclude>SVEASPLITEU_DE</exclude>" +
                "<exclude>SVEAINVOICEEU_DK</exclude><exclude>SVEASPLITEU_DK</exclude>" +
                "<exclude>SVEAINVOICEEU_FI</exclude><exclude>SVEASPLITEU_FI</exclude>" +
                "<exclude>SVEAINVOICEEU_NL</exclude><exclude>SVEASPLITEU_NL</exclude>" +
                "<exclude>SVEAINVOICEEU_NO</exclude><exclude>SVEASPLITEU_NO</exclude>" +
                "</excludepaymentMethods>";

            Assert.That(_xml.Contains(expectedString), Is.True);
        }
Exemple #19
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));
        }
Exemple #20
0
        public void TestInvoiceRequestObjectForCustomerIdentityCompanyFromNl()
        {
            CreateOrderEuRequest request = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                           .AddOrderRow(TestingTool.CreateExVatBasedOrderRow("1"))
                                           .AddCustomerDetails(TestingTool.CreateCompanyCustomer(CountryCode.NL))
                                           .AddOrderRow(TestingTool.CreateExVatBasedOrderRow("2"))
                                           .SetCountryCode(CountryCode.NL)
                                           .SetOrderDate(TestingTool.DefaultTestDate)
                                           .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                           .SetCurrency(TestingTool.DefaultTestCurrency)
                                           .UseInvoicePayment()
                                           .PrepareRequest();

            Assert.That(request.CreateOrderInformation.CustomerIdentity.Email, Is.EqualTo("*****@*****.**"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.PhoneNumber, Is.EqualTo("999999"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.IpAddress, Is.EqualTo("123.123.123.123"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.FullName, Is.EqualTo("Svea bakkerij 123"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.Street, Is.EqualTo("broodstraat"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.CoAddress, Is.EqualTo("236"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.ZipCode, Is.EqualTo("1111 CD"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.HouseNumber, Is.EqualTo("1"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.Locality, Is.EqualTo("BARENDRECHT"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.CountryCode, Is.EqualTo(CountryCode.NL.ToString().ToUpper()));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.CustomerType, Is.EqualTo(CustomerType.Company));
        }
Exemple #21
0
        public void TestDeliverPaymentPlanOrderResult()
        {
            GetPaymentPlanParamsEuResponse paymentPlanParamResponse = WebpayConnection.GetPaymentPlanParams(SveaConfig.GetDefaultConfig())
                                                                      .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                                                      .DoRequest();
            long code = paymentPlanParamResponse.CampaignCodes[0].CampaignCode;

            CreateOrderEuResponse createOrderResponse = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                                        .AddOrderRow(TestingTool.CreatePaymentPlanOrderRow())
                                                        .AddCustomerDetails(
                TestingTool.CreateIndividualCustomer())
                                                        .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                                        .SetCustomerReference(
                TestingTool.DefaultTestClientOrderNumber)
                                                        .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                                        .SetOrderDate(TestingTool.DefaultTestDate)
                                                        .SetCurrency(TestingTool.DefaultTestCurrency)
                                                        .UsePaymentPlanPayment(code)
                                                        .DoRequest();

            DeliverOrderEuResponse deliverOrderResponse = WebpayConnection.DeliverOrder(SveaConfig.GetDefaultConfig())
                                                          .AddOrderRow(TestingTool.CreateExVatBasedOrderRow())
                                                          .SetOrderId(
                createOrderResponse.CreateOrderResult
                .SveaOrderId)
                                                          .SetNumberOfCreditDays(1)
                                                          .SetInvoiceDistributionType(
                InvoiceDistributionType.POST)
                                                          .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                                          .DeliverPaymentPlanOrder()
                                                          .DoRequest();

            Assert.That(deliverOrderResponse.Accepted, Is.True);
        }
Exemple #22
0
        public void TestInvoiceWithFixedDiscountWithUneavenAmount()
        {
            CreateOrderEuRequest request = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                           .AddOrderRow(Item.OrderRow()
                                                        .SetArticleNumber("1")
                                                        .SetQuantity(1)
                                                        .SetAmountExVat(240.00M)
                                                        .SetDescription("CD")
                                                        .SetVatPercent(25))
                                           .AddDiscount(Item.FixedDiscount()
                                                        .SetAmountIncVat(101.50M)
                                                        .SetDescription("FixedDiscount")
                                                        .SetDiscountId("1"))
                                           .AddCustomerDetails(Item.IndividualCustomer()
                                                               .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                                           .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                           .SetCustomerReference(TestingTool.DefaultTestCustomerReferenceNumber)
                                           .SetOrderDate(TestingTool.DefaultTestDate)
                                           .SetCurrency(TestingTool.DefaultTestCurrency)
                                           .UseInvoicePayment()
                                           .PrepareRequest();

            Assert.That(request.CreateOrderInformation.OrderRows[1].ArticleNumber, Is.EqualTo("1"));
            Assert.That(request.CreateOrderInformation.OrderRows[1].Description, Is.EqualTo("FixedDiscount (25%)"));
            Assert.That(request.CreateOrderInformation.OrderRows[1].PricePerUnit, Is.EqualTo(-81.2));
            Assert.That(request.CreateOrderInformation.OrderRows[1].NumberOfUnits, Is.EqualTo(1));
            Assert.That(request.CreateOrderInformation.OrderRows[1].Unit, Is.EqualTo(""));
            Assert.That(request.CreateOrderInformation.OrderRows[1].VatPercent, Is.EqualTo(25));
            Assert.That(request.CreateOrderInformation.OrderRows[1].DiscountPercent, Is.EqualTo(0));
        }
Exemple #23
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"));
        }
Exemple #24
0
        public void TestInvoiceRequestObjectWithCreateOrderInformation()
        {
            CreateOrderEuRequest request = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                           .AddOrderRow(TestingTool.CreateExVatBasedOrderRow("1"))
                                           .AddOrderRow(TestingTool.CreateExVatBasedOrderRow("2"))
                                           .AddFee(TestingTool.CreateExVatBasedShippingFee())
                                           .AddCustomerDetails(TestingTool.CreateIndividualCustomer())
                                           .AddCustomerDetails(Item.CompanyCustomer()
                                                               .SetNationalIdNumber(TestingTool.DefaultTestCompanyNationalIdNumber)
                                                               .SetAddressSelector("ad33")
                                                               .SetEmail("*****@*****.**")
                                                               .SetPhoneNumber("999999")
                                                               .SetIpAddress("123.123.123")
                                                               .SetStreetAddress("Gatan", "23")
                                                               .SetCoAddress("c/o Eriksson")
                                                               .SetZipCode("2222")
                                                               .SetLocality("Stan"))
                                           .SetCustomerReference(TestingTool.DefaultTestCustomerReferenceNumber)
                                           .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                           .SetOrderDate(TestingTool.DefaultTestDate)
                                           .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                           .SetCurrency(TestingTool.DefaultTestCurrency)
                                           .UseInvoicePayment()
                                           .PrepareRequest();

            Assert.That(request.CreateOrderInformation.OrderDate, Is.EqualTo(TestingTool.DefaultTestDate));
            Assert.That(request.CreateOrderInformation.ClientOrderNumber, Is.EqualTo("33"));
            Assert.That(request.CreateOrderInformation.OrderType, Is.EqualTo(OrderType.Invoice));
            Assert.That(request.CreateOrderInformation.CustomerReference, Is.EqualTo("ref33"));
            Assert.That(request.CreateOrderInformation.AddressSelector, Is.EqualTo("ad33"));
        }
Exemple #25
0
        public void TestInvoiceRequestUsingForNewVatFunctionCornerCase()
        {
            var useInvoicePayment = WebpayConnection
                                    .CreateOrder(SveaConfig.GetDefaultConfig())
                                    .AddOrderRow(Item
                                                 .OrderRow()
                                                 .SetArticleNumber("1")
                                                 .SetName("Prod")
                                                 .SetDescription("Specification")
                                                 .SetAmountIncVat(100.00M)
                                                 .SetQuantity(1)
                                                 .SetUnit("st")
                                                 .SetVatPercent(24)
                                                 .SetVatDiscount(0))
                                    .AddCustomerDetails(Item
                                                        .IndividualCustomer()
                                                        .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                                    .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                    .SetOrderDate(TestingTool.DefaultTestDate)
                                    .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                    .SetCurrency(TestingTool.DefaultTestCurrency)
                                    .SetCustomerReference(TestingTool.DefaultTestCustomerReferenceNumber)
                                    .UseInvoicePayment();
            var createOrderEuRequest       = useInvoicePayment.PrepareRequest();
            CreateOrderEuResponse response = useInvoicePayment
                                             .DoRequest();

            Assert.That(response.ResultCode, Is.EqualTo(0));
            Assert.That(response.Accepted, Is.True);
            Assert.That(response.CreateOrderResult.Amount, Is.EqualTo(100.00M)); // Old version gives 100.01
        }
Exemple #26
0
        public void TestInvoiceRequestObjectForCustomerIdentityIndividualFromNl()
        {
            CreateOrderEuRequest request = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                           .AddOrderRow(TestingTool.CreateExVatBasedOrderRow("1"))
                                           .AddCustomerDetails(TestingTool.CreateIndividualCustomer(CountryCode.NL))
                                           .AddOrderRow(TestingTool.CreateExVatBasedOrderRow("2"))
                                           .SetCountryCode(CountryCode.NL)
                                           .SetOrderDate(TestingTool.DefaultTestDate)
                                           .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                           .SetCurrency(TestingTool.DefaultTestCurrency)
                                           .UseInvoicePayment()
                                           .PrepareRequest();

            Assert.That(request.CreateOrderInformation.CustomerIdentity.Email, Is.EqualTo("*****@*****.**"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.PhoneNumber, Is.EqualTo("999999"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.IpAddress, Is.EqualTo("123.123.123.123"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.FullName, Is.EqualTo("Sneider Boasman"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.Street, Is.EqualTo("Gate"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.CoAddress, Is.EqualTo("138"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.ZipCode, Is.EqualTo("1102 HG"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.HouseNumber, Is.EqualTo("42"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.Locality, Is.EqualTo("BARENDRECHT"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.CountryCode, Is.EqualTo(CountryCode.NL.ToString().ToUpper()));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.CustomerType, Is.EqualTo(CustomerType.Individual));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.IndividualIdentity.FirstName, Is.EqualTo("Sneider"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.IndividualIdentity.LastName, Is.EqualTo("Boasman"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.IndividualIdentity.Initials, Is.EqualTo("SB"));
            Assert.That(request.CreateOrderInformation.CustomerIdentity.IndividualIdentity.BirthDate, Is.EqualTo("19550307"));
        }
Exemple #27
0
        public void TestInvoiceForIndividualFromNl()
        {
            CreateOrderEuResponse response = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                             .AddOrderRow(TestingTool.CreateOrderRowNl())
                                             .AddCustomerDetails(TestingTool.CreateIndividualCustomer(CountryCode.NL))
                                             .SetCountryCode(CountryCode.NL)
                                             .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                             .SetOrderDate(TestingTool.DefaultTestDate)
                                             .SetCurrency(Currency.EUR)
                                             .UseInvoicePayment()
                                             .DoRequest();

            Assert.That(response.ResultCode, Is.EqualTo(0));
            Assert.That(response.Accepted, Is.True);
            Assert.That(response.CreateOrderResult.SveaWillBuyOrder, Is.True);
            Assert.That(response.CreateOrderResult.Amount, Is.EqualTo(212.00));
            Assert.That(response.CreateOrderResult.OrderType, Is.EqualTo("Invoice"));

            //Returns hardcoded values that slightly differ from input
            Assert.That(response.CreateOrderResult.CustomerIdentity.Email, Is.EqualTo("*****@*****.**"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.IpAddress, Is.Null);
            Assert.That(response.CreateOrderResult.CustomerIdentity.CountryCode, Is.EqualTo("NL"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.HouseNumber, Is.EqualTo("42"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.CustomerType, Is.EqualTo(CustomerType.Individual));
            Assert.That(response.CreateOrderResult.CustomerIdentity.PhoneNumber, Is.EqualTo("999999"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.FullName, Is.EqualTo("Sneider Boasman"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.Street, Is.EqualTo("Gate"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.CoAddress, Is.Null);
            Assert.That(response.CreateOrderResult.CustomerIdentity.ZipCode, Is.EqualTo("1102 HG"));
            Assert.That(response.CreateOrderResult.CustomerIdentity.Locality, Is.EqualTo("BARENDRECHT"));
        }
        public void TestFailOnMissingBirthDateForDeOrder()
        {
            const string expectedMessage =
                "MISSING VALUE - Birth date is required for individual customers when countrycode is DE. Use SetBirthDate().\n" +
                "MISSING VALUE - OrderRows are required. Use AddOrderRow(Item.OrderRow) to get orderrow setters.\n";

            var exception = Assert.Throws <SveaWebPayValidationException>(() =>
            {
                var builder = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig());

                var customer = Item.IndividualCustomer()
                               .SetName("Tess", "Testson")
                               .SetStreetAddress("Gatan", "23")
                               .SetZipCode("9999")
                               .SetLocality("Stan");

                var order = builder
                            .SetCountryCode(CountryCode.DE)
                            .SetOrderDate(new DateTime(2005, 08, 15, 15, 52, 1))
                            .AddCustomerDetails(customer)
                            .UseInvoicePayment();

                order.PrepareRequest();
            });

            Assert.That(exception.Message, Is.EqualTo(expectedMessage));
        }
Exemple #29
0
        public void TestCalculationWithTwelvePercentVat()
        {
            CreateOrderEuResponse response = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                                             .AddOrderRow(Item.OrderRow()
                                                          .SetArticleNumber("1")
                                                          .SetQuantity(1)
                                                          .SetAmountExVat(45M)
                                                          .SetDescription("Specification")
                                                          .SetName("Prod")
                                                          .SetVatPercent(12M)
                                                          .SetDiscountPercent(5))
                                             .AddCustomerDetails(
                Item.IndividualCustomer()
                .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                                             .SetCountryCode(TestingTool.DefaultTestCountryCode)
                                             .SetOrderDate(TestingTool.DefaultTestDate)
                                             .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                                             .SetCurrency(TestingTool.DefaultTestCurrency)
                                             .UseInvoicePayment()
                                             .DoRequest();


            Assert.That(response.Accepted, Is.True);
            Assert.That(response.CreateOrderResult.Amount, Is.EqualTo(47.88m));
        }
        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
        }