Appearance
SDK .NET
Bibliothèque officielle pour .NET 6+. Disponible sur NuGet sous HayBTech.Sdk.
Intégration par IA (Prompt pour Marchands)
Si vous utilisez un assistant IA (comme Cursor, GitHub Copilot, ChatGPT, Claude, etc.), vous pouvez copier-coller le prompt suivant pour intégrer ce SDK de A à Z dans votre projet :
text
Agis en tant qu'expert en développement .NET / C#. Je souhaite intégrer le SDK .NET officiel de HayBTech (`HayBTech.Sdk`) pour ajouter les paiements mobiles (Wave, Orange Money, etc.) sur mon e-commerce de A à Z.
Voici ma stack technique actuelle :
- Framework : ASP.NET Core [ex: Minimal API, MVC Controller]
- Base de données & ORM : Entity Framework Core (EF Core) avec [ex: SQL Server, PostgreSQL]
- Entité Commande : [décrivez brièvement votre classe Order]
Tâches à accomplir dans le code généré :
1. **Configuration** : Initialiser `HayBTechClient` en injectant la clé secrète via l'injection de dépendances (configuration `appsettings.json` ou secrets d'environnement `HAYBTECH_SECRET_KEY`).
2. **API Checkout** : Implémenter un endpoint/contrôleur qui crée le paiement en appelant `client.Payments.CreateAsync(...)` avec les paramètres requis (merchant_ref, amount, currency='XOF', success_url, failed_url, callback_url). Mettre à jour le statut initial de la commande et renvoyer la `payment_url` vers le client.
3. **API Webhook** : Créer un endpoint sécurisé pour le webhook. Il doit :
- Lire le corps de la requête brut en asynchrone (`StreamReader`).
- Récupérer le header `X-HayBTech-Signature` (ou `X-HayB-Signature`).
- Valider la signature avec `Webhook.ConstructEvent(payload, signature, secret)` avec le secret de webhook (`HAYBTECH_WEBHOOK_SECRET`).
- Récupérer la commande de manière sécurisée et idempotente, mettre à jour son statut selon que l'événement est `payment.success` ou `payment.failed`.
- Retourner un statut HTTP 200 (`Results.Ok`).
4. **Robustesse** : Utiliser la gestion d'exceptions globale, journaliser les erreurs et assurer la sécurité contre les attaques par rejeu et temporelles.
Génère du code C# moderne, asynchrone, bien commenté et prêt à l'emploi.Installation (NuGet)
bash
dotnet add package HayBTech.SdkConfiguration
csharp
using HayBTech.Sdk;
var client = new HayBTechClient(Environment.GetEnvironmentVariable("HAYBTECH_SECRET_KEY"));Paiements
csharp
var response = await client.Payments.CreateAsync(new {
merchant_ref = "ORDER-123",
amount = 5000,
currency = "XOF",
success_url = "https://monsite.sn/succes",
failed_url = "https://monsite.sn/echec",
callback_url = "https://monsite.sn/webhook"
});Webhooks (ASP.NET Core)
csharp
[HttpPost("webhook")]
public async Task<IActionResult> Webhook()
{
var json = await new StreamReader(HttpContext.Request.Body).ReadToEndAsync();
var signature = Request.Headers["X-HayB-Signature"];
var secret = _config["HayBTech:WebhookSecret"];
try
{
var eventObj = HayBTechWebhook.ConstructEvent(json, signature, secret);
// Traitez eventObj
return Ok();
}
catch (HayBTechSignatureException)
{
return BadRequest();
}
}Sécurité
- HttpClient Natif : Utilisation des API sécurisées de Microsoft.
- Timing Attack : Utilise
CryptographicOperations.FixedTimeEquals. - Masquage : Clé masquée dans
ToString().
