/// <summary>
        /// Generates the invoice.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns></returns>
        public PaymentResponse GenerateInvoice(PayfortInvoiceRequestModel request)
        {
            //Declarations
            var errInfo = new PaymentResponse();

            errInfo.BookingRefNumber  = request.BookingReference;
            request.RequestExpiryDate = DateTimeOffset.UtcNow.AddDays(24);
            errInfo.RequestExpiryDate = request.RequestExpiryDate;
            if (request != null)
            {
                //1. Generate SHA256 Signature
                request.Signature = request.GenerateInvoiceSHA256Signature();

                //2. Generate Json Request Parameter
                var jsonRequest = request.GetInvoiceRequestParams();

                //3. Send Request
                return(InvoiceProcessor.Invoice(jsonRequest, request.Url, errInfo));
            }
            else
            {
                return(ExceptionHandler.ExceptionHandler.GetPayfortExceptionResponseInfo(errInfo, PaymentCommandType.AUTHORIZATION));
            }
        }