Journal des modifications
Les changements notables de l'API SOAMTAR sont listés ici. Versionnement SemVer sur le préfixe d'URL.
[1.7.0] - 2026-10-22
Ajouté
- API de remboursement :
POST/v1/refunds(total ou partiel ; omettezamountpour tout le montant restant),GET/v1/refunds/{id}etGET/v1/refunds. Le montant est recrédité sur le numéro Orange Money du payeur et débité de votre solde ; le crédit est asynchrone (processing, puissuccessoufailed). Scopecan_refundrequis. Voir Remboursements. - Webhooks de remboursement :
refund.success,refund.failed, et sur le paiementpayment.refunded/payment.partially_refunded(avecdata.refund). Un jeu d'événements par remboursement. callback_urllivrée : lacallback_urlHTTPS facultative d'un paiement ou d'un paiement sortant reçoit désormais tous les événements de cette transaction, avec le même payload, la mêmeX-Soamtar-Signature(secret de votre plus ancien endpoint webhook actif du même environnement) et les mêmes relances. Voir Webhooks.- Signature facultative des requêtes : en-têtes
Soamtar-Timestamp+Soamtar-Signature: v1=…sur les requêtes non-GET, disponible en option dans chaque SDK. Voir Authentification.
Modifié
- Catalogue des événements webhook : seuls les événements réellement émis par SOAMTAR peuvent être souscrits (
payment.*,payout.*,refund.*,payout_request.*). Le bouton de test etPOST/v1/webhooks/testenvoient tous deuxwebhook.test, livré quelles que soient les souscriptions. - SDK 1.1.0 : conventions communes à tous les langages — variables d'environnement
SOAMTAR_SECRET_KEYetSOAMTAR_API_URL, ressourcespayments/payouts/refunds/webhooks/balanceavec les mêmes noms de méthodes. Les anciens noms restent des alias dépréciés. Les plugins e-commerce gèrent les remboursements natifs. Voir SDK.
[1.6.0] - 2026-10-20
Modifié (impact sur les intégrations existantes)
- Sierra Leone uniquement : SOAMTAR opère désormais exclusivement en Sierra Leone (pays
SL). - Orange Money Sierra Leone, canal unique : provider
orange_money_sl(Orange Money Business API) pour les encaissements et les paiements sortants. - Devise leone (
SLE) : montants avec au plus deux décimales (ex.150.00) ; un montant plus précis est rejeté, jamais arrondi. L'API accepte aussiUSDetEUR. - Numéros de téléphone : format E.164,
+232suivi de 8 chiffres. - Remboursements : disponibles via
POST/v1/refundsdepuis la 1.7.0. - Les canaux et pays proposés auparavant sont retirés.
[1.2.0] - 2026-04-25
Ajouté (écosystème SDK)
- SDK et plugins officiels couvrant backend, mobile, web et CMS.
- SDK backend (7) : PHP/Laravel, Node.js, Python, Ruby, Java/Spring Boot, Go, .NET/C#.
- SDK mobile & jeux (5) : Android (Kotlin), iOS (Swift), React Native, Flutter, Unity (C#).
- SDK web frontend (1) : SOAMTAR.js pour les intégrations natives et les pop-ups sécurisées.
- Plugins CMS & e-commerce (6) : WordPress/WooCommerce, Magento 2, PrestaShop, Drupal, Odoo, WHMCS.
- Guide no-code : instructions pour Wix (Velo), Shopify et Webflow.
Sécurité (durcissement des SDK)
- Verrou clé publique : tous les SDK frontend/mobile refusent les clés secrètes (
sk_...) pour éviter toute exposition accidentelle. - Résistance aux attaques temporelles : comparaisons en temps constant dans tous les SDK serveur.
- Anti-DoS webhooks : limite de 1 Mo par contenu et contrôles d'horodatage (anti-rejeu) intégrés.
- Dépendances minimales : la plupart des SDK sont construits sans bibliothèque tierce pour réduire le risque de chaîne d'approvisionnement.
Sécurité (durcissement du backend)
- Hachage des clés API : les clés secrètes ne sont plus stockées en clair.
- Isolation des marchands : contrôle d'accès renforcé aux ressources au niveau SQL.
- Limitation de débit avancée : protection par IP et par marchand sur les routes sensibles (OTP).
[1.1.0]
Ajouté
- Validation plus stricte des URL d'endpoint de webhook : les URL non HTTPS, les hôtes loopback (
localhost,127.x), les IP privées et les TLD internes sont rejetés à la création. - Masquage automatique des valeurs sensibles dans les logs d'API : si un marchand passe par erreur
?payer_phone=...ou?api_key=...en query string, la valeur est remplacée par[REDACTED]avant stockage.
Modifié (compatible)
- Références publiques étendues à 16 caractères aléatoires après le préfixe, ex.
TXN-A1B2C3D4E5F6G7H8. Si votre code fige la longueur, prévoyez au moins 20 caractères. Les anciennes références restent valides. - Événements webhook du canal : seuls les événements réellement émis par le canal de paiement sont propagés. L'abandon et l'expiration restent émis par SOAMTAR sous la forme
payment.cancelled/payment.expired.
Sécurité
- Les signatures horodatées peuvent être exigées par canal (option interne, gérée par SOAMTAR).
- Sécurité de concurrence renforcée sur les écritures multi-lignes (splits marketplace en particulier) : deux requêtes parallèles sur la même transaction parente sont sérialisées.
- Header
X-XSS-Protectionretiré (obsolète) ; la protection XSS repose sur la Content-Security-Policy. - Quota sur la création de nouvelles valeurs d'
Idempotency-Keypar compte marchand, pour protéger la plateforme d'une clé compromise générant un UUID par requête. Les rejeux de clés existantes ne sont pas concernés.
[1.0.0]
Première version publique de l'API.
Ajouté
- Paiements :
POST/v1/paymentsavec idempotence, page de paiement hébergée sansprovider. - Vérification à la demande :
POST/v1/payments/{id}/verify. - Webhooks signés HMAC-SHA256 horodatés, réessais exponentiels, rotation du secret sans coupure.
- Splits marketplace :
POSTetGET/v1/payments/{id}/splitsavec invariants (total, bénéficiaire actif, immuabilité). - Clients créés automatiquement à l'initiation.
- Gel du taux de change : taux figé à l'initiation quand les devises diffèrent.
- Rapprochement automatique pour rattraper les webhooks perdus.
- Expiration automatique des transactions non finalisées.
Sécurité
- TLS 1.2 minimum.
- Les URL de webhook marchand doivent utiliser HTTPS.
- Anti-rejeu sur les signatures entrantes et sortantes.
- Enregistrements conservés selon les exigences réglementaires applicables.
[Non publié]
Prévu
- Tokenisation mobile money pour les abonnements récurrents
Politique de versionnement
- Patch (1.0.x) : corrections et optimisations, aucun changement d'API.
- Mineure (1.x.0) : nouveaux endpoints, nouveaux champs optionnels. Compatible.
- Majeure (x.0.0) : changements incompatibles, annoncés plusieurs mois à l'avance, avec la version précédente maintenue pendant une période de transition.
Aucun champ existant n'est jamais supprimé ni renommé sans version majeure. De nouveaux champs optionnels peuvent apparaître dans n'importe quelle version mineure.
S'abonner aux annonces
- Dashboard → Paramètres → Notifications → Changements d'API
- Email récapitulatif pour les marchands en production