public MerchantOrder.Builder GetOrder(int orderId)
        {
            CustomerInformation customerInformation = new CustomerInformation.Builder()
                                                      .WithTelephoneNumber("0204971111")
                                                      .WithInitials("J.D.")
                                                      .WithGender(Gender.M)
                                                      .WithEmailAddress("*****@*****.**")
                                                      .WithDateOfBirth("20-03-1987")
                                                      .Build();

            Address shippingDetails = new Address.Builder()
                                      .WithFirstName("John")
                                      .WithLastName("Doe")
                                      .WithStreet("Street")
                                      .WithHouseNumber("5")
                                      .WithHouseNumberAddition("a")
                                      .WithPostalCode("1234AB")
                                      .WithCity("Haarlem")
                                      .WithCountryCode(CountryCode.NL)
                                      .Build();

            Address billingDetails = new Address.Builder()
                                     .WithFirstName("John")
                                     .WithLastName("Doe")
                                     .WithStreet("Factuurstraat")
                                     .WithHouseNumber("5")
                                     .WithHouseNumberAddition("a")
                                     .WithPostalCode("1234AB")
                                     .WithCity("Haarlem")
                                     .WithCountryCode(CountryCode.NL)
                                     .Build();

            MerchantOrder.Builder order = new MerchantOrder.Builder()
                                          .WithMerchantOrderId(Convert.ToString(orderId))
                                          .WithDescription("An example description")
                                          .WithCustomerInformation(customerInformation)
                                          .WithShippingDetail(shippingDetails)
                                          .WithBillingDetail(billingDetails)
                                          .WithLanguage(Language.NL)
                                          .WithMerchantReturnURL(RETURN_URL)
                                          .WithInitiatingParty("LIGHTSPEED");

            return(order);
        }
        public MerchantOrder GetOrder()
        {
            Money itemAmount = Money.FromDecimal(Currency.EUR, 99.99m);
            Money itemTax    = Money.FromDecimal(Currency.EUR, 4.99m);

            OrderItem orderItem = new OrderItem.Builder()
                                  .WithId("1")
                                  .WithQuantity(1)
                                  .WithName("Test product")
                                  .WithDescription("Description")
                                  .WithAmount(Money.FromDecimal(Currency.EUR, 10m))
                                  .WithTax(Money.FromDecimal(Currency.EUR, 1m))
                                  .WithItemCategory(ItemCategory.PHYSICAL)
                                  .WithVatCategory(VatCategory.LOW)
                                  .Build();

            CustomerInformation customerInformation = new CustomerInformation.Builder()
                                                      .WithTelephoneNumber("0204971111")
                                                      .WithInitials("J.D.")
                                                      .WithGender(Gender.M)
                                                      .WithEmailAddress("*****@*****.**")
                                                      .WithDateOfBirth("20-03-1987")
                                                      .Build();

            Address shippingDetails = new Address.Builder()
                                      .WithFirstName("John")
                                      .WithLastName("Doe")
                                      .WithStreet("Street")
                                      .WithHouseNumber("5")
                                      .WithHouseNumberAddition("a")
                                      .WithPostalCode("1234AB")
                                      .WithCity("Haarlem")
                                      .WithCountryCode(CountryCode.NL)
                                      .Build();

            Address billingDetails = new Address.Builder()
                                     .WithFirstName("John")
                                     .WithLastName("Doe")
                                     .WithStreet("Factuurstraat")
                                     .WithHouseNumber("5")
                                     .WithHouseNumberAddition("a")
                                     .WithPostalCode("1234AB")
                                     .WithCity("Haarlem")
                                     .WithCountryCode(CountryCode.NL)
                                     .Build();

            MerchantOrder order = new MerchantOrder.Builder()
                                  .WithMerchantOrderId("ORDID123")
                                  .WithDescription("An example description")
                                  .WithOrderItems(new List <OrderItem>(new OrderItem[] { orderItem }))
                                  .WithAmount(Money.FromDecimal(Currency.EUR, 99.99m))
                                  .WithCustomerInformation(customerInformation)
                                  .WithShippingDetail(shippingDetails)
                                  .WithBillingDetail(billingDetails)
                                  .WithLanguage(Language.NL)
                                  .WithMerchantReturnURL(RETURN_URL)
                                  .WithPaymentBrand(PaymentBrand.IDEAL)
                                  .WithPaymentBrandForce(PaymentBrandForce.FORCE_ONCE)
                                  .WithInitiatingParty("LIGHTSPEED")
                                  .Build();

            return(order);
        }
        /// <summary>
        /// Post process payment (used by payment gateways that require redirecting to a third-party URL)
        /// </summary>
        /// <param name="postProcessPaymentRequest">Payment info required for an order processing</param>
        public void PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest)
        {
            var order    = postProcessPaymentRequest.Order;
            var customer = order.Customer;


            var rokOrderItems = new List <OmniKassa.Model.Order.OrderItem>();

            foreach (var orderItem in order.OrderItems)
            {
                decimal amount = Decimal.Round(orderItem.UnitPriceInclTax, 2);
                decimal tax    = Decimal.Round(orderItem.UnitPriceInclTax - orderItem.UnitPriceExclTax, 2);

                var rokOrderItem = new OmniKassa.Model.Order.OrderItem.Builder()
                                   .WithId(orderItem.OrderItemGuid.ToString())
                                   .WithQuantity(orderItem.Quantity)
                                   .WithName(orderItem.Product.Name)
                                   .WithDescription(orderItem.Product.ShortDescription)
                                   .WithAmount(Money.FromDecimal(OmniKassa.Model.Enums.Currency.EUR, amount))
                                   .WithTax(Money.FromDecimal(OmniKassa.Model.Enums.Currency.EUR, tax))
                                   .WithItemCategory(ItemCategory.PHYSICAL)
                                   .WithVatCategory(VatCategory.LOW)
                                   .Build();

                rokOrderItems.Add(rokOrderItem);
            }

            CustomerInformation rokCustomerInformation = new CustomerInformation.Builder()
                                                         .WithTelephoneNumber(customer.BillingAddress.PhoneNumber)
                                                         .WithEmailAddress(customer.Email)
                                                         .Build();

            Address rokShippingDetails = new Address.Builder()
                                         .WithFirstName(customer.ShippingAddress.FirstName)
                                         .WithLastName(customer.ShippingAddress.LastName)
                                         .WithStreet(customer.ShippingAddress.Address1)
                                         .WithHouseNumber(customer.ShippingAddress.Address2)
                                         .WithPostalCode(customer.ShippingAddress.ZipPostalCode)
                                         .WithCity(customer.ShippingAddress.City)
                                         .WithCountryCode(CountryCode.NL)
                                         .Build();

            Address rokBillingDetails = new Address.Builder()
                                        .WithFirstName(customer.BillingAddress.FirstName)
                                        .WithLastName(customer.BillingAddress.LastName)
                                        .WithStreet(customer.BillingAddress.Address1)
                                        .WithHouseNumber(customer.BillingAddress.Address2)
                                        .WithPostalCode(customer.BillingAddress.ZipPostalCode)
                                        .WithCity(customer.BillingAddress.City)
                                        .WithCountryCode(CountryCode.NL)
                                        .Build();

            var rokOrder = new MerchantOrder.Builder()
                           .WithMerchantOrderId(order.CustomOrderNumber)
                           .WithDescription(order.CustomOrderNumber)
                           .WithOrderItems(rokOrderItems)
                           .WithAmount(Money.FromDecimal(OmniKassa.Model.Enums.Currency.EUR, Decimal.Round(order.OrderTotal, 2)))
                           .WithCustomerInformation(rokCustomerInformation)
                           .WithShippingDetail(rokShippingDetails)
                           .WithBillingDetail(rokBillingDetails)
                           .WithLanguage(Language.NL)
                           .WithMerchantReturnURL(GetReturnUrl())
                           .Build();

            String redirectUrl = _raboOmniKassaPaymentManager.AnnounceMerchantOrder(rokOrder);

            Debug.WriteLine(redirectUrl);

            _httpContextAccessor.HttpContext.Response.Redirect(redirectUrl);
        }