Ana içeriğe geç

C# Örnekleri

C# ile KolayBi API'sini kullanma örnekleri.

🔐 Yetkilendirme

Access Token Alma

using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class KolayBiApi
{
private readonly HttpClient _httpClient;

public KolayBiApi()
{
_httpClient = new HttpClient();
}

public async Task<string> GetAccessTokenAsync(string apiKey, string channel)
{
var request = new HttpRequestMessage(HttpMethod.Post,
"https://ofis-sandbox-api.kolaybi.com/kolaybi/v1/access_token");

request.Headers.Add("Channel", channel);

var requestData = new { api_key = apiKey };
var jsonContent = JsonConvert.SerializeObject(requestData);
request.Content = new StringContent(jsonContent, System.Text.Encoding.UTF8, "application/json");

var response = await _httpClient.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();
var data = JsonConvert.DeserializeObject<dynamic>(content);

return data.data;
}
}

👥 Cari Hesap İşlemleri

Müşteri Listeleme

public async Task<dynamic> ListAssociatesAsync(string accessToken, string channel)
{
var request = new HttpRequestMessage(HttpMethod.Get,
"https://ofis-sandbox-api.kolaybi.com/kolaybi/v1/associates");

request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
request.Headers.Add("Channel", channel);

var response = await _httpClient.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();

return JsonConvert.DeserializeObject<dynamic>(content);
}

Müşteri Oluşturma

public async Task<dynamic> CreateAssociateAsync(string accessToken, string channel, Dictionary<string, string> associateData)
{
var formContent = new FormUrlEncodedContent(associateData);

var request = new HttpRequestMessage(HttpMethod.Post,
"https://ofis-sandbox-api.kolaybi.com/kolaybi/v1/associates")
{
Content = formContent
};

request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
request.Headers.Add("Channel", channel);

var response = await _httpClient.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();

return JsonConvert.DeserializeObject<dynamic>(content);
}

📦 Ürün İşlemleri

Ürün Listeleme

public async Task<dynamic> ListProductsAsync(string accessToken, string channel)
{
var request = new HttpRequestMessage(HttpMethod.Get,
"https://ofis-sandbox-api.kolaybi.com/kolaybi/v1/products");

request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
request.Headers.Add("Channel", channel);

var response = await _httpClient.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();

return JsonConvert.DeserializeObject<dynamic>(content);
}

🧾 Fatura İşlemleri

Fatura Listeleme

public async Task<dynamic> ListInvoicesAsync(string accessToken, string channel)
{
var request = new HttpRequestMessage(HttpMethod.Get,
"https://ofis-sandbox-api.kolaybi.com/kolaybi/v1/invoices");

request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
request.Headers.Add("Channel", channel);

var response = await _httpClient.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();

return JsonConvert.DeserializeObject<dynamic>(content);
}

📝 Kullanım Örneği

public class Program
{
public static async Task Main(string[] args)
{
var api = new KolayBiApi();

try
{
// Access token al
var accessToken = await api.GetAccessTokenAsync("YOUR_API_KEY", "YOUR_CHANNEL");
var channel = "YOUR_CHANNEL";

// Müşteri listesi al
var associates = await api.ListAssociatesAsync(accessToken, channel);
Console.WriteLine($"Toplam müşteri sayısı: {associates.data.Count}");

// Yeni müşteri oluştur
var newAssociate = new Dictionary<string, string>
{
{ "name", "Ahmet Yılmaz" },
{ "email", "ahmet@example.com" },
{ "phone", "+905551234567" }
};

var result = await api.CreateAssociateAsync(accessToken, channel, newAssociate);
Console.WriteLine($"Müşteri oluşturuldu: {result.data.id}");
}
catch (Exception ex)
{
Console.WriteLine($"Hata: {ex.Message}");
}
}
}

📦 Gerekli NuGet Paketleri

<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />

🔧 Özellikler

  • Async/Await Pattern: Modern C# async programlama
  • HttpClient: .NET'in önerilen HTTP client'ı
  • JSON Deserialization: Newtonsoft.Json ile esnek JSON işleme
  • Error Handling: Try-catch ile hata yönetimi
  • Type Safety: C#'ın güçlü tip sistemi