我正在使用窗口表单,并调用Licensespring webhook api的方法checklicense并收到400错误的请求。我想检查用户是否已经根据硬件ID,用户名和产品名称创建了试用许可证。在下面可以找到我的代码。
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”,它正在调用webhook check_license api方法,第二个是在发送aiuthorization头时计算第一个方法中需要的带符号SH256 base64
字符串头。
网站check License Method上已经有用Nodejs编写的参考代码
由于我被困了很长时间,请在这里帮助我。谢谢。