Skip to content

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.Sdk

Configuration

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().

Documentation de l'API de paiement HayBTech.