1. Go to this page and download the library: Download haybtech/php-sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
haybtech / php-sdk example snippets
use HayBTech\HayBTech;
$result = HayBTech::payments()->create([...]);
$paymentUrl = $result['data']['payment_url'];
$txnId = $result['data']['id'];
if ($result->successful()) {
// La requete API a reussi
}
use HayBTech\Exceptions\SignatureException;
try {
$event = HayBTech::webhook()::constructEvent(
file_get_contents('php://input'),
$_SERVER['HTTP_X_HAYBTECH_SIGNATURE'] ?? '',
getenv('HAYBTECH_WEBHOOK_SECRET')
);
} catch (SignatureException $e) {
// Signature invalide ou attaque par rejeu detectee
http_response_code(403);
exit;
}
// Traitement de l'evenement
if ($event['event'] === 'payment.success') {
$orderId = $event['data']['merchant_ref'];
}
use HayBTech\HayBTechClient;
use HayBTech\Webhook\AutoVerifier;
use HayBTech\Webhook\FilesystemWebhookSecretCache;
$client = new HayBTechClient(getenv('HAYBTECH_SECRET_KEY'));
$cache = new FilesystemWebhookSecretCache(__DIR__ . '/storage/hayb-cache');
$auto = new AutoVerifier($client, $cache);
try {
$event = $auto->constructEvent(
file_get_contents('php://input'),
$_SERVER['HTTP_X_HAYBTECH_SIGNATURE'] ?? '',
getenv('HAYBTECH_WEBHOOK_ENDPOINT_ID')
);
} catch (\HayBTech\Exceptions\SignatureException $e) {
http_response_code(403); exit;
} catch (\HayBTech\Exceptions\HayBTechException $e) {
http_response_code(503); exit; // HayBTech injoignable → laisse retry
}
// Lister vos endpoints
$endpoints = HayBTech::webhooks()->all();
// Creer un nouvel endpoint
HayBTech::webhooks()->create([
'url' => 'https://api.monsite.com/hooks',
'subscribed_events' => ['payment.success']
]);
// Recuperer le secret HMAC d'un endpoint (utilise par AutoVerifier sous le capot).
// L'auth se fait via votre sk_live_*/sk_test_* ; pas d'OTP cote API merchant.
$res = HayBTech::webhooks()->revealSecret($id);
echo $res['secret'];
// Verifier qu'un endpoint joint correctement HayBTech (ping de test).
HayBTech::webhooks()->sendTestPing($id);
// Rechercher un endpoint par URL exacte (anti-doublon a l'installation).
HayBTech::webhooks()->lookup('https://monsite.sn/hooks');
use HayBTech\Exceptions\ApiException;
use HayBTech\Exceptions\HayBTechException;
try {
$result = HayBTech::payments()->create($params);
} catch (ApiException $e) {
$e->getMessage(); // message lisible
$e->getHttpStatus(); // 400, 422, 500...
$e->getErrorCode(); // ex. "insufficient_funds"
$e->isRetryable(); // true si 5xx ou 429 -> retry avec backoff
} catch (HayBTechException $e) {
// SDK non configure, curl indisponible, cle invalide...
$e->getMessage();
}
// Client explicite (multi-compte, timeout custom)
// N'affecte pas le client partage configure via configure()
// Le mode test/live est determine par la cle (sk_test_… vs sk_live_…), pas par l'URL.
$client = HayBTech::client('sk_test_autre_compte', [
'timeout' => 60,
]);
$client->payments->create([...]);
// payments->retrieve() lit la ligne locale uniquement (rapide, peut etre perime).
$txn = HayBTech::payments()->retrieve('TXN-abc123');
// status->retrieve() pull aussi le PSP si la ligne locale est non-terminale.
// A privilegier quand vous soupconnez un statut periode (sandbox, timeout, etc.).
$txn = HayBTech::status()->retrieve('TXN-abc123');
text
Agis en tant qu'expert en développement PHP. Je souhaite intégrer la solution de paiement HayBTech (Afrique de l'Ouest) sur mon site marchand de A à Z avec le SDK PHP officiel `haybtech/php-sdk`.
Voici ma stack technique actuelle :
- Framework : [ex: Laravel, Symfony, PHP Pur/MVC]
- Base de données & ORM : [ex: Eloquent, Doctrine, PDO]
- Modèle de commande : [décrivez brièvement votre structure de table Order]
Tâches à accomplir dans le code généré :
1. **Configuration** : Initialiser le SDK HayBTech (`HayBTech::configure(...)` ou via la clé `HAYBTECH_SECRET_KEY` dans le fichier `.env`).
2. **Création du Paiement** : Créer un contrôleur de checkout. Récupérer la commande, appeler `HayBTech::payments()->create([...])` avec `merchant_ref`, `amount`, `currency` (XOF), `success_url`, `failed_url`, et `callback_url`. Rediriger automatiquement le client avec la méthode `$result->redirect()` ou renvoyer l'URL.
3. **Webhook de Validation** : Créer la route de webhook. Elle doit :
- Récupérer le flux brut (`file_get_contents('php://input')`) et le header `HTTP_X_HAYBTECH_SIGNATURE`.
- Valider la signature via `HayBTech::webhook()::constructEvent(...)` ou `AutoVerifier` pour sécuriser l'endpoint sans faille de sécurité.
- Vérifier de manière idempotente si la commande n'est pas déjà validée en base de données.
- Traiter `payment.success` (livrer la commande/passer le statut à payé) et `payment.failed` (annuler la commande).
- Renvoyer un code HTTP 200.
4. **Sécurité & Gestion des Erreurs** : Gérer les exceptions `ApiException` et `SignatureException` de manière sécurisée en masquant les données sensibles dans les logs.
Génère un code propre, conforme aux bonnes pratiques PHP modernes (PSR), bien commenté et prêt à l'emploi.