chargily.epay.csharp
2.0.0
dotnet add package chargily.epay.csharp --version 2.0.0
NuGet\Install-Package chargily.epay.csharp -Version 2.0.0
<PackageReference Include="chargily.epay.csharp" Version="2.0.0" />
paket add chargily.epay.csharp --version 2.0.0
#r "nuget: chargily.epay.csharp, 2.0.0"
// Install chargily.epay.csharp as a Cake Addin #addin nuget:?package=chargily.epay.csharp&version=2.0.0 // Install chargily.epay.csharp as a Cake Tool #tool nuget:?package=chargily.epay.csharp&version=2.0.0
<img src="https://raw.githubusercontent.com/chargily/epay-gateway-csharp/master/assets/chargily.svg" width="300">
Nuget Pacakge | Downloads |
---|---|
Chargily ePay Gateway C# Package
This package supports the following frameowrks and platforms:
Framework | Support | Platform |
---|---|---|
Console | ✅ | Windows, Linux, macOS |
ASP.NET Core | ✅ | Windows, Linux, macOS |
Blazor WASM | ✅ | Windows, Linux, macOS |
Blazor Server | ✅ | Windows, Linux, macOS |
.NET MAUI | ✅ | Windows, Linux, macOS, Android, iOS, Tizen |
Xamarin | ✅ | Android, iOS |
ASP.NET | ✅ | Windows |
WPF | ✅ | Windows |
AvaloniaUI | ✅ | Windows, Linux, macOS |
UWP | ✅ | Windows, Xbox OS |
WinForms | ✅ | Windows |
Any C# application that uses Microsoft.Extensions.DependencyInjection
can use this package
Integrate ePayment gateway with Chargily easily.
- Currently support payment by CIB / EDAHABIA cards and soon by Visa / Mastercard
- This is a C#.NET Nuget Package, If you are using another programing language Browse here or look to API documentation
Installation
First, install the chargily.epay.csharp
NuGet package into your app
Using DotNet CLI :
dotnet add chargily.epay.csharp
Using Visual Studio Dev Console:
Install-Package chargily.epay.csharp
Using Visual Studio IDE:
Requirements
- Get your API Key/Secret from ePay by Chargily dashboard for free
How to use
Installation & Project Creation Video Guide
Implemention of the code below:
Usage with any generic C# Project:
this package provide ChargilyEpayClient
client, to create payment request use:
using Chargily.Epay;
var client = ChargilyEpay.CreateClient("[API_KEY]");
var payment = new EpayPaymentRequest()
{
InvoiceNumber = "[INVOICE_NUMBER]",
Name = "Ahmed",
Email = "rainxh11@gmail.com",
Amount = 1500,
DiscountPercentage = 5.0,
PaymentMethod = PaymentMethod.EDAHABIA,
BackUrl = "https://yourapp.com/",
WebhookUrl = "https://api.yourbackend.com/webhook-validator",
ExtraInfo = "Product Purchase"
};
var response = await client.CreatePayment(payment);
Usage with ASP.NET Core
Video Guide how to use with Minimal API
Soon
Video Guide how to use with ASP.NET Core WebAPI
Soon
this applies to:
- ASP.NET Core WebAPI
- ASP.NET Core Minimal WebAPI
- Blazor Server
- Blazor WASM
- ASP.NET Core MVC
using Chargily.Epay;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddChargilyEpayGateway("[API_KEY]");
var app = builder.Build();
app.MapPost("/invoice",
async ([FromBody] EpayPaymentRequest request,
[FromServices] IChargilyEpayClient<EpayPaymentResponse, EpayPaymentRequest> chargilyClient) =>
{
return await chargilyClient.CreatePayment(request);
});
app.Run();
Request:
{
"invoice_number" : "321616",
"client" : "Ahmed",
"client_email" : "rainxh11@gmail.com",
"amount" : 1500,
"discount" : 5.0,
"mode" : "EDAHABIA",
"back_url" : "https://example.com/",
"webhook_url" : "https://shop.com/purchase",
"comment" : "Product Purchase"
}
Response:
{
"httpStatusCode": 201,
"responseMessage": {
"Message": "Success"
},
"isSuccessful": true,
"isRequestValid": true,
"body": {
"checkout_url": "https://epay.chargily.com.dz/checkout/d00c1e652200798bbc35f688b2910fa9bc6c4c30d38b51e3f4142e407fa7c141"
},
"createdOn": "2022-05-06T03:55:49.6527862+01:00"
}
WebHook Validation:
using Chargily.Epay;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddChargilyWebHookValidator("[APP_SECRET]");
var app = builder.Build();
app.MapPost("/webhook_endpoint",
([FromServices] IWebHookValidator validator, HttpRequest request, [FromBody] ChargilyWebhookRequest body) =>
{
var signature = request.Headers["Signature"].First();
var isValid = validator.Validate(signature, request.Body);
if (isValid) return Results.Ok(body.Invoice);
return Results.Unauthorized();
});
app.Run();
Configuration:
API_KEY
& APP_SECRET
can be added directly in code or from appsettings.json
configuration file
builder.Services.AddChargilyWebHookValidator("[APP_SECRET]");
builder.Services.AddChargilyEpayGateway("[API_KEY]");
// OR
builder.Services.AddChargilyWebHookValidator(builder.Configuration["CHARGILY_APP_SECRET"]);
builder.Services.AddChargilyEpayGateway(builder.Configuration["CHARGILY_API_KEY"]);
// OR
// Same as previous but it will be loaded automatically from appsettings.json
builder.Services.AddChargilyWebHookValidator());
builder.Services.AddChargilyEpayGateway();
appsettings.json
file:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"CHARGILY_APP_SECRET": "[APP_SECRET]", // <-- APP SECRET
"CHARGILY_API_KEY": "[API_KEY]" // <-- API KEY
}
ASP.NET Core Middleware
This package provide WebHookValidatorMiddleware
ASP.NET Core Middleware, when registered every POST
request that have a Signature
Http Header will be validated automatically.
How to register the Middleware:
using Chargily.Epay;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddChargilyEpayGateway("[API_KEY]");
builder.Services
.AddChargilyValidatorMiddleware("[APP_SECRET]"); // WebHookValidatorMiddleware have to be registered
var app = builder.Build();
app.UseChargilyValidatorMiddleware();
app.Run();
Usage with .NET MAUI
using Microsoft.Maui;
using Microsoft.Maui.Hosting;
using Microsoft.Maui.Controls.Compatibility;
using Microsoft.Maui.Controls.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Chargily.Epay;
namespace MyApp
{
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder.UseMauiApp<App>();
builder.Services.AddChargilyEpayGateway("[API_KEY]");
return builder.Build();
}
}
}
then you can add in ViewModels
:
public class MainViewModel : ViewModelBase
{
private ChargilyEpayClient _chargilyClient;
private IWebHookValidator _webhookValidator;
public MainViewModel(ChargilyEpayClient chargilyClient)
{
_chargilyClient = chargilyClient;
}
// With Validator
public MainViewModel(ChargilyEpayClient chargilyClient, IWebHookValidator webhookValidator)
{
_chargilyClient = chargilyClient;
_webhookValidator = webhookValidator;
}
}
Note when using .NET MAUI / Xamarin:
storing sensitive APP_SECRET
in a frontend app is not a recommended approach, you'd be better off calling a backend api to handle payment, but it's doable.
if you decide to use it in the frontend, consider storing APP_SECRET
with Akavache
BlobCache.Secure
This package is using Microsoft.Extensions.DependencyInjection
dependancy injection, so it can be used with application or framework using it.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. 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. |
-
net6.0
- FluentValidation (>= 11.5.2)
- FluentValidation.DependencyInjectionExtensions (>= 11.5.2)
- Microsoft.Extensions.Configuration.Abstractions (>= 7.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 7.0.1)
- Refit (>= 6.3.2)
- Refit.HttpClientFactory (>= 6.3.2)
- System.Text.Json (>= 7.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.
Version | Downloads | Last updated |
---|