using System.Security.Cryptography;
public static void Main()
var baseUrl = "https://api.commissionfactory.com/V1_1/Affiliate/Transactions";
var baseString = $"POST&{UriEncode(baseUrl)}&{UriEncode($"apiKey={key}")}";
Console.WriteLine(baseString);
var signature = GetSignature(baseString, "abc123");
$"https://api.commissionfactory.com/V1_1/Affiliate/Transactions?apiKey={key}&signature={UriEncode(signature)}";
Console.WriteLine(signature);
private static string UriEncode(string value) => Uri.EscapeDataString(value);
private static string GetSignature(string message, string secret)
var encoding = new ASCIIEncoding();
var keyByte = encoding.GetBytes(secret);
var messageBytes = encoding.GetBytes(message);
using var hasher = new HMACSHA1(keyByte);
var hashMessage = hasher.ComputeHash(messageBytes);
var str = BitConverter.ToString(hashMessage).Replace("-", "").ToLower();
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(str);
return System.Convert.ToBase64String(plainTextBytes);