Chargily Pay™ の C# パッケージにご興味をお持ちいただきありがとうございます。Chargily 社によるオープン ソース プロジェクトです。Chargily 社は、決済ソリューションと電子商取引の促進を専門とするアルジェリアの大手フィンテック企業です。このパッケージは、電子決済を統合するための最も簡単かつ無料の方法を提供します。 EDAHABIA (Algerie Post) や CIB (SATIM) など、アルジェリアで広く普及している支払い方法を介して C#/ASP.NET プロジェクトに API を追加します。
このパッケージはAhmed Chakhoum (rainxh11)によって開発されており、あなたのような開発者からの貢献を歓迎しています。
ナゲット パッケージ | ダウンロード |
---|---|
有料で支払う: | |
Chargily.Pay.AspNet: |
.NET6.0
以降のバージョンのみがサポートされています。
注: Webhook エンドポイントでチェックアウト ステータスを受信する機能は、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 ) ;
注:チェックアウトは、価格のリストまたは金額 + 通貨を使用して作成できます。
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 パッケージをインストールします。 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 ( ) ;
上記の例では、 Chargily.Pay.AspNet
組み込みの Webhook 署名検証ミドルウェアを提供しており、 builder.Services.AddChargilyPayWebhookValidationMiddleware()
で登録し、 app.UseChargilyPayWebhookValidation()
で使用できます。
ヘッダー名がsignature
あるすべてのPOST
リクエストを検証します。ヘッダー名はapp.UseChargilyPayWebhookValidation("another_name")
でオーバーライドできます。
また、 app.MapChargilyPayWebhookEndpoint()
で登録できる最小限の webapi エンドポイントも組み込まれており、これを使用して手動で検証を処理せずに Webhook 本体にアクセスできます。
Chargily.Pay
とChargily.Pay.AspNet
の両方のナゲット パッケージは、次のコマンドを使用して生成できます。 docker build . -- output = . / output
.nupkg
アーティファクトは./output
フォルダーに保存されますChargily Pay™ パッケージ/プラグインは、さまざまなプログラミング言語やフレームワークへの支払いゲートウェイの統合を容易にするために、Chargily によって公開されたオープンソース プロジェクトのコレクションです。私たちの目標は、支払いをシームレスに受け入れるための使いやすいツールを提供することで、開発者と企業に力を与えることです。
API と統合し、プロジェクトで Chargily Pay™ を利用する方法の詳細については、API ドキュメントを参照してください。
Telegram の開発者コミュニティに参加して、他の開発者とつながり、質問し、Chargily Pay™ に関連する最新ニュースや開発状況の最新情報を入手してください。: Telegram コミュニティ
バグ修正、機能強化、ドキュメントの改善、新しいプラグインやパッケージの開発など、あらゆる種類の貢献を歓迎します。開始方法は次のとおりです。
リポジトリをフォークする:このページの右上隅にある [フォーク] ボタンをクリックして、リポジトリの独自のコピーを作成します。
リポジトリのクローンを作成する:次のコマンドを使用して、フォークされたリポジトリのクローンをローカル マシンに作成します。
git clone https://github.com/Chargily/chargily-pay-csharp.git
変更を加える:コードベースに必要な変更または追加を加えます。必ずコーディング標準とガイドラインに従ってください。
変更をテストする:変更を徹底的にテストして、期待どおりに機能することを確認します。
プル リクエストを送信する:変更に満足したら、プル リクエストをメイン リポジトリに送信して戻します。私たちのチームはあなたの投稿を確認し、必要に応じてフィードバックを提供します。
ご質問がありますか、サポートが必要ですか? Telegram の開発者コミュニティに参加して、他の開発者やチームとつながりましょう。
Chargily Pay™ への貢献にご興味をお持ちいただきありがとうございます。一緒に、素晴らしいものを構築することができます。
コーディングを楽しんでください!