Une API PHP simple et efficace pour la conversion de devises basée sur les taux de change, avec l'Euro comme devise de référence.
- Conversion de devises : Convertit entre différentes devises avec des taux en temps réel
- Taux basés sur l'Euro : Utilise l'Euro comme devise de référence pour tous les calculs
- Cache intelligent : Met en cache les taux pendant 2 heures pour optimiser les performances
- API RESTful : Interface simple via requêtes POST
- Support multi-devises : Support de plus de 170 devises mondiales
currency/
├── classes/
│ └── xe.php # Classe principale pour la gestion des taux de change
├── public/
│ └── call.php # Point d'entrée de l'API
├── Currency.postman_collection.json # Collection Postman pour les tests
└── README.md # Ce fichier
- Fonctionnalités
- Installation
- Utilisation
- Tests avec Postman
- Logique de conversion
- Optimisations
- Limitations
- Maintenance
- Développement
- Contribution
- Licence
- PHP 7.4 ou supérieur
- Serveur web (Apache, Nginx, Laragon, XAMPP, etc.)
- Extension PHP
json - Accès Internet pour récupérer les taux de change
-
Cloner ou télécharger le projet dans votre répertoire web :
git clone https://github.com/votre-username/currency-converter.git currency cd currency -
Configurer votre serveur web pour pointer vers le dossier du projet
-
Tester l'installation :
- Accédez à
http://votre-domaine/currency/public/call.php - Vous devriez voir une erreur JSON indiquant les paramètres manquants
- Accédez à
URL : POST /public/call.php
from_currency: Code de la devise source (ex: "CAD", "USD", "GBP")to_currency: Code de la devise cible (ex: "EUR", "USD", "JPY")method: Méthode à utiliser (getConversionougetRates)
Exemple de requête :
POST /public/call.php
Content-Type: application/x-www-form-urlencoded
from_currency=CAD&to_currency=USD&method=getConversionRéponse :
{
"from_currency": "CAD",
"to_currency": "USD",
"rate": 0.7234567890
}Exemple de requête :
POST /public/call.php
Content-Type: application/x-www-form-urlencoded
from_currency=EUR&to_currency=USD&method=getRatesRéponse :
{
"timestamp": 1640995200,
"rates": {
"USD": 1,
"EUR": 0.8834,
"GBP": 0.7456,
"CAD": 1.2345,
"...": "..."
}
}Devises d'entrée et de sortie manquantes: Paramètresfrom_currencyouto_currencymanquantsMéthode obligatoire: ParamètremethodmanquantMéthode inconnue: Méthode non supportéeEUR non trouvé dans les taux: Problème avec les données de l'APIDevise non trouvée dans les taux: Code de devise invalideFailed to retrieve data: Erreur de connexion à l'APIFailed to parse response: Erreur de parsing JSON
- Ouvrez Postman
- Cliquez sur "Import"
- Sélectionnez le fichier
Currency.postman_collection.json - La collection "Currency" sera ajoutée à votre workspace
La collection Postman contient :
- getCurrency : Exemple de conversion CAD → USD
- Méthode : POST
- URL :
http://currency.test/public/call.php - Body : form-data avec
from_currency,to_currency, etmethod
Modifiez les variables dans Postman :
- Changez l'URL selon votre configuration locale
- Testez différentes combinaisons de devises
- Essayez les deux méthodes disponibles
- Source des données : fournit les taux avec USD = 1 comme base
- Conversion vers EUR : Le système recalcule tous les taux avec EUR comme référence
- Formule de conversion :
Taux_EUR_Base = Taux_EUR_USD / Taux_Devise_USD Conversion = (1 / Taux_From_EUR) × Taux_To_EUR
Si l'API retourne :
- USD = 1
- EUR = 0.85
- CAD = 1.25
Le système calcule :
- EUR = 1 (référence)
- USD = 0.85/0.85 = 1.176
- CAD = 0.85/1.25 = 0.68
Pour convertir CAD → USD : (1/0.68) × 1.176 = 1.729
- Durée : 2 heures
- Stockage : Variable statique en mémoire
- Avantage : Réduit les appels API et améliore les performances
- User-Agent : Simule un navigateur moderne
- Referer : Référence dynamique selon les devises
- Authorization : Token d'authentification
- Surveillez les erreurs dans les logs du serveur web
- Testez périodiquement avec différentes devises
- Headers HTTP : Peuvent nécessiter une mise à jour si l'API change
- Token d'authentification : À renouveler si expiré
- URL API : Vérifier si l'API modifie son endpoint
- Nouvelles méthodes : Ajoutez des cases dans le switch de
call.php - Nouvelles sources : Créez de nouvelles classes dans
/classes/ - Cache avancé : Implémentez Redis ou fichiers pour la persistance
- Activez
error_reportingen développement - Utilisez
var_dump()pour inspecter les réponses - Vérifiez les logs du serveur web
<?php
// Exemple d'utilisation directe de la classe
require_once 'classes/xe.php';
$parameters = [
'from_currency' => 'GBP',
'to_currency' => 'JPY'
];
$xe = new XE($parameters);
$result = $xe->getConversion($parameters);
if (isset($result['error'])) {
echo "Erreur : " . $result['error'];
} else {
echo "1 {$result['from_currency']} = {$result['rate']} {$result['to_currency']}";
}
?>Les contributions sont les bienvenues ! Voici comment contribuer :
- Fork le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add some AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
Si vous trouvez un bug ou avez une suggestion :
- Ouvrez une issue
- Décrivez le problème ou la fonctionnalité souhaitée
- Ajoutez des exemples si possible
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.