Skip to main content

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.Json for JSON serialization
  • WriteIndented = false ensures compact JSON format
  • HMACSHA256 for signature generation
  • Convert.ToBase64String for Base64 encoding
  • Async/await pattern for HTTP requests

Dependencies

  • System.Net.Http — HTTP client
  • System.Text.Json — JSON serialization
  • System.Security.Cryptography — HMAC-SHA256

Next step