Пример #1
0
        /// <summary>
        /// Get Authorization Request Params
        /// </summary>
        /// <param name="request"></param>
        /// <returns>string</returns>
        public static string GetInvoiceRequestParams(this PayfortInvoiceRequestModel request)
        {
            try
            {
                Dictionary <string, string> parameters = GetInvoiceParametersAsDictionary(request);
                parameters.Add("signature", request.Signature);
                if (null == parameters && parameters.Count == 0)
                {
                    return(string.Empty);
                }

                System.Text.StringBuilder builder = new System.Text.StringBuilder();

                builder.Append("{");
                foreach (var key in parameters.Keys.OrderBy((t => t)))
                {
                    var value = parameters[key];
                    builder.Append($"\"{key}\":\"{value}\",");
                }
                if (builder.ToString().EndsWith(","))
                {
                    builder.Remove(builder.Length - 1, 1);
                }
                builder.Append("}");

                var requestAsString = builder.ToString();
                return(requestAsString);
            }
            catch
            {
                return(string.Empty);
            }
        }
Пример #2
0
        /// <summary>
        /// Generate SHA256 string
        /// </summary>
        /// <param name="request"></param>
        /// <returns>string</returns>
        private static string GetInvoiceSignatureAscending(PayfortInvoiceRequestModel request)
        {
            try
            {
                var parameters = GetInvoiceParametersAsDictionary(request);

                if (null == parameters && parameters.Count == 0)
                {
                    return(string.Empty);
                }

                System.Text.StringBuilder builder = new System.Text.StringBuilder();

                builder.Append(request.RequestPhrase);
                foreach (var key in parameters.Keys.OrderBy((t => t)))
                {
                    var value = parameters[key];
                    builder.Append($"{key}={value}");
                }
                builder.Append(request.RequestPhrase);

                var signature = builder.ToString();
                return(signature);
            }
            catch
            {
                return(string.Empty);
            }
        }
Пример #3
0
 /// <summary>
 /// Generate SHA256 Signature
 /// </summary>
 /// <param name="request"></param>
 public static string GenerateInvoiceSHA256Signature(this PayfortInvoiceRequestModel request)
 {
     try
     {
         //Align Parameters names in ascending order and then
         //convert to SHA256
         return(ConvertToSHA256(GetInvoiceSignatureAscending(request)));
     }
     catch
     {
         return(string.Empty);
     }
 }
Пример #4
0
        private static Dictionary <string, string> GetInvoiceParametersAsDictionary(PayfortInvoiceRequestModel request)
        {
            Dictionary <string, string> parameters = new Dictionary <string, string>();

            parameters.Add("access_code", request.AccessCode);
            parameters.Add("amount", Convert.ToInt64(Convert.ToDecimal(request.Amount) * 100) + string.Empty);
            parameters.Add("currency", request.Currency);
            parameters.Add("customer_email", request.CustomerEmail);
            parameters.Add("customer_name", request.CustomerName);
            parameters.Add("customer_phone", request.CustomerPhoneNumber);
            parameters.Add("language", request.Language);
            parameters.Add("merchant_reference", request.MerchantReference);
            parameters.Add("merchant_identifier", request.MerchantIdentifier);
            parameters.Add("notification_type", PaymentNotificationsType.NONE.ToString());
            //parameters.Add("order_description", request.OrderDescription);
            parameters.Add("payment_option", string.IsNullOrEmpty(request.CreditCardType) ? "VISA" : request.CreditCardType);
            parameters.Add("request_expiry_date", request.RequestExpiryDate.ToString("yyyy-MM-ddTHH:mm:ss") + "+00:00");
            //parameters.Add("return_url", request.ReturnUrl);
            parameters.Add("service_command", "PAYMENT_LINK");

            return(parameters);
        }
        /// <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));
            }
        }