static void Main(string[] args) { string text = "100-13579-26&5000&0&1676473&c550eb5d-cad1-4e01-a98e-2dc702e3b630&927138ef-f298-4631-9727-248bcb5dd565&false&14400&card&none&SHOP_TOKEN&SHOP_SEC_KEY"; // ответ 0DB584FB679B0D9DC2EBBD9D4B2E9191 //Проверка шифрования Console.WriteLine("Расчёт со строки: " + HashText.CkassaMD5(text)); //проверка всего алгоритма //string[] proverka = new string[] {"111aaaa", "222aaaa", "333aaaa", "4444aaaa"}; string[] proverka = new string[] { "100-13579-26", "5000", "0", "1676473", "c550eb5d-cad1-4e01-a98e-2dc702e3b630", "927138ef-f298-4631-9727-248bcb5dd565", "false", "14400", "card", "none" }; SignatureGeneration sg = new SignatureGeneration(shopToken: "SHOP_TOKEN", shopSecKey: "SHOP_SEC_KEY"); Console.WriteLine("Расчёт классом: " + sg.GetSign(proverka)); }
/// <summary> /// Для итогового формирования подписи. /// </summary> /// <param name="data"></param> /// <returns></returns> public string GetSign(string[] data) { string rezult = ""; string pullShopTiken = ""; string pullShopSecKey = ""; //string pullShopAndTik = ""; for (int i = 0; i < data.Length; i++) { if (!string.IsNullOrEmpty(data[i])) { if (data.Length != i + 1) { rezult += data[i] + "&"; } else { rezult += data[i]; } } } //В ответах, внезапно, не всегда есть ShopToken и ShopSecKey потому параметр делаем необязательный (см. пример ответов в документации) if (!string.IsNullOrEmpty(ShopToken)) { pullShopTiken = "&" + ShopToken; } if (!string.IsNullOrEmpty(ShopSecKey)) { pullShopSecKey = "&" + ShopSecKey; } //if (!string.IsNullOrEmpty(ShopSecKey) && !string.IsNullOrEmpty(ShopToken)) pullShopAndTik = "&"; //string result = rezult + pullShopTiken + pullShopAndTik + pullShopSecKey; что я курил? string result = rezult + pullShopTiken + pullShopSecKey; return(HashText.CkassaMD5(result)); }
/// <summary> /// Получаем специальный MD5 /// </summary> /// <param name="inputHashText">Текст для оработки</param> /// <returns></returns> public static string CkassaMD5(string inputHashText) => HashText.Md5hash(HashText.Md5hash(inputHashText)).ToUpper();