IntegrationsSDKs

SDK Go

Utiliser le SDK officiel Novasend cote Go.

Le SDK officiel Novasend pour Go est conçu pour être simple, performant et sans dépendance externe. Il utilise exclusivement la bibliothèque standard de Go.

Installation

Récupérez le module Go :

go get github.com/novasend/novasend-go

Configuration

Initialisez le client avec vos identifiants (disponibles sur le Portail Novasend). Nous vous recommandons d'utiliser os.Getenv pour charger vos clés.

import (
    "os"
    "time"
    novasend "github.com/novasend/novasend-go"
)

client, err := novasend.NewClient(novasend.Config{
    APIKey:    os.Getenv("NOVASEND_API_KEY"),
    SecretKey: os.Getenv("NOVASEND_SECRET_KEY"),
    BaseURL:   os.Getenv("NOVASEND_BASE_URL"),
    Language:  "fr",
    Timeout:   30 * time.Second,
})

Utilisation

Paiement Wallet (Redirection)

resp, err := client.CreateWalletPayment(ctx, &novasend.WalletPaymentRequest{
    Reference:    "ref_999",
    Amount:       1500,
    MSISDN:       "+2250100000000",
    CustomerName: "Moussa Traoré",
    Country:      "CI",
    Action: novasend.PaymentAction{
        SuccessURL: "https://votre-app.com/success",
        FailureURL: "https://votre-app.com/fail",
    },
})

if err == nil {
    fmt.Println("URL de paiement :", resp.PaymentURL)
}

Vérifier le Statut

status, err := client.GetPaymentStatus(ctx, "ref_999")
if err == nil {
    fmt.Println("Statut :", status.Status)
}

Webhooks

Vérifiez les signatures des webhooks avec la bibliothèque standard (HMAC-SHA256).

wh, _ := novasend.NewWebhooks(os.Getenv("NOVASEND_WEBHOOK_SECRET"))

http.HandleFunc("/webhook", func(w http.ResponseWriter, r *http.Request) {
    body, _ := io.ReadAll(r.Body)
    sig := r.Header.Get("X-Signature-Value")

    event, err := wh.VerifySignature(body, sig)
    if err != nil {
        w.WriteHeader(http.StatusUnauthorized)
        return
    }
    // Traitement de l'événement
    w.WriteHeader(http.StatusOK)
})

Gestion des Erreurs

Le SDK utilise un type d'erreur personnalisé APIError pour vous donner accès aux détails renvoyés par Novasend.

if err != nil {
    var apiErr *novasend.APIError
    if errors.As(err, &apiErr) {
        fmt.Printf("Erreur API %d : %s\n", apiErr.StatusCode, apiErr.Message)
    }
}

Le SDK Go ne possède aucune dépendance externe, ce qui garantit une intégration légère et une sécurité maximale pour vos binaires.