Beispiel #1
0
        /// <summary>
        /// Get Authorization Request Params
        /// </summary>
        /// <param name="request"></param>
        /// <returns>string</returns>
        public static string GetAuthorizationRequestParams(this PayfortAuthorizationInfoRequest request)
        {
            try
            {
                Dictionary <string, string> parameters = GetAuthorizationRequestParamsAsDictionary(request);
                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);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Generate SHA256 string
        /// </summary>
        /// <param name="request"></param>
        /// <returns>string</returns>
        private static string GetAuthorizationSignatureAscending(PayfortAuthorizationInfoRequest request)
        {
            try
            {
                var parameters = GetAuthorizationParametersAsDictionary(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);
            }
        }
Beispiel #3
0
 /// <summary>
 /// Generate SHA256 Signature
 /// </summary>
 /// <param name="request"></param>
 public static string GenerateVoidAuthorizationSHA256Signature(this PayfortAuthorizationInfoRequest request)
 {
     try
     {
         //Align Parameters names in ascending order and then
         //convert to SHA256
         return(ConvertToSHA256(GetVoidAuthorizationSignatureAscending(request)));
     }
     catch
     {
         return(string.Empty);
     }
 }
Beispiel #4
0
 /// <summary>
 /// Get Authorization Request Params
 /// </summary>
 /// <param name="request"></param>
 /// <returns>string</returns>
 public static string GetVoidAuthorizationRequestParams(this PayfortAuthorizationInfoRequest request)
 {
     try
     {
         return(string.Format("{{\"command\":\"{0}\",\"access_code\":\"{1}\",\"merchant_identifier\":\"{2}\",\"language\":\"{3}\",\"fort_id\":\"{4}\",\"signature\":\"{5}\"}}",
                              PaymentCommandType.VOID_AUTHORIZATION.ToString(),
                              request.AccessCode,
                              request.MerchantIdentifier,
                              "en",
                              request.FortId,
                              request.Signature));
     }
     catch
     {
         return(string.Empty);
     }
 }
Beispiel #5
0
 /// <summary>
 /// Generate SHA256 string
 /// </summary>
 /// <param name="request"></param>
 /// <returns>string</returns>
 private static string GetVoidAuthorizationSignatureAscending(PayfortAuthorizationInfoRequest request)
 {
     try
     {
         return(string.Format("{0}access_code={1}command={2}fort_id={3}language={4}merchant_identifier={5}{0}",
                              request.RequestPhrase,
                              request.AccessCode,
                              PaymentCommandType.VOID_AUTHORIZATION.ToString(),
                              request.FortId,
                              "en",
                              request.MerchantIdentifier));
     }
     catch
     {
         return(string.Empty);
     }
 }
        /// <summary>
        /// Authorize
        /// </summary>
        public PaymentResponse VoidAuthorize(PayfortAuthorizationInfoRequest request)
        {
            //Declarations
            var errInfo = new PaymentResponse();

            errInfo.UserId    = request.UserId;
            errInfo.BookingId = request.BookingId;

            if (request != null)
            {
                //1. Generate SHA256 Signature
                request.Signature = request.GenerateVoidAuthorizationSHA256Signature();

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

                //3. Send Request
                return(AuthorizeProcessor.VoidAuthorize(jsonRequest, request.Url, errInfo));
            }
            else
            {
                return(ExceptionHandler.ExceptionHandler.GetPayfortExceptionResponseInfo(errInfo, PaymentCommandType.VOID_AUTHORIZATION));
            }
        }
        /// <summary>
        /// Purchase
        /// </summary>
        public PaymentResponse Purchase(PayfortAuthorizationInfoRequest request)
        {
            //Declarations
            var errInfo = new PaymentResponse();

            //errInfo.UserId = request.UserId;
            //errInfo.BookingId = request.BookingId;

            if (request != null)
            {
                //1. Generate SHA256 Signature
                request.Signature = request.GenerateAuthorizationSHA256Signature();

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

                //3. Send Request
                return(PurchaseProcessor.Purchase(jsonRequest, request.Url, errInfo));
            }
            else
            {
                return(ExceptionHandler.ExceptionHandler.GetPayfortExceptionResponseInfo(errInfo, PaymentCommandType.PURCHASE));
            }
        }
Beispiel #8
0
        private static Dictionary <string, string> GetAuthorizationRequestParamsAsDictionary(PayfortAuthorizationInfoRequest request)
        {
            Dictionary <string, string> parameters = GetAuthorizationParametersAsDictionary(request);

            parameters.Add("signature", request.Signature);
            return(parameters);
        }
Beispiel #9
0
        private static Dictionary <string, string> GetAuthorizationParametersAsDictionary(PayfortAuthorizationInfoRequest request)
        {
            Dictionary <string, string> parameters = new Dictionary <string, string>();

            parameters.Add("access_code", request.AccessCode);
            parameters.Add("amount", request.Amount);
            parameters.Add("command", request.Command);
            parameters.Add("currency", request.Currency);
            parameters.Add("customer_email", request.CustomerEmail);
            parameters.Add("customer_ip", request.CustomerIp);
            parameters.Add("customer_name", request.CustomerName);
            parameters.Add("device_fingerprint", request.DeviceFingerPrint);
            parameters.Add("language", request.Language);
            parameters.Add("merchant_identifier", request.MerchantIdentifier);
            parameters.Add("merchant_reference", request.MerchantReference);
            parameters.Add("remember_me", request.RememberMe);
            parameters.Add("return_url", request.ReturnUrl);
            parameters.Add("token_name", request.TokenName);

            if (!string.IsNullOrEmpty(request.check_3ds) && request.check_3ds == "NO")
            {
                parameters.Add("check_3ds", request.check_3ds);
            }

            if (!string.IsNullOrWhiteSpace(request.CardSecurityCode))
            {
                parameters.Add("card_security_code", request.CardSecurityCode);
            }
            return(parameters);
        }