ขอขอบคุณที่สนใจแพ็คเกจ C# ของ Chargily Pay™ ซึ่งเป็นโครงการโอเพ่นซอร์สโดย Chargily บริษัทฟินเทคชั้นนำในประเทศแอลจีเรียที่เชี่ยวชาญด้านโซลูชันการชำระเงินและการอำนวยความสะดวกด้านอีคอมเมิร์ซ แพ็คเกจนี้มอบวิธีที่ง่ายและฟรีในการผสานรวมการชำระเงินทางอิเล็กทรอนิกส์ API ผ่านวิธีการชำระเงินที่แพร่หลายในแอลจีเรีย เช่น EDAHABIA (Algerie Post) และ CIB (SATIM) ในโครงการ C#/ASP.NET ของคุณ
แพ็คเกจนี้พัฒนาโดย Ahmed Chakhoum (rainxh11) และเปิดรับการสนับสนุนจากนักพัฒนาเช่นคุณ
Nuget Pacakge | ดาวน์โหลด |
---|---|
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()
มันจะตรวจสอบคำขอ POST
ใด ๆ ที่มีชื่อส่วนหัว: signature
คุณสามารถแทนที่ชื่อส่วนหัวด้วย app.UseChargilyPayWebhookValidation("another_name")
นอกจากนี้ยังมีจุดสิ้นสุด webapi ขั้นต่ำในตัวที่สามารถลงทะเบียนกับ app.MapChargilyPayWebhookEndpoint()
และใช้เพื่อเข้าถึงเนื้อความของ webhook โดยไม่ต้องจัดการการตรวจสอบด้วยตนเอง
Chargily.Pay
และ Chargily.Pay.AspNet
แพ็คเกจ nuget สามารถสร้างขึ้นได้โดยใช้คำสั่งนี้: docker build . -- output = . / output
.nupkg
สิ่งประดิษฐ์จะถูกบันทึกลงในโฟลเดอร์ ./output
แพ็คเกจ/ปลั๊กอิน Chargily Pay™ คือชุดของโครงการโอเพ่นซอร์สที่เผยแพร่โดย Chargily เพื่ออำนวยความสะดวกในการรวมเกตเวย์การชำระเงินของเราเข้ากับภาษาและเฟรมเวิร์กการเขียนโปรแกรมต่างๆ เป้าหมายของเราคือการเสริมศักยภาพให้กับนักพัฒนาและธุรกิจด้วยการจัดหาเครื่องมือที่ใช้งานง่ายเพื่อรับการชำระเงินได้อย่างราบรื่น
สำหรับคำแนะนำโดยละเอียดเกี่ยวกับวิธีการผสานรวมกับ API ของเราและใช้ Chargeily Pay™ ในโปรเจ็กต์ของคุณ โปรดดูเอกสารประกอบ API ของเรา
เข้าร่วมชุมชนนักพัฒนาของเราบน Telegram เพื่อเชื่อมต่อกับเพื่อนนักพัฒนา ถามคำถาม และติดตามข่าวสารล่าสุดและการพัฒนาที่เกี่ยวข้องกับ Chargily Pay™ : ชุมชน Telegram
เรายินดีรับความช่วยเหลือทุกประเภท ไม่ว่าจะเป็นการแก้ไขจุดบกพร่อง การปรับปรุงคุณสมบัติ การปรับปรุงเอกสาร หรือการพัฒนาปลั๊กอิน/แพ็คเกจใหม่ ต่อไปนี้คือวิธีการเริ่มต้น:
แยกพื้นที่เก็บข้อมูล: คลิกปุ่ม "แยก" ที่มุมขวาบนของหน้านี้เพื่อสร้างสำเนาของพื้นที่เก็บข้อมูลของคุณเอง
โคลนพื้นที่เก็บข้อมูล: โคลนพื้นที่เก็บข้อมูลที่แยกของคุณไปยังเครื่องของคุณโดยใช้คำสั่งต่อไปนี้:
git clone https://github.com/Chargily/chargily-pay-csharp.git
ทำการเปลี่ยนแปลง: ทำการเปลี่ยนแปลงหรือเพิ่มเติมตามที่คุณต้องการในโค้ดเบส อย่าลืมปฏิบัติตามมาตรฐานและแนวทางการเขียนโค้ดของเรา
ทดสอบการเปลี่ยนแปลงของคุณ: ทดสอบการเปลี่ยนแปลงของคุณอย่างละเอียดเพื่อให้แน่ใจว่าการเปลี่ยนแปลงทำงานได้ตามที่คาดหวัง
ส่งคำขอดึงข้อมูล: เมื่อคุณพอใจกับการเปลี่ยนแปลงแล้ว ให้ส่งคำขอดึงข้อมูลกลับไปยังพื้นที่เก็บข้อมูลหลัก ทีมของเราจะตรวจสอบการมีส่วนร่วมของคุณและให้ข้อเสนอแนะหากจำเป็น
มีคำถามหรือต้องการความช่วยเหลือ? เข้าร่วมชุมชนนักพัฒนาของเราบน Telegram และเชื่อมต่อกับเพื่อนนักพัฒนาและทีมของเรา
ขอขอบคุณที่คุณสนใจร่วมบริจาคให้กับ Chargily Pay™! เราสามารถสร้างสิ่งมหัศจรรย์ร่วมกันได้
ขอให้มีความสุขในการเขียนโค้ด!