Я использую оконную форму и вызываю метод Licensespring webhook api checklicense и получаю 400 неверных запросов. Я хотел проверить, создал ли пользователь свою пробную лицензию на основе идентификатора оборудования, имени пользователя и названия продукта. Ниже вы можете найти мой код.
private static async void GetLicenseKeyByHardwareIdAndUser(string productCode)
{
string sharedKey = "MVc12g949M7d1XiUM1F2gcJzNzKnXAaTgjrvEzh7AZc";
var apiKey = "ccdab2c7-0aa7-4c86-9d79-989f37980dce";
var hardwareId = "82A9-EA17-7F62-3BB9-F06A-659C-2280-8F9C-9470-BDC8-B2A2-9BEC-5B23-E89F-362D-1D99";
var product = "vp";
var username = "John@gmail.com";
var builder = new UriBuilder("https://api.licensespring.com/api/v4/check_license");
builder.Port = -1;
//generating url with query string having parameter hardware_id,username and product.
var query = HttpUtility.ParseQueryString(builder.Query);
query["hardware_id"] = hardwareId+"&";
query["username"] = username + "&";
query["product"] = product;
builder.Query = query.ToString();
string url = builder.ToString();
var date = DateTime.UtcNow.ToString();
//Preparing signed request header key
var authorization = string.Format("algorithm=hmac-sha256,headers=date," +
"signature={0},apikey={1}",CreateSHA256Signature(sharedKey), apiKey);
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var request = new HttpRequestMessage(HttpMethod.Get, new Uri(url));
//Adding headers here
request.Headers.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.TryAddWithoutValidation("Date", date);
request.Headers.TryAddWithoutValidation("Authorization", authorization);
//Send the request.
var response = await new HttpClient().SendAsync(request);
if (response.IsSuccessStatusCode)
{
var fileJsonString = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<dynamic>(fileJsonString).ToList();
}
}
public static string CreateSHA256Signature(string sharedKey)
{
var date = DateTime.UtcNow.ToString();
var singningString = string.Format("licenseSpring\ndate: {0}", date);
var hexHash = "";
var encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(sharedKey);
byte[] messageBytes = encoding.GetBytes(singningString);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
hexHash = Convert.ToBase64String(hashmessage);
}
return hexHash;
}
Итак, как вы можете видеть, теперь есть два методы, которыми я поделился. Один - «GetLicenseKeyByHardwareIdAndUser», который вызывает метод api check_license веб-перехватчика, а второй вычисляет подписанный строковый заголовок SH256 base64
, необходимый в первом методе при отправке заголовка авторизации. здесь уже есть ссылочный код, написанный в Nodejs, на сайте проверьте метод лицензии Пожалуйста, помогите мне здесь, так как я застрял на некоторое время. Спасибо.