C# (.NET) Example
Use this when you want to send the vendor-number callback from .NET. Copy the client, set baseUrl and API key (e.g. from env), and call AssignVendorNumberAsync with the event ID and vendor number.
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
public class B1LinkWebhookClient
{
private readonly string _apiKey;
private readonly string _baseUrl;
private readonly HttpClient _httpClient;
public B1LinkWebhookClient(string apiKey, string baseUrl)
{
_apiKey = apiKey;
_baseUrl = baseUrl;
_httpClient = new HttpClient();
}
public async Task<bool> AssignVendorNumberAsync(Guid eventId, string vendorNumber)
{
// Create request payload
var payload = new
{
Id = eventId,
ErpVendorNumber = vendorNumber
};
// Serialize to JSON (compact format, no whitespace)
var jsonOptions = new JsonSerializerOptions
{
WriteIndented = false // Important: no indentation
};
var jsonPayload = JsonSerializer.Serialize(payload, jsonOptions);
// Generate signature
var signature = GenerateSignature(jsonPayload, _apiKey);
// Create HTTP request
var url = $"{_baseUrl}/api/onboarding-request-erp-events/assign-erp-vendor-number-event";
var request = new HttpRequestMessage(HttpMethod.Put, url)
{
Content = new StringContent(jsonPayload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-B1LINK-Signature", signature);
// Send request
var response = await _httpClient.SendAsync(request);
return response.StatusCode == System.Net.HttpStatusCode.NoContent;
}
private string GenerateSignature(string payload, string apiKey)
{
var payloadBytes = Encoding.UTF8.GetBytes(payload);
var keyBytes = Encoding.UTF8.GetBytes(apiKey);
using var hmac = new HMACSHA256(keyBytes);
var hashBytes = hmac.ComputeHash(payloadBytes);
return Convert.ToBase64String(hashBytes);
}
}
// Usage
var client = new B1LinkWebhookClient(
apiKey: "your-api-key-here",
baseUrl: "{baseUrl}"
);
var success = await client.AssignVendorNumberAsync(
eventId: Guid.Parse("550e8400-e29b-41d4-a716-446655440000"),
vendorNumber: "VENDOR-12345"
);
Key Points
- Uses
System.Text.Jsonfor JSON serialization WriteIndented = falseensures compact JSON formatHMACSHA256for signature generationConvert.ToBase64Stringfor Base64 encoding- Async/await pattern for HTTP requests
Dependencies
System.Net.Http— HTTP clientSystem.Text.Json— JSON serializationSystem.Security.Cryptography— HMAC-SHA256
Next step
- Troubleshooting — If you get 401 or 404.