FlittSDK 2.0.0
dotnet add package FlittSDK --version 2.0.0
NuGet\Install-Package FlittSDK -Version 2.0.0
<PackageReference Include="FlittSDK" Version="2.0.0" />
<PackageVersion Include="FlittSDK" Version="2.0.0" />
<PackageReference Include="FlittSDK" />
paket add FlittSDK --version 2.0.0
#r "nuget: FlittSDK, 2.0.0"
#:package FlittSDK@2.0.0
#addin nuget:?package=FlittSDK&version=2.0.0
#tool nuget:?package=FlittSDK&version=2.0.0
Flitt C# SDK
<p align="center"> <a href="https://www.nuget.org/packages/FlittSDK/"><img src="https://img.shields.io/nuget/v/FlittSDK.svg" /></a> <a href="https://www.nuget.org/packages/FlittSDK/"><img src="https://img.shields.io/nuget/dt/FlittSDK.svg" /></a> </p>
Payment service provider
A payment service provider (PSP) offers shops online services for accepting electronic payments by a variety of payment methods including credit card, bank-based payments such as direct debit, bank transfer, and real-time bank transfer based on online banking. Typically, they use a software as a service model and form a single payment gateway for their clients (merchants) to multiple payment methods. read more
Installation
SDK availble on NuGet.
Requirements
Flitt account - Register here
Newtonsoft.json (JSON.NET)
The package targets netstandard2.0 and netstandard2.1. Existing protocol
1.0 JSON, form, and XML integrations remain binary-compatible. XML is
deprecated; protocol 2.0 uses JSON.
Simple Start
using FlittSDK;
using FlittSDK.Checkout;
IFlittClient client = new FlittClient(new FlittClientOptions {
MerchantId = 1549901,
SecretKey = "test",
CreditKey = "testcredit",
BaseAddress = new Uri("https://pay.flitt.com/api/"),
Protocol = "2.0",
Timeout = TimeSpan.FromSeconds(30)
});
var req = new CheckoutRequest {
order_id = Guid.NewGuid().ToString("N"),
amount = 100000,
order_desc = "checkout json demo",
currency = "GEL"
};
var resp = await new Url(client).PostAsync(req, cancellationToken);
if (resp.Error == null) {
string url = resp.checkout_url;
}
Api
See the official C# SDK documentation.
New payment methods
Open Banking:
var response = new OpenBanking(client).Post(new OpenBankingRequest {
order_id = Guid.NewGuid().ToString(),
order_desc = "Open Banking payment",
amount = 10000,
currency = "GEL",
payment_method = "tbc" // tbc, bog, liberty, credo, x
});
Installments use new Installments(client).Post(...) with payment_method equal to
tbc or x. The resulting URL is a bank deeplink/SCA URL: pass it to the
customer unchanged and confirm the payment using the server callback or order
status.
IBAN payout:
var payout = await new FlittSDK.Payment.IbanCredit(client).PostAsync(new IbanCreditRequest {
amount = 10000,
currency = "GEL",
receiver_iban = "GE00TB0000000000000001"
});
IBAN and P2P payouts use the client's CreditKey; purchases use SecretKey.
Order updates
var capture = new FlittSDK.Order.Capture(client).CaptureFull(
new CaptureRequest { order_id = orderId, currency = "GEL" });
var reverse = new FlittSDK.Order.Reverse(client).ReverseFull(
new ReverseByOrder { order_id = orderId, currency = "GEL" });
var fiscal = new FlittSDK.Order.FiscalData(client).Post(
new FiscalDataRequest { order_id = orderId });
Atol is retained as an obsolete compatibility adapter and now calls
/fiscal_data/. Calendar payments can be stopped with
new Subscription(client).Stop(orderId).
Dependency injection, async, and transport
FlittClient keeps credentials and response state per instance/per request.
For ASP.NET Core, AddFlitt() registers a default IFlittClient,
IFlittClientFactory, and a named client managed by IHttpClientFactory.
All primary endpoint classes provide true asynchronous counterparts accepting
a CancellationToken:
builder.Services.AddFlitt(options => {
options.MerchantId = merchantId;
options.SecretKey = secretKey;
options.CreditKey = creditKey;
options.BaseAddress = new Uri("https://pay.flitt.com/api/");
options.Protocol = "2.0";
options.Timeout = TimeSpan.FromSeconds(15);
});
var response = await new Token(client).PostAsync(request, cancellationToken);
For dynamic multi-merchant applications, inject IFlittClientFactory:
IFlittClient merchantClient = factory.CreateClient(
merchantId,
merchantSecretKey,
merchantCreditKey
);
Use factory.CreateClient(new FlittClientOptions { ... }) when a merchant also
requires a different BaseAddress, protocol, content type, or timeout.
The default non-DI transport uses a process-wide IHttpClientFactory with a
five-minute handler lifetime, preserving connection pooling while periodically
refreshing DNS endpoints. ASP.NET Core registrations use the application's
IHttpClientFactory and dispose each short-lived client after the buffered
response while the factory manages handler lifetime. There is no
WebRequest/HttpWebRequest path. Custom transports implement
IFlittTransport, which also makes integration tests deterministic without
sending payment requests. IFlittClient can be mocked directly.
The static Config and Client APIs are obsolete compatibility facades. They
remain available so existing 1.x binaries and source integrations continue to
work, but new multi-merchant or concurrent applications should not use them.
FlittContentType.Xml and XmlFormatter are also obsolete; migrate to JSON.
Caller-requested cancellation propagates as OperationCanceledException with
the caller's token; SDK timeouts remain ClientException with code 408.
The repository and NuGet package are licensed under GPL-3.0-only.
Company Reports
Company Reports is a separate service and uses application_id/key, not the
merchant secret:
var reports = new CompanyReports(client);
var report = await reports.GetAsync(new CompanyReportsRequest {
application_id = "1019",
key = "test",
report_id = 745,
merchant_id = 1549902
});
The old Payment.Reports.Post method remains available for the legacy
merchant /reports/ endpoint. GetCompanyReport is a migration shortcut to
the separate Company Reports service.
Test stands
The repository includes isolated NuGet consumer stands for a clean 2.0.0 installation and an unchanged application upgraded from 1.0.0 to 2.0.0. The full runner also executes package API validation and can enable real Flitt API integration tests:
RUN_LIVE_TESTS=1 FLITT_BASELINE_PACKAGE=/path/to/FlittSDK.1.0.0.nupkg \
bash tests/run-all.sh
See tests/TestStands/README.md for details.
Examples
To check it you can use build-in ISS server http://localhost:7777/
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Extensions.Http (>= 8.0.1)
- Newtonsoft.Json (>= 13.0.3)
-
.NETStandard 2.1
- Microsoft.Extensions.Http (>= 8.0.1)
- Newtonsoft.Json (>= 13.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Open Banking, installments, IBAN payouts, fiscal data, Company Reports, full capture/reverse, async APIs, AddFlitt DI, dynamic multi-merchant factory and DNS-safe HttpClient handler rotation.