PHPackages                             garboko/moov-money-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. garboko/moov-money-sdk

ActiveLibrary[Payment Processing](/categories/payments)

garboko/moov-money-sdk
======================

SDK PHP pour l'intégration de l'API de paiement mobile Moov Money

v1.0.0(1y ago)021MITPHPPHP &gt;=7.4

Since Mar 23Pushed 1y agoCompare

[ Source](https://github.com/Garboko/moov-money-sdk)[ Packagist](https://packagist.org/packages/garboko/moov-money-sdk)[ RSS](/packages/garboko-moov-money-sdk/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (4)Versions (2)Used By (0)

Moov Money SDK PHP
==================

[](#moov-money-sdk-php)

SDK PHP officiel pour l'intégration des API de paiement mobile Moov Money.

[![Latest Version on Packagist](https://camo.githubusercontent.com/fd008058616a58fcaccef97b8b30006e9bd3c79272629ccb360aa15819a1c4e2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f676172626f6b6f2f6d6f6f762d6d6f6e65792d73646b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/garboko/moov-money-sdk)[![Tests](https://camo.githubusercontent.com/0a72f010331b6b24c396f547b40a793754c99c672ab6191e1c1c735a366d7b01/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f676172626f6b6f2f6d6f6f762d6d6f6e65792d73646b2f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/garboko/moov-money-sdk/actions/workflows/run-tests.yml)[![Total Downloads](https://camo.githubusercontent.com/3fe26a0250e3943cd01dd1f52614446ded31f61bbed3ff6d26469136c4a76c1b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f676172626f6b6f2f6d6f6f762d6d6f6e65792d73646b2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/garboko/moov-money-sdk)

Ce SDK facilite l'intégration avec l'API de paiement mobile Moov Money dans vos applications PHP et gère automatiquement:

- L'authentification et la sécurité des requêtes
- La validation des données
- La gestion des erreurs et exceptions
- Les opérations de paiement par OTP, transferts d'argent, et plus

Installation
------------

[](#installation)

### Composer

[](#composer)

```
composer require garboko/moov-money-sdk
```

### Git

[](#git)

```
git clone https://github.com/Garboko/moov-money-sdk.git
```

Configuration
-------------

[](#configuration)

```
use MoovMoney\Config;
use MoovMoney\Client;

// Créer la configuration
$config = new Config(
    'api_url', // URL de l'API
    'votre_nom_utilisateur',  // Nom d'utilisateur fourni par Moov
    'votre_mot_de_passe',     // Mot de passe fourni par Moov
    false,  // Mode test (true pour l'environnement de test)
    30,     // Timeout en secondes
    true    // Vérification SSL
);

// Initialiser le client
$client = new Client($config);
```

Fonctionnalités
---------------

[](#fonctionnalités)

### Vérifier le statut d'un abonné

[](#vérifier-le-statut-dun-abonné)

```
try {
    $response = $client->subscribers()->checkStatus('22662356789');

    // Accéder aux informations de l'abonné
    if ($response['status'] === '0') {
        $subscriberData = json_decode($response['extended-data']['data']['subscriber-details'], true);
        echo "Statut: " . $subscriberData['status'] . "\n";
        echo "Nom: " . $subscriberData['firstname'] . ' ' . $subscriberData['lastname'] . "\n";
    }
} catch (\MoovMoney\Exceptions\ApiException $e) {
    echo "Erreur API: " . $e->getMessage();
} catch (\Exception $e) {
    echo "Erreur: " . $e->getMessage();
}
```

### Paiement avec validation OTP (flux complet)

[](#paiement-avec-validation-otp-flux-complet)

```
try {
    // Étape 1: Générer l'OTP (envoyé par SMS au client)
    $createResponse = $client->otpPayments()->create(
        '22662356789',     // Numéro du client (qui sera débité)
        1000,              // Montant (dans la devise locale)
        'Achat en ligne'   // Description
    );

    if ($createResponse['status'] === '0') {
        $transId = $createResponse['trans-id'];
        echo "OTP envoyé avec succès! Référence: $transId\n";

        // Dans un cas réel, l'utilisateur saisit le code OTP ici
        $otp = '123456'; // Code reçu par SMS

        // Étape 2: Valider l'OTP pour finaliser le paiement
        $validateResponse = $client->otpPayments()->validate(
            '22662356789',     // Même numéro qu'à l'étape 1
            1000,              // Même montant qu'à l'étape 1
            $otp,              // Code OTP
            $transId,          // ID de transaction reçu à l'étape 1
            'Validation paiement'
        );

        if ($validateResponse['status'] === '0') {
            echo "Paiement réussi! Référence: " . $validateResponse['trans-id'] . "\n";
        } else {
            echo "Échec de validation: " . $validateResponse['message'] . "\n";
        }
    } else {
        echo "Échec de création OTP: " . $createResponse['message'] . "\n";
    }
} catch (\MoovMoney\Exceptions\ApiException $e) {
    echo "Erreur API: " . $e->getMessage();
}
```

### Transfert d'argent

[](#transfert-dargent)

```
try {
    // Transfert simple vers un autre compte
   $response = $client->cashTransfers()->transfer(
        '22662356789',     // Numéro du destinataire (qui sera crédité)
        500,               // Montant à transférer (devise locale)
        'Remboursement',   // Description qui apparaîtra sur le relevé
        [],                // Données étendues (optionnel)
        null,              // ID de requête personnalisé (optionnel)
        '22601234561',     // Numéro de l'expéditeur (obligatoire)
        0000               // Code d'authentification (PIN, obligatoire)
    );

    if ($response['status'] === '0') {
        echo "Transfert réussi! Référence: " . $response['trans-id'] . "\n";
    } else {
        echo "Échec du transfert: " . $response['message'] . "\n";
    }
} catch (\MoovMoney\Exceptions\ApiException $e) {
    echo "Erreur API: " . $e->getMessage();
}
```

### Transfert transfrontalier

[](#transfert-transfrontalier)

```
try {
    $response = $client->cashTransfers()->crossBorderTransfer(
        '22962356789',           // Numéro du destinataire international
        1000,                    // Montant à transférer
        'Transfert international', // Description
        [],                      // Données étendues (optionnel)
        null,                    // ID de requête personnalisé (optionnel)
        '22601234561',           // Numéro de l'expéditeur (obligatoire)
        0000                     // Code d'authentification (PIN, obligatoire)
    );

    if ($response['status'] === '0') {
        echo "Transfert international réussi! Référence: " . $response['trans-id'] . "\n";
    } else {
        echo "Échec du transfert: " . $response['message'] . "\n";
    }
} catch (\Exception $e) {
    echo "Erreur: " . $e->getMessage();
}
```

### Vérifier le statut d'une transaction

[](#vérifier-le-statut-dune-transaction)

```
try {
    $response = $client->transactions()->checkStatus('OTPMerchantPayment-000000201120240001');

    if ($response['status'] === '0') {
        $data = $response['extended-data']['data'];
        echo "Référence: " . $data['reference-id'] . "\n";
        echo "Statut: " . $data['status-description'] . "\n";
    } else {
        echo "Échec de la vérification: " . $response['message'] . "\n";
    }
} catch (\Exception $e) {
    echo "Erreur: " . $e->getMessage();
}
```

### Enregistrement d'un nouvel abonné

[](#enregistrement-dun-nouvel-abonné)

```
try {
    $subscriberData = [
        'msisdn' => '22662356789',       // Numéro de téléphone
        'lastname' => 'Doe',             // Nom
        'firstname' => 'John',           // Prénom
        'idnumber' => '123456789',       // Numéro d'identification
        'iddescription' => 'CARTE NATIONALE D\'IDENTITÉ',  // Type d'ID
        'gender' => 'HOMME',             // Genre (HOMME/FEMME)
        'dateofbirth' => '01011990',     // Format: ddMMyyyy
        'placeofbirth' => 'Abidjan',     // Lieu de naissance
        'city' => 'Abidjan',             // Ville
        'region' => 'Sud',               // Région (optionnel)
        'country' => 'Côte d\'Ivoire'    // Pays (optionnel)
    ];

    $response = $client->subscribers()->register($subscriberData);

    if ($response['status'] === '0') {
        echo "Enregistrement réussi! Référence: " . $response['trans-id'] . "\n";
    } else {
        echo "Échec de l'enregistrement: " . $response['message'] . "\n";
    }
} catch (\MoovMoney\Exceptions\ValidationException $e) {
    echo "Erreur de validation: " . $e->getMessage();
} catch (\Exception $e) {
    echo "Erreur: " . $e->getMessage();
}
```

Gestion des erreurs
-------------------

[](#gestion-des-erreurs)

Le SDK gère les exceptions suivantes:

- `ApiException` - Erreur générale de l'API
- `AuthenticationException` - Erreur d'authentification
- `ValidationException` - Erreur de validation des données

```
try {
    // Votre code utilisant le SDK
} catch (\MoovMoney\Exceptions\AuthenticationException $e) {
    // Problème d'authentification (identifiants invalides)
    echo "Erreur d'authentification: " . $e->getMessage();
} catch (\MoovMoney\Exceptions\ValidationException $e) {
    // Problème avec les données fournies
    echo "Erreur de validation: " . $e->getMessage();
} catch (\MoovMoney\Exceptions\ApiException $e) {
    // Erreur API générale
    echo "Erreur API: " . $e->getMessage();
    echo "Code: " . $e->getCode();
} catch (\Exception $e) {
    // Autre erreur
    echo "Erreur: " . $e->getMessage();
}
```

Codes de statut
---------------

[](#codes-de-statut)

Les réponses de l'API utilisent généralement ces codes de statut:

CodeDescription0Succès11N'existe pas12Échec15En attente401Non autorisé404Lien introuvable500Erreur internePersonnalisation
----------------

[](#personnalisation)

### Client HTTP personnalisé

[](#client-http-personnalisé)

Vous pouvez fournir votre propre implémentation du client HTTP:

```
use MoovMoney\Config;
use MoovMoney\Client;
use MoovMoney\HttpClient\HttpClientInterface;

class MyCustomHttpClient implements HttpClientInterface
{
    // Implémentation personnalisée
}

$config = new Config(/* ... */);
$httpClient = new MyCustomHttpClient();
$client = new Client($config, $httpClient);
```

Tests
-----

[](#tests)

```
composer test
```

Développement et contribution
-----------------------------

[](#développement-et-contribution)

1. Fork le dépôt
2. Créer une branche pour votre fonctionnalité (`git checkout -b feature/amazing-feature`)
3. Committez vos changements (`git commit -m 'feat: ajout d'une fonctionnalité'`)
4. Poussez la branche (`git push origin feature/amazing-feature`)
5. Ouvrez une Pull Request

Support
-------

[](#support)

Pour toute question ou problème concernant ce SDK, contactez  ou ouvrez une issue sur GitHub.

Licence
-------

[](#licence)

[MIT](./LICENSE)

À propos de Garboko
-------------------

[](#à-propos-de-garboko)

Ce SDK est maintenu par Garboko. Il vise à faciliter l'intégration des API de paiement mobile Moov Money pour les développeurs PHP au Burkina Faso et dans la région.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance47

Moderate activity, may be stable

Popularity3

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

416d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c63c745aef90ee953ddeccfdf9a0b41e0c44f4ce2355c9fda8222a5cf9b0d763?d=identicon)[Garboko](/maintainers/Garboko)

---

Top Contributors

[![Garboko](https://avatars.githubusercontent.com/u/88241365?v=4)](https://github.com/Garboko "Garboko (6 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/garboko-moov-money-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/garboko-moov-money-sdk/health.svg)](https://phpackages.com/packages/garboko-moov-money-sdk)
```

###  Alternatives

[chargebee/chargebee-php

ChargeBee API client implementation for PHP

768.0M9](/packages/chargebee-chargebee-php)[imdhemy/google-play-billing

Google Play Billing

491.3M5](/packages/imdhemy-google-play-billing)[bitpay/sdk

Complete version of the PHP library for the new cryptographically secure BitPay API

42337.5k4](/packages/bitpay-sdk)[buckaroo/sdk

Buckaroo payment SDK

12189.1k9](/packages/buckaroo-sdk)[contica/facturador-electronico-cr

Un facturador de código libre para integrar facturación electrónica en Costa Rica a un proyecto PHP

2128.8k](/packages/contica-facturador-electronico-cr)[karson/mpesa-php-sdk

172.2k](/packages/karson-mpesa-php-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
