Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Далее дан пример кода на C#, позволяющий вызвать функцию CreateInvoice. Чтобы им воспользоваться, нужно заменить данные в части строк некоторых строках на свои.

Code Block
languagec#
titleПример вызова функции CreateInvoice
public static void CreateInvoice() {
	// для работы примера выставьте Secret Key из настроек магазина -> прием платежей.
	string eshopSecretKey = "1234abcd"; 

	// параметры запроса
	var param = new Dictionary<string, string>
	{
		["eshopId"] = "499999", // для работы примера выставьте номер своего магазина
		["orderId"] = "мой заказ",
		["recipientAmount"] = "10.00",
		["recipientCurrency"] = "TST", // пример предполагает, что в магазине выставлена тестовая валюта.
		["email"] = "youremail@gmail.com", // для работы примера выставьте email на который зарегистрирован аккаунт организации на сайте intellectmoney.
	};

	// Этот параметр не связан с заголовком Sign и с авторизацией по bearer токену. Это другой хеш, использующийся для валидации параметров при вызове метода CreateInvoice.
	param["hash"] = GetCreateInvoiceHash(param, eshopSecretKey);

	// токен и секретный ключ из личного кабинета
	string bearerToken = "808e1cc4630440858f5109e4c0a3e707";
	string signSecretKey = "670bcc16e5c9483fa85096c16ce8c413";
	
	// генерируем хеш для заголовка Sign
	string signHashString = $"{param["eshopId"]}::{param["orderId"]}::::{param["recipientAmount"]}::{param["recipientCurrency"]}::::{param["email"]}::::::::::::::::{signSecretKey}";
	string signHash = GetHashSHA256(signHashString);
	
	// отправляем запрос
	HttpClientHandler clientHandler = new HttpClientHandler();
	using (var content = new FormUrlEncodedContent(param))
	{
		using (HttpClient client = new HttpClient(clientHandler))
		{
			client.DefaultRequestHeaders.Add("Authorization", $"Bearer {bearerToken}");
			client.DefaultRequestHeaders.Add("Sign", signHash);

			using (HttpResponseMessage response = client.PostAsync($"https://api.intellectmoney.ru/merchant/createInvoice", content).Result)
			{
				string responseText = response.Content.ReadAsStringAsync().Result;
				Console.WriteLine(responseText);
				Console.ReadKey();
			}
		}
	}
}

private static string GetCreateInvoiceHash(Dictionary<string, string> param, string eshopSecretKey)
{
	return GetHashMD5($"{param["eshopId"]}::{param["orderId"]}::::{param["recipientAmount"]}::{param["recipientCurrency"]}::::{param["email"]}::::::::::::::::{eshopSecretKey}");
}

private static string GetHashMD5(string source)
{
	byte[] data = Encoding.UTF8.GetBytes(source);
    using (MD5 md5 = new MD5CryptoServiceProvider())
    {
        data = md5.ComputeHash(data);
    }
    return BitConverter.ToString(data).Replace("-", "").ToLower();
}

private static string GetHashSHA256(string source)
{
	byte[] data = Encoding.UTF8.GetBytes(source);
	using (var sha256 = new SHA256CryptoServiceProvider())
	{
		data = sha256.ComputeHash(data);
	}
	return BitConverter.ToString(data).Replace("-", "").ToLower();
}

...