.NET Library (Omise.Net)
ไลบรารี Omise.Net ให้อินเทอร์เฟซ C# ที่ทันสมัยสำหรับ Omise API พร้อมรูปแบบ async/await, การรองรับ LINQ และการรวมระบบ ASP.NET Core ที่ยอดเยี่ยม
การติดตั้ง
การใช้ NuGet Package Manager
dotnet add package Omise.Net
การใช้ Package Manager Console
Install-Package Omise.Net
การใช้ .csproj
<ItemGroup>
<PackageReference Include="Omise.Net" Version="1.0.0" />
</ItemGroup>
ข้อกำหนด
- .NET Core 3.1+ หรือ .NET 5+, .NET 6+, .NET 7+
- C# 8.0+ (สำหรับ nullable reference types)
- ASP.NET Core (สำหรับเว็บแอปพลิเคชัน)
เริ่มต้นอย่างรวดเร็ว
การกำหนดค่าพื้นฐาน
using Omise;
var client = new Client(
publicKey: "pkey_test_123456789",
secretKey: "skey_test_123456789"
);
ด้วย Dependency Injection (ASP.NET Core)
// Program.cs หรือ Startup.cs
using Omise;
builder.Services.AddSingleton<IClient>(sp =>
new Client(
publicKey: builder.Configuration["Omise:PublicKey"],
secretKey: builder.Configuration["Omise:SecretKey"]
)
);
การกำหนดค่า (appsettings.json)
{
"Omise": {
"PublicKey": "pkey_test_123456789",
"SecretKey": "skey_test_123456789",
"ApiVersion": "2019-05-29"
}
}
ตัวแปรสภาพแวดล้อม
# การพัฒนา/ทดสอบ
OMISE_SECRET_KEY=skey_test_123456789
OMISE_PUBLIC_KEY=pkey_test_123456789
# ผลิตภาพ
# OMISE_SECRET_KEY=skey_live_123456789
# OMISE_PUBLIC_KEY=pkey_live_123456789
การดำเนินการทั่วไป
การสร้างค่าธรรมเนียม
using Omise;
using Omise.Models;
var client = new Client("pkey_test_123", "skey_test_123");
var request = new CreateChargeRequest
{
Amount = 100000, // 1,000.00 THB
Currency = "THB",
Card = "tokn_test_123",
Description = "Order #1234",
Metadata = new Dictionary<string, object>
{
["order_id"] = "1234",
["customer_name"] = "John Doe"
}
};
var charge = await client.Charges.CreateAsync(request);
if (charge.Paid)
{
Console.WriteLine($"เรียกเก็บเงินสำเร็จ: {charge.Id}");
}
else
{
Console.WriteLine($"เรียกเก็บเงินล้มเหลว: {charge.FailureMessage}");
}
ด้วย Record Types (C# 9.0+)
public record CreateChargeModel(
long Amount,
string Currency,
string Token,
Dictionary<string, object>? Metadata = null
);
public async Task<Charge> CreateChargeAsync(CreateChargeModel model)
{
var request = new CreateChargeRequest
{
Amount = model.Amount,
Currency = model.Currency,
Card = model.Token,
Metadata = model.Metadata ?? new Dictionary<string, object>()
};
return await _client.Charges.CreateAsync(request);
}
ด้วย 3D Secure
public async Task<ChargeResult> CreateSecureChargeAsync(
long amount,
string token,
string returnUri)
{
var request = new CreateChargeRequest
{
Amount = amount,
Currency = "THB",
Card = token,
ReturnUri = returnUri
};
var charge = await _client.Charges.CreateAsync(request);
if (charge.Authorized)
{
if (!string.IsNullOrEmpty(charge.AuthorizeUri))
{
return new ChargeResult { RedirectUri = charge.AuthorizeUri };
}
else
{
return new ChargeResult { Success = true, Charge = charge };
}
}
throw new Exception(charge.FailureMessage);
}
การดึง ค่าธรรมเนียม
var charge = await client.Charges.GetAsync("chrg_test_123");
Console.WriteLine($"จำนวนเงิน: {charge.Amount}");
Console.WriteLine($"สกุลเงิน: {charge.Currency}");
Console.WriteLine($"สถานะ: {charge.Status}");
Console.WriteLine($"ชำระแล้ว: {charge.Paid}");
การแสดงรายชื่อค่าธรรมเนียมด้วย LINQ
var request = new ListChargesRequest
{
Limit = 20,
Offset = 0,
Order = Ordering.ReverseChronological
};
var charges = await client.Charges.ListAsync(request);
var paidCharges = charges.Data
.Where(c => c.Paid)
.OrderByDescending(c => c.Created)
.ToList();
foreach (var charge in paidCharges)
{
Console.WriteLine($"{charge.Id}: {charge.Amount} {charge.Currency}");
}
การสร้างลูกค้า
var request = new CreateCustomerRequest
{
Email = "customer@example.com",
Description = "John Doe",
Metadata = new Dictionary<string, object>
{
["user_id"] = "12345",
["account_type"] = "premium"
}
};
var customer = await client.Customers.CreateAsync(request);
Console.WriteLine($"สร้างลูกค้าแล้ว: {customer.Id}");