public bool InvoiceOrder(OrderResponse invoiceResponse, ConnectorPaymentProvider connectorPaymentProvider, AuditLog4Net.Adapter.IAuditLogAdapter log)
        {
            Concentrator.Payment.Providers.AfterPayMerchant.MerchantClient client = new Concentrator.Payment.Providers.AfterPayMerchant.MerchantClient();
            try
            {
                //user credentials
                client.ClientCredentials.UserName.UserName = connectorPaymentProvider.UserName;
                client.ClientCredentials.UserName.Password = connectorPaymentProvider.Password;

                var request = new Concentrator.Payment.Providers.AfterPayMerchant.CreateInvoice();

                request.OrderNumber = invoiceResponse.OrderResponseLines.FirstOrDefault(x => x.OrderLineID.HasValue).OrderLine.Order.WebSiteOrderNumber;
                request.Portfolio   = connectorPaymentProvider.Portfolio;

                request.InvoiceDate   = invoiceResponse.InvoiceDate.Value;
                request.InvoiceNumber = invoiceResponse.InvoiceDocumentNumber;

                request.InvoiceLines = (from iLine in invoiceResponse.OrderResponseLines
                                        let quantity = iLine.Invoiced < 0 ? 0 - iLine.Invoiced : iLine.Invoiced
                                                       where iLine.OrderLineID.HasValue
                                                       select new InvoiceLine
                {
                    LineNumber = int.Parse(iLine.OrderLine.CustomerOrderLineNr), //web line number;
                    Quantity = quantity,                                         //quantity to invoice;
                    //UnitPriceInVat = iLine.OrderLine.Price.HasValue ? (decimal)iLine.OrderLine.Price.Value : 0 //unit price from invoice

                    UnitPriceInVat = (iLine.VatAmount.HasValue ? iLine.Price + iLine.VatAmount.Value : iLine.Price * (decimal)1.19) / quantity                 //unit price from invoice
                }).ToArray();

                var response = client.CreateInvoice(request);


                if (response.Success)
                {
                    return(true);
                }
                else
                {
                    log.AuditError(string.Format("Error processing AfterPay invoice for order {0} error {1}", invoiceResponse.OrderResponseID, response.ErrorMessage), "AfterPay invoice Process");
                    return(false);
                }
            }
            catch (Exception ex)
            {
                log.Error("Failed Afterpay create invoice", ex);
                return(false);
            }
            finally
            {
                client.Close();
            }
        }
 public bool CancelOrder(OrderResponse invoiceResponse, ConnectorPaymentProvider connectorPaymentProvider, AuditLog4Net.Adapter.IAuditLogAdapter log)
 {
     throw new NotImplementedException();
 }