Vielen Dank für Ihr Interesse am C#-Paket von Chargily Pay™, einem Open-Source-Projekt von Chargily, einem führenden Fintech-Unternehmen in Algerien, das sich auf Zahlungslösungen und E-Commerce-Erleichterung spezialisiert hat. Dieses Paket bietet die einfachste und kostenlose Möglichkeit, E-Payment zu integrieren API über weit verbreitete Zahlungsmethoden in Algerien wie EDAHABIA (Algerie Post) und CIB (SATIM) in Ihre C#/ASP.NET-Projekte.
Dieses Paket wurde von Ahmed Chakhoum (rainxh11) entwickelt und ist offen für Beiträge von Entwicklern wie Ihnen.
Nuget-Paket | Downloads |
---|---|
Kostenpflichtig.Zahlung: | |
Chargily.Pay.AspNet: |
Es werden nur .NET6.0
und neuere Versionen unterstützt.
HINWEIS: Die Möglichkeit, den Checkout-Status mit dem Webhook-Endpunkt zu empfangen, ist nur bei Projekttypen möglich, die einen HTTP-Server hosten können.
dotnet add Chargily.Pay
using Chargily . Pay ;
var chargilyClient = ChargilyPay . CreateResilientClient ( config =>
{
// toggle live mode
config . IsLiveMode = false ;
// your chargily dev account api-secret key
config . ApiSecretKey = "YOUR API SECRET" ;
} ) ;
var createProduct = new CreateProduct ( )
{
Name = "Product Name" ,
ImagesUrls = new List < Uri > ( )
{
new Uri ( "https://domain.com/image.png" )
} ,
Description = "Product Description" ,
} ;
var product = await _chargilyPayClient . AddProduct ( createProduct ) ;
var createPrice = new CreatePrice ( )
{
Amount = 3000 ,
Currency = Currency . DZD ,
ProductId = product . Value . Id ,
} ;
var productPrice = await chargilyClient . AddPrice ( createPrice ) ;
var checkoutItems = new List < CheckoutPriceItem > ( )
{
new CheckoutPriceItem ( )
{
Quantity = 1 ,
PriceId = productPrice . Value . Id
}
} ;
var createCheckout = new Checkout ( checkoutItems )
{
Description = "Checkout Description" ,
Language = LocaleType . Arabic ,
PaymentMethod = PaymentMethod . EDAHABIA ,
PassFeesToCustomer = true ,
WebhookEndpointUrl = new Uri ( "https://domain.com/webhook/endpoint" ) ,
OnFailureRedirectUrl = new Uri ( "https://webapp.com/checkout/fail" ) ,
OnSuccessRedirectUrl = new Uri ( "https://webapp.com/checkout/success" ) ,
CollectShippingAddress = false ,
} ;
var checkout = await chargilyClient . CreateCheckout ( createCheckout ) ;
var createCheckout = new Checkout ( amount : 3000 , Currency . DZD )
{
Description = "Checkout Description" ,
Language = LocaleType . Arabic ,
PaymentMethod = PaymentMethod . EDAHABIA ,
PassFeesToCustomer = true ,
WebhookEndpointUrl = new Uri ( "https://domain.com/webhook/endpoint" ) ,
OnFailureRedirectUrl = new Uri ( "https://webapp.com/checkout/fail" ) ,
OnSuccessRedirectUrl = new Uri ( "https://webapp.com/checkout/success" ) ,
CollectShippingAddress = false ,
} ;
var fastCheckout = await chargilyClient . CreateCheckout ( createCheckout ) ;
HINWEIS: Der Checkout kann mit einer Preisliste oder mit einem Betrag + einer Währung erstellt werden.
var createProduct = new CreateProduct ( )
{
/* ... */
} ;
var product = await _chargilyPayClient . AddProduct ( createProduct ) ;
var createPrice = new CreatePrice ( )
{
/* ... */
} ;
var productPrice = await chargilyClient . AddPrice ( createPrice ) ;
// above steps are similar to how to create a checkout
var paymentLinkItems = new List < PaymentLinkPriceItem > ( )
{
new PaymentLinkPriceItem ( )
{
AdjustableQuantity = true ,
PriceId = productPrice . Value . Id ,
Quantity = 2
}
} ;
var createPaymentLink = new CreatePaymentLink ( paymentLinkItems )
{
Language = LocaleType . Arabic ,
PassFeesToCustomer = true ,
CollectShippingAddress = false ,
Name = "Name" ,
CompletionMessage = "completion message" ,
IsActive = true
} ;
var createCustomer = new CreateCustomer ( )
{
Name = "Customer Name" ,
Address = new CustomerAddress ( )
{
Address = "Address" ,
Country = Country . Algeria ,
State = "Alger"
} ,
Email = "[email protected]" ,
Phone = "+2130601010101"
} ;
var customer = await chargilyClient . AddCustomer ( createCustomer ) ;
var createCheckout = new Checkout ( amount : 3000 , Currency . DZD )
{
CustomerId = customer . Value . Id ,
/* .... */
} ;
var fastCheckout = await chargilyClient . CreateCheckout ( createCheckout ) ;
foreach ( var wallet in chargilyClient . Balance )
{
/* ... */
}
using Chargily . Pay ;
var chargilyClient = ChargilyPay . CreateResilientClient ( config =>
{
/* ... */
// refresh balance every 30 seconds
config . BalanceRefreshInterval = TimeSpan . FromSeconds ( 30 ) ;
} ) ;
var balance = await chargilyClient . GetBalance ( ) ;
// by id
var byId = await chargilyClient . GetProduct ( "id" ) ;
// by page number & page size
var products = await chargilyClient . GetProducts ( page : 1 , pageSize : 50 ) ;
// or iterate through all items using `Async Enumerable async foreach`
await foreach ( var product in chargilyClient . Products ( ) )
{
/* ... */
}
await chargilyClient . DeleteProduct ( "01hrtc39vq463jhnemv0q33mcq" ) ;
// by id
var byId = await chargilyClient . GetPrice ( "id" ) ;
// by page number & page size
var prices = await chargilyClient . GetPrices ( page : 1 , pageSize : 50 ) ;
// or iterate through all items using `IAsyncEnumerable async foreach`
await foreach ( var price in chargilyClient . Prices ( ) )
{
/* ... */
}
// by id
var byId = await chargilyClient . GetCustomer ( "id" ) ;
// by page number & page size
var customers = await chargilyClient . GetCustomers ( page : 1 , pageSize : 50 ) ;
// or iterate through all items using `IAsyncEnumerable async foreach`
await foreach ( var customer in chargilyClient . Customers ( ) )
{
/* ... */
}
await chargilyClient . DeleteCustomer ( "01hrsfjgvfvv1007y54y8fph1v" ) ;
// by id
var byId = await chargilyClient . GetCheckout ( "id" ) ;
// by page number & page size
var checkouts = await chargilyClient . GetCheckouts ( page : 1 , pageSize : 50 ) ;
// or iterate through all items using `IAsyncEnumerable async foreach`
await foreach ( var checkout in chargilyClient . Checkouts ( ) )
{
/* ... */
}
var checkoutItems = await chargilyClient . GetCheckoutItems ( "checkoutId" ) ;
// by id
var byId = await chargilyClient . GetPaymentLink ( "id" ) ;
// by page number & page size
var paymentLinks = await chargilyClient . GetPaymentLinks ( page : 1 , pageSize : 50 ) ;
// or iterate through all items using `IAsyncEnumerable async foreach`
await foreach ( var paymentLink in chargilyClient . PaymentLinks ( ) )
{
/* ... */
}
var paymentLinksItems = await chargilyClient . GetPaymentLinkItems ( "paymentLinkId" ) ;
Chargily.Pay.AspNet
Nuget-Paket: dotnet add Chargily.Pay.AspNet
using Chargily . Pay ;
using Chargily . Pay . AspNet ;
var builder = WebApplication . CreateBuilder ( args ) ;
builder . Services
// Register Chargily Pay Client
. AddGlobalChargilyPayClient ( config =>
{
// toggle live mode
config . IsLiveMode = false ;
// your chargily dev account api-secret key
config . ApiSecretKey = "YOUR API SECRET" ;
} )
// Register Chargily Pay Webhook Signature Validator
. AddChargilyPayWebhookValidationMiddleware ( ) ;
var app = builder . Build ( ) ;
// User Chargily Pay Webhook Signature Validator Middleware
app . UseChargilyPayWebhookValidation ( ) ;
// Map Webhook Endpoint to `both POST & GET /api/checkout-webhook`
app . MapChargilyPayWebhookEndpoint ( "/chargily/webhook" , async ( webhookContext ) =>
{
// you can access the webhook body, http context, validation result
if ( webhookContext . SignatureIsValid )
{
var body = webhookContext . Request ;
/* do something with the webhook request body */
}
} ) ;
app . Run ( ) ;
Im obigen Beispiel stellt Chargily.Pay.AspNet
eine integrierte Webhook-Signatur-Validator-Middleware bereit. Sie können sie bei builder.Services.AddChargilyPayWebhookValidationMiddleware()
registrieren und dann mit app.UseChargilyPayWebhookValidation()
verwenden.
Es validiert alle POST
Anfragen, die einen Headernamen haben: signature
. Sie können den Header-Namen mit app.UseChargilyPayWebhookValidation("another_name")
überschreiben.
Außerdem ist ein Minimal-Webapi-Endpunkt integriert, der bei app.MapChargilyPayWebhookEndpoint()
registriert werden und ihn verwenden kann, um auf den Webhook-Körper zuzugreifen, ohne die Validierung manuell durchführen zu müssen.
Chargily.Pay
als auch Chargily.Pay.AspNet
Nuget-Pakete können mit diesem Befehl generiert werden: docker build . -- output = . / output
.nupkg
Artefakte werden im Ordner ./output
gespeichert Chargily Pay™-Pakete/Plugins sind eine Sammlung von Open-Source-Projekten, die von Chargily veröffentlicht wurden, um die Integration unseres Zahlungsgateways in verschiedene Programmiersprachen und Frameworks zu erleichtern. Unser Ziel ist es, Entwicklern und Unternehmen durch die Bereitstellung benutzerfreundlicher Tools die nahtlose Annahme von Zahlungen zu ermöglichen.
Ausführliche Anweisungen zur Integration in unsere API und zur Nutzung von Chargily Pay™ in Ihren Projekten finden Sie in unserer API-Dokumentation.
Treten Sie unserer Entwickler-Community auf Telegram bei, um mit anderen Entwicklern in Kontakt zu treten, Fragen zu stellen und über die neuesten Nachrichten und Entwicklungen im Zusammenhang mit Chargily Pay™: Telegram Community auf dem Laufenden zu bleiben
Wir freuen uns über Beiträge aller Art, sei es Fehlerbehebungen, Funktionserweiterungen, Dokumentationsverbesserungen oder neue Plugin-/Paketentwicklungen. So können Sie loslegen:
Forken des Repositorys: Klicken Sie auf die Schaltfläche „Fork“ in der oberen rechten Ecke dieser Seite, um Ihre eigene Kopie des Repositorys zu erstellen.
Klonen Sie das Repository: Klonen Sie Ihr geforktes Repository mit dem folgenden Befehl auf Ihren lokalen Computer:
git clone https://github.com/Chargily/chargily-pay-csharp.git
Änderungen vornehmen: Nehmen Sie die gewünschten Änderungen oder Ergänzungen an der Codebasis vor. Befolgen Sie unbedingt unsere Codierungsstandards und -richtlinien.
Testen Sie Ihre Änderungen: Testen Sie Ihre Änderungen gründlich, um sicherzustellen, dass sie wie erwartet funktionieren.
Senden Sie eine Pull-Anfrage: Sobald Sie mit Ihren Änderungen zufrieden sind, senden Sie eine Pull-Anfrage zurück an das Haupt-Repository. Unser Team wird Ihre Beiträge prüfen und bei Bedarf Feedback geben.
Haben Sie Fragen oder benötigen Sie Hilfe? Treten Sie unserer Entwickler-Community auf Telegram bei und vernetzen Sie sich mit anderen Entwicklern und unserem Team.
Wir freuen uns über Ihr Interesse, einen Beitrag zu Chargily Pay™ zu leisten! Gemeinsam können wir etwas Erstaunliches aufbauen.
Viel Spaß beim Codieren!