Пример #1
0
        public string GenerateMacroRequest(MacroRequestParams macroRequestParams)
        {
            if (macroRequestParams.ProjectId == 0)
            {
                macroRequestParams.ProjectId = _projectId;
            }

            if (string.IsNullOrEmpty(macroRequestParams.Version))
            {
                macroRequestParams.Version = Version;
            }

            if (macroRequestParams.ProjectId != _projectId)
            {
                throw new ArgumentException("Wrong project id.");
            }

            if (macroRequestParams.Version != Version)
            {
                throw new ArgumentException("Wrong version.");
            }

            var data = macroRequestParams.ToBase64String();
            var sign = data.CalculateMd5(_signPassword);

            var requestQueryParams = new Dictionary <string, string>
            {
                ["data"] = data, ["sign"] = sign
            };

            var query = requestQueryParams.ToQueryString();

            return($"{PayUrl}?{query}");
        }
Пример #2
0
        internal static string ToBase64String(this MacroRequestParams param)
        {
            var query       = GenerateQueryString(param);
            var textAsBytes = Encoding.UTF8.GetBytes(query);
            var encodedText = Convert.ToBase64String(textAsBytes);

            encodedText = encodedText.Replace('+', '-');
            encodedText = encodedText.Replace('/', '_');
            return(encodedText);
        }