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}"); }
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); }