Я изо всех сил пытаюсь настроить свой контроллер для проверки WebHook Xero для получения проверки. Я не могу найти никакой документации о том, как настроить ее в .net, используя C#. < /P>
Это мой код в настоящее время, но я вижу только намерение получить «Требуемый
response не 2xx. < /P>
[HttpPost]
public async Task Receive()
{
var (rawBody, rawBytes) = await GetRawBodyAsync(Request);
var headerSignature = Request.Headers["x-xero-signature"].FirstOrDefault();
string computedSignature = ComputeSignature(rawBytes);
if (computedSignature != headerSignature)
{
return Unauthorized();
}
return Ok();
}
private async Task GetRawBodyAsync(HttpRequest request)
{
request.EnableBuffering();
using var ms = new MemoryStream();
await request.Body.CopyToAsync(ms);
request.Body.Position = 0;
var rawBytes = ms.ToArray();
var rawBody = Encoding.UTF8.GetString(rawBytes);
return (rawBody, rawBytes);
}
private string ComputeSignature(byte[] rawBytes)
{
var keyBytes = Convert.FromBase64String(_webhookKey);
using var hmac = new HMACSHA256(keyBytes);
var hash = hmac.ComputeHash(rawBytes);
return Convert.ToBase64String(hash);
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ve-c-sharp