Terima kasih atas minat Anda pada Paket C# Chargily Pay™, sebuah proyek sumber terbuka oleh Chargily, perusahaan fintech terkemuka di Aljazair yang berspesialisasi dalam solusi pembayaran dan fasilitasi e-niaga, Paket ini menyediakan cara termudah dan gratis untuk mengintegrasikan pembayaran elektronik API melalui metode pembayaran yang tersebar luas di Aljazair seperti EDAHABIA (Algerie Post) dan CIB (SATIM) ke dalam proyek C#/ASP.NET Anda.
Paket ini dikembangkan oleh Ahmed Chakhoum (rainxh11) dan terbuka untuk kontribusi dari pengembang seperti Anda.
Paket Nuget | Unduhan |
---|---|
Chargily.Bayar: | |
Chargily.Bayar.AspNet: |
Hanya .NET6.0
dan versi yang lebih baru yang didukung.
CATATAN: Kemampuan untuk menerima status checkout dengan titik akhir Webhook hanya dimungkinkan dengan jenis proyek yang dapat menghosting Server HTTP.
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 ) ;
CATATAN: Checkout dapat dibuat dengan daftar harga atau menggunakan jumlah + mata uang.
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
: 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 ( ) ;
Dalam contoh di atas, Chargily.Pay.AspNet
menyediakan middleware validator tanda tangan webhook bawaan, Anda dapat mendaftarkannya dengan builder.Services.AddChargilyPayWebhookValidationMiddleware()
lalu menggunakannya dengan app.UseChargilyPayWebhookValidation()
.
Ini akan memvalidasi permintaan POST
apa pun yang memiliki nama header: signature
. Anda dapat mengganti nama header dengan app.UseChargilyPayWebhookValidation("another_name")
.
Juga dilengkapi titik akhir webapi minimal yang dapat didaftarkan dengan app.MapChargilyPayWebhookEndpoint()
, dan menggunakannya untuk mengakses isi webhook tanpa menangani validasi secara manual.
Chargily.Pay
& Chargily.Pay.AspNet
dapat dibuat menggunakan perintah ini: docker build . -- output = . / output
.nupkg
akan disimpan ke folder ./output
Paket/plugin Chargily Pay™ adalah kumpulan proyek sumber terbuka yang diterbitkan oleh Chargily untuk memfasilitasi integrasi gateway pembayaran kami ke dalam berbagai bahasa pemrograman dan kerangka kerja. Tujuan kami adalah memberdayakan pengembang dan bisnis dengan menyediakan alat yang mudah digunakan untuk menerima pembayaran dengan lancar.
Untuk instruksi terperinci tentang cara berintegrasi dengan API kami dan memanfaatkan Chargily Pay™ dalam proyek Anda, silakan merujuk ke Dokumentasi API kami.
Bergabunglah dengan komunitas pengembang kami di Telegram untuk terhubung dengan sesama pengembang, mengajukan pertanyaan, dan mendapatkan informasi terkini serta perkembangan terkait Chargily Pay™: Komunitas Telegram
Kami menerima segala jenis kontribusi, baik itu perbaikan bug, peningkatan fitur, peningkatan dokumentasi, atau pengembangan plugin/paket baru. Inilah cara Anda memulai:
Fork the Repository: Klik tombol "Fork" di pojok kanan atas halaman ini untuk membuat salinan repositori Anda sendiri.
Kloning Repositori: Kloning repositori bercabang Anda ke mesin lokal menggunakan perintah berikut:
git clone https://github.com/Chargily/chargily-pay-csharp.git
Buat Perubahan: Buat perubahan atau penambahan yang Anda inginkan pada basis kode. Pastikan untuk mengikuti standar dan pedoman pengkodean kami.
Uji Perubahan Anda: Uji perubahan Anda secara menyeluruh untuk memastikan perubahan tersebut berfungsi sesuai harapan.
Kirim Permintaan Tarik: Setelah Anda puas dengan perubahan Anda, kirimkan permintaan tarik kembali ke repositori utama. Tim kami akan meninjau kontribusi Anda dan memberikan masukan jika diperlukan.
Ada pertanyaan atau butuh bantuan? Bergabunglah dengan komunitas pengembang kami di Telegram dan terhubung dengan sesama pengembang dan tim kami.
Kami menghargai minat Anda untuk berkontribusi pada Chargily Pay™! Bersama-sama, kita bisa membangun sesuatu yang menakjubkan.
Selamat membuat kode!