Skip to content

Commit

Permalink
Merge pull request #6 from v1p3r75/environment-manager
Browse files Browse the repository at this point in the history
add support for multiple environments (sandbox and production)
  • Loading branch information
v1p3r75 authored Dec 11, 2024
2 parents 1bc5c03 + 638dc10 commit e1aa4f7
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 7 deletions.
41 changes: 35 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ composer require v1p3r75/moov-money-api-sdk

## Configuration

Avant d’utiliser le SDK, configurez les identifiants de connexion, l’URL de l’API, le timeout pour les requêtes, clé de chiffrements, etc.
Avant d’utiliser le SDK, configurez les identifiants de connexion, le timeout pour les requêtes, clé de chiffrements, l’environnement (sandbox ou production), etc.
Le SDK inclut une classe `MoovMoneyAPIConfig` pour simplifier cette configuration.

```php
Expand All @@ -45,7 +45,7 @@ $config = new MoovMoneyAPIConfig();
$config->setUsername('your_username')
->setPassword('your_password')
->setRequestTimeout(30) // en secondes
->setBaseUrl('https://api.server.com/');
->useSandbox(true); // Active le mode sandbox (désactivez pour production)

$moovApi = new MoovMoneyAPI($config);

Expand All @@ -55,11 +55,40 @@ $moovApi = new MoovMoneyAPI($config);

| Option | Type | Description |
| ---------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `username` | `string` | Nom d'utilisateur fourni par Moov Money. |
| `password` | `string` | Mot de passe pour l'authentification de l'API Moov Money. |
| `baseUrl` | `string` | URL de l'API Moov Money. |
| `username` | `string` | Nom d'utilisateur fourni par Moov Money.|
| `password` | `string` | Mot de passe pour l'authentification de l'API Moov Money.|
| `baseUrl` | `string` | URL de l'API Moov Money. Par défaut, l'URL du mode sandbox est utilisée. En mode production, l'URL de prod est automatiquement définie lors de l'appel à useSandbox(false).|
| `encryptionKey` | `string` | Clé de chiffrement pour générer les tokens d'authentification (32 caractères pour AES-256). Le SDK utilise la clé fournie par Moov : `tlc12345tlc12345tlc12345tlc12345`. Vous ne devez pas modifier cette clé, sauf si Moov en fournit une nouvelle. |
| `requestTimeout` | `float` | Durée maximale (en secondes) pour les requêtes HTTP (60 par défaut). |
| `requestTimeout` | `float` | Durée maximale (en secondes) pour les requêtes HTTP (60 par défaut).|
| `useSandbox` | `bool` | Définit l'environnement (`true` pour `sandbox`, `false` pour `production`). Par défaut, le mode sandbox est activé.|

#### Gestion des Environnements (Sandbox et Production)

Le SDK prend en charge deux environnements : `sandbox` (test) et `production`.

Par défaut, l'environnement est configuré en mode sandbox pour garantir que les appels initiaux n'affectent pas les transactions réelles.
Vous pouvez basculer entre les environnements en utilisant la méthode `useSandbox`.

##### Exemple :
```php
<?php

$config = new MoovMoneyAPIConfig();

// Activer le mode production
$config->useSandbox(false);

// Vérifier l'environnement actif
if ($config->isSandbox()) {
echo "Environnement actif : Sandbox";
} else {
echo "Environnement actif : Production";
}
```

Lorsque vous passez en mode production avec useSandbox(false), l'URL de base (`https://testapimarchand2.moov-africa.bj:2010/com.tlc.merchant.api/UssdPush?wsdl`) est automatiquement mise à jour vers l'URL de production (`https://apimarchand.moov-africa.bj/com.tlc.merchant.api/UssdPush?wsdl`).

##### NB : _Si vous constatez que les URL utilisées par le SDK ne correspondent pas à celles fournies par Moov Money, n'hésitez pas à utiliser la méthode `setBaseUrl` pour les définir directement_.

## Fonctionnalités

Expand Down
23 changes: 22 additions & 1 deletion src/MoovMoneyAPIConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,22 @@
*/
final class MoovMoneyAPIConfig implements ConfigurationInterface
{
public const API_SANDBOX_URL = 'https://testapimarchand2.moov-africa.bj:2010/com.tlc.merchant.api/UssdPush?wsdl';

public const API_PRODUCTION_URL = 'https://apimarchand.moov-africa.bj/com.tlc.merchant.api/UssdPush?wsdl';

private string $username;

private string $password;

private string $baseUrl;
private string $baseUrl = self::API_SANDBOX_URL;

private string $encryptionKey = "tlc12345tlc12345tlc12345tlc12345";

private float $requestTimeout = 60;

private bool $useSandbox = true;

/**
* Gets the configured username for API authentication.
*
Expand Down Expand Up @@ -134,6 +140,21 @@ public function setRequestTimeout(float $requestTimeout): self
return $this;
}

public function useSandbox(bool $useSandbox): self
{
$this->useSandbox = $useSandbox;

if (!$useSandbox) {
$this->setBaseUrl(self::API_PRODUCTION_URL);
}
return $this;
}

public function isSandbox(): bool
{
return $this->useSandbox;

}
public function isValid(): bool
{
return isset($this->username, $this->password, $this->baseUrl);
Expand Down
16 changes: 16 additions & 0 deletions tests/Feature/MoovMoneyAPIConfigTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,20 @@

expect($config->isValid())->toBeTrue();

});

it('should manage environment mode', function() {

$config = new MoovMoneyAPIConfig();
expect($config->isSandbox())->toBeTrue();
expect($config->getBaseUrl())->toBe($config::API_SANDBOX_URL);


$config->useSandbox(false);
expect($config->isSandbox())->toBeFalse();
expect($config->getBaseUrl())->toBe($config::API_PRODUCTION_URL);

$newConfig = new MoovMoneyAPIConfig();
$newConfig->setBaseUrl('base_url');
expect($newConfig->getBaseUrl())->toBe("base_url");
});

0 comments on commit e1aa4f7

Please sign in to comment.