/// <summary>
        /// Voids a payment
        /// </summary>
        /// <param name="voidPaymentRequest">Request</param>
        /// <returns>Result</returns>
        public VoidPaymentResult Void(VoidPaymentRequest voidPaymentRequest)
        {
            VoidPaymentResult result = new VoidPaymentResult();

            if (ePayPaymentSettings.UseRemoteInterface)
            {
                int epayresponse = -1;

                try
                {
                    dk.ditonlinebetalingssystem.ssl.Payment payment = new dk.ditonlinebetalingssystem.ssl.Payment();
                    payment.delete(Convert.ToInt32(ePayPaymentSettings.MerchantId), Convert.ToInt32(voidPaymentRequest.Order.AuthorizationTransactionId), "", ePayPaymentSettings.RemotePassword, ref epayresponse);

                    if (epayresponse == -1)
                    {
                        result.NewPaymentStatus = PaymentStatus.Voided;
                    }
                    else
                    {
                        result.AddError("Could not void: epayresponse:" + epayresponse);
                    }
                }
                catch (Exception error)
                {
                    result.AddError("Could not void: " + error.Message);
                }
            }
            else
            {
                result.AddError("Remote interface is not activated.");
            }

            return(result);
        }
        /// <summary>
        /// Refunds a payment
        /// </summary>
        /// <param name="refundPaymentRequest">Request</param>
        /// <returns>Result</returns>
        public RefundPaymentResult Refund(RefundPaymentRequest refundPaymentRequest)
        {
            RefundPaymentResult result = new RefundPaymentResult();

            if (ePayPaymentSettings.UseRemoteInterface)
            {
                int pbsresponse  = -1;
                int epayresponse = -1;

                try
                {
                    var    orderTotal = Math.Round(refundPaymentRequest.AmountToRefund, 2);
                    string amount     = (orderTotal * 100).ToString("0", CultureInfo.InvariantCulture);

                    dk.ditonlinebetalingssystem.ssl.Payment payment = new dk.ditonlinebetalingssystem.ssl.Payment();
                    payment.credit(Convert.ToInt32(ePayPaymentSettings.MerchantId), Convert.ToInt32(refundPaymentRequest.Order.AuthorizationTransactionId), Convert.ToInt32(amount), "", ePayPaymentSettings.RemotePassword, ref pbsresponse, ref epayresponse);

                    if (epayresponse == -1)
                    {
                        result.NewPaymentStatus = refundPaymentRequest.Order.OrderTotal == refundPaymentRequest.Order.RefundedAmount + refundPaymentRequest.AmountToRefund ? PaymentStatus.Refunded : PaymentStatus.PartiallyRefunded;
                    }
                    else
                    {
                        result.AddError("Could not refund: pbsResponse:" + pbsresponse + " epayresponse: " + epayresponse);
                    }
                }
                catch (Exception error)
                {
                    result.AddError("Could not refund: " + error.Message);
                }
            }
            else
            {
                result.AddError("Remote interface is not activated.");
            }

            return(result);
        }
        /// <summary>
        /// Captures payment
        /// </summary>
        /// <param name="capturePaymentRequest">Capture payment request</param>
        /// <returns>Capture payment result</returns>
        public CapturePaymentResult Capture(CapturePaymentRequest capturePaymentRequest)
        {
            CapturePaymentResult result = new CapturePaymentResult();

            if (ePayPaymentSettings.UseRemoteInterface)
            {
                int pbsResponse  = -1;
                int epayresponse = -1;

                try
                {
                    decimal orderTotal = Math.Round(capturePaymentRequest.Order.OrderTotal, 2);
                    string  amount     = (orderTotal * 100).ToString("0", CultureInfo.InvariantCulture);

                    dk.ditonlinebetalingssystem.ssl.Payment payment = new dk.ditonlinebetalingssystem.ssl.Payment();
                    payment.capture(Convert.ToInt32(ePayPaymentSettings.MerchantId), Convert.ToInt32(capturePaymentRequest.Order.AuthorizationTransactionId), Convert.ToInt32(amount), "", ePayPaymentSettings.RemotePassword, ref pbsResponse, ref epayresponse);

                    if (epayresponse == -1)
                    {
                        result.NewPaymentStatus = PaymentStatus.Paid;
                    }
                    else
                    {
                        result.AddError("Could not capture: pbsResponse:" + pbsResponse + " epayresponse: " + epayresponse);
                    }
                }
                catch (Exception error)
                {
                    result.AddError("Could not capture: " + error.Message);
                }
            }
            else
            {
                result.AddError("Remote interface is not activated.");
            }

            return(result);
        }