Documentation
Guide utilisateur
Tout ce qu'il faut savoir pour créer votre compte, vous connecter et gérer votre accès à MyAgency Pay.
Création de compte
Pour commencer à utiliser MyAgency Pay, vous devez créer un compte associé à votre organisation. L'inscription se compose de l'enregistrement de vos informations professionnelles, de la définition d'un mot de passe sécurisé et de l'acceptation des conditions d'utilisation.
Étapes de l'inscription
-
1
Renseignez les informations de votre organisation
Remplissez le formulaire avec les données de votre entreprise : nom officiel, adresse e-mail professionnelle, ville et statut juridique.
-
2
Définissez un mot de passe sécurisé
Choisissez un mot de passe conforme aux exigences de sécurité (voir ci-dessous).
-
3
Confirmez le mot de passe
Ressaisissez le mot de passe pour éviter toute erreur de saisie.
-
4
Acceptez les conditions
Cochez la case pour accepter les conditions générales d'utilisation.
-
5
Validez l'inscription
Cliquez sur S'inscrire. Votre compte est créé et un e-mail de vérification vous est envoyé.
Champs du formulaire
| Champ | Description |
|---|---|
| Nom de l'organisation * | Nom officiel de votre entreprise ou structure |
| Adresse e-mail * | Adresse e-mail professionnelle (ex. votre@email.com) |
| Ville | Ville de votre organisation |
| Statut juridique * | Forme juridique de l'organisation (liste déroulante) |
| Mot de passe * | 8 à 128 caractères, au moins 1 majuscule et 1 chiffre |
| Confirmer le mot de passe * | Doit correspondre exactement au mot de passe saisi |
| Accepter les conditions * | Case à cocher obligatoire |
Exigences du mot de passe
- • Minimum 8 caractères, maximum 128 caractères
- • Au moins une lettre majuscule (A-Z)
- • Au moins un chiffre (0-9)
Après l'inscription
Un e-mail de vérification est envoyé à l'adresse indiquée. Vous devez confirmer votre adresse e-mail avant de pouvoir vous connecter. En savoir plus →
Vérification de l'e-mail
Lors de la création de votre compte, MyAgency Pay envoie un e-mail de vérification à l'adresse que vous avez fournie. Cette étape est indispensable pour activer votre compte.
Procédure de vérification
-
1
Ouvrez votre boîte de réception
Repéchez l'e-mail envoyé par MyAgency Pay avec pour objet « Vérification de votre adresse e-mail ».
-
2
Cliquez sur le lien de vérification
Le lien contient un jeton de vérification valide pendant une durée limitée.
-
3
Confirmation
La page affiche « Adresse e-mail vérifiée avec succès ! ». Vous pouvez désormais vous connecter.
https://app-pay.altivane.io/auth/verify-email?token=<jeton>
Vous n'avez pas reçu l'e-mail ?
Vérifiez vos courriers indésirables (spam). Si l'e-mail est toujours absent, vous pouvez demander un nouvel envoi depuis la page dédiée.
https://app-pay.altivane.io/auth/resend-verification
Connexion
Connectez-vous à votre espace MyAgency Pay en renseignant votre adresse e-mail et votre mot de passe.
Étapes de connexion
-
1
Saisissez votre adresse e-mail
Utilisez l'adresse e-mail associée à votre compte MyAgency Pay.
-
2
Saisissez votre mot de passe
Entrez le mot de passe défini lors de la création du compte.
-
3
Cliquez sur « Se connecter »
Vous êtes redirigé vers le tableau de bord correspondant à votre rôle (administrateur ou membre).
Champs du formulaire
| Champ | Description |
|---|---|
| Adresse e-mail * | Adresse e-mail de votre compte |
| Mot de passe * | 8 à 128 caractères |
Cas d'erreur
- error « Les informations de connexion sont incorrectes » — l'e-mail ou le mot de passe est invalide.
- error « Vérifiez votre adresse e-mail » — votre compte n'a pas encore été vérifié. Consultez votre boîte de réception.
Mot de passe oublié ?
Utilisez le lien « Mot de passe oublié ? » sous le formulaire de connexion pour réinitialiser votre mot de passe. En savoir plus →
Pas encore de compte ?
Mot de passe oublié
Si vous avez oublié votre mot de passe, MyAgency Pay vous permet de le réinitialiser en quelques étapes, depuis votre adresse e-mail.
Procédure de réinitialisation
-
1
Saisissez votre adresse e-mail
Entrez l'adresse e-mail associée à votre compte, puis cliquez sur Envoyer.
/auth/reset-password -
2
Vérifiez votre boîte mail
Un e-mail contenant un lien de réinitialisation vous est envoyé. Cliquez sur ce lien.
/auth/reset-password/check-email?email=... -
3
Définissez un nouveau mot de passe
Choisissez un mot de passe sécurisé et confirmez-le. Le lien contient un jeton temporaire valide.
/auth/reset-password/change?token=... -
check
Mot de passe mis à jour
Un message de confirmation s'affiche. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.
/auth/reset-password/changed
Exigences du nouveau mot de passe
- • Minimum 8 caractères, maximum 128 caractères
- • Au moins une lettre majuscule (A-Z)
- • Au moins un chiffre (0-9)
Tableau de bord
Une fois connecté, vous arrivez sur votre tableau de bord. Il regroupe un aperçu de votre portefeuille, de vos boutiques et de l'évolution de vos transactions.
Mon portefeuille
Cette section affiche les montants disponibles par moyen de paiement.
- account_balance_wallet Solde total disponible — le montant agrégé (en MGA) de tous vos fonds disponibles.
- phone_android MVola — montant disponible sur le moyen de paiement MVola.
- phone_android Orange Money — montant disponible sur le moyen de paiement Orange Money.
Mon Boutique
Un récapitulatif rapide de vos boutiques : identifiant de la boutique principale, nombre total de boutiques, et répartition par mode (live / sandbox).
Évolution des transactions
Un graphique du nombre de transactions par jour et par moyen de paiement. Vous pouvez filtrer l'affichage par boutique, mode (live/sandbox), type de paiement et période.
Boutiques
La page Boutique vous permet de créer vos commerces, de les modifier et d'y configurer les moyens de paiement acceptés.
Liste des boutiques
Le tableau liste l'ensemble de vos boutiques avec leurs informations principales :
| Colonne | Description |
|---|---|
| NOM | Nom de la boutique |
| DESCRIPTION | Courte description de l'activité |
| MODE | Live ou Sandbox |
| STATUT | Actif / inactif |
| ACTION | Bouton « Afficher » pour consulter la boutique |
- filter_altUn filtre « Mode : Tous » permet de filtrer par mode (live / sandbox).
- add_circleLe bouton « Ajouter » ouvre le formulaire de création de boutique.
Créer une boutique
Rendez-vous sur la page de création et renseignez les informations suivantes :
| Champ | Description |
|---|---|
| Nom de la boutique * | Maximum 100 caractères (ex. « Ma Boutique Antananarivo ») |
| Description | Courte description de l'activité — 255 caractères maximum |
| Statut | Active ou inactif (case à cocher) |
| Mode d'environnement | Live ou Sandbox |
Terminez avec Enregistrer (ou Annuler pour abandonner). La boutique apparaît ensuite dans la liste.
Modifier une boutique
Depuis la liste, ouvrez la boutique via « Afficher » puis modifiez ses paramètres. La page d'édition contient :
- infoInformations générales — nom et description de la boutique.
- paymentsTypes de paiement acceptés — activez/désactivez MVola et Orange Money.
- toggle_onStatut — actif ou inactif.
- scienceMode d'environnement — live ou sandbox.
- vpn_keyClés API — clés Sandbox et Live dédiées à la boutique.
Transactions
La page Transaction centralise l'ensemble des paiements réalisés sur vos boutiques, avec le détail des montants, frais et net marchand.
Colonnes du tableau
| Colonne | Description |
|---|---|
| BOUTIQUE | Boutique ayant encaissé le paiement |
| TYPE DE PAIEMENT | Moyen utilisé (MVola, Orange Money…) |
| MONTANT (MGA) | Montant brut de la transaction |
| FRAIS | Commission prélevée sur la transaction |
| NET MARCHAND | Montant net après déduction des frais |
| STATUT | État de la transaction |
| MODE | Live ou Sandbox |
| DATE | Date de la transaction |
| ACTION | Actions disponibles sur la ligne |
Filtres et affichage
Les boutons Filtres et Colonnes permettent de personnaliser la vue du tableau. Les filtres disponibles sont :
| Filtre | Options |
|---|---|
| Boutique | Toutes les boutiques |
| Type de paiement | Tous les types de paiement |
| Statut | Tous |
| Mode | Tous (Live / Sandbox) |
| Période de création | Date de début et date de fin |
Validez vos critères avec le bouton Appliquer. La pagination (par page, ex. 10 lignes) permet de parcourir les résultats.
Demandes de retrait
La page Demande de retrait vous permet de retirer les fonds disponibles de votre portefeuille vers vos moyens de paiement configurés.
Effectuer une demande de retrait
-
1
Cliquez sur « Ajouter »
Une fenêtre « Moyen de paiement de retrait » s'ouvre.
-
2
Sélectionnez votre moyen de paiement
Choisissez le compte de retrait vers lequel les fonds seront dirigés.
-
3
Validez la demande
La demande apparaît dans la liste avec son statut et peut être filtrée.
Prérequis
Vous devez d'abord configurer au moins un compte de retrait (numéro MVola ou Orange Money) pour pouvoir effectuer un retrait. Configurer mon compte de retrait →
Liste des demandes
Le tableau récapitule vos demandes de retrait passées. Les boutons Filtres et Réinitialiser vous aident à retrouver une demande en particulier.
Compte de retrait
La page Compte de retrait vous permet de renseigner les numéros (MVola et Orange Money) sur lesquels vos fonds seront transférés lors de vos demandes de retrait.
Moyens de paiement de retrait
phone_android MVola
Numéro MVola utilisé pour recevoir vos retraits.
Aucun numéro configuré
phone_android Orange Money
Numéro Orange Money utilisé pour recevoir vos retraits.
Aucun numéro configuré
À noter
Tant qu'aucun numéro n'est configuré, la mention « Aucun numéro configuré » s'affiche. Renseignez votre numéro pour pouvoir effectuer une demande de retrait →
Configuration
La page Configuration permet de modifier les coordonnées et informations de votre organisation.
Onglets
La page est organisée en deux onglets : Informations et Documents. Sur l'onglet Informations, trois blocs sont à renseigner.
apartment Informations générales
| Nom de l'organisation * | Nom officiel de votre structure |
| Type juridique | Entreprise, association… (liste déroulante) |
| Secteur d'activité | Sélection d'un secteur d'activité |
contact_phone Coordonnées & contact
| Adresse e-mail | Adresse de contact de l'organisation |
| Téléphone | Numéro de téléphone (ex. +261 34 00 000 00) |
| Ville | Ville principale (ex. Antananarivo) |
| Adresse principale | Rue, lot, immeuble |
| Complément d'adresse | Étage, porte, numéro complémentaire |
description Présentation & activité
| Description de l'activité | Présentation synthétique des activités et services proposés |
Enregistrez vos modifications avec Enregistrer ou quittez avec Annuler.
Environnements
MyAgency Pay propose deux environnements distincts pour garantir des tests sécurisés avant la mise en production. L'API REST est accessible depuis une URL unique : l'environnement est déterminé par la clé utilisée.
https://api-pay.altivane.io
Sandbox
Authentifiez-vous avec une clé pk_sandbox_… pour tester sans déplacer de fonds réels.
Live
Les clés pk_live_… passent automatiquement en mode réel : ne les utilisez qu'après validation complète.
Authentification HMAC
Sécurisation du payloadLes endpoints marchands de MyAgency Pay — création d'intention de paiement et de transaction — ne sont pas signés avec un simple JWT. Ils utilisent un mécanisme de signature HMAC-SHA256 du payload reposant sur trois en-têtes qui doivent être présents sur chaque requête :
| En-tête | Valeur | Rôle |
|---|---|---|
Authorization |
Bearer <clé de boutique> |
Identifie le store émetteur grâce à sa clé pk_sandbox_… ou pk_live_… |
X-Timestamp |
Horodatage Unix |
Date/heure de la requête en secondes (tolérance ±300 s pour éviter le rejeu) |
X-Signature |
HMAC-SHA256 en base64url |
Empreinte du payload signé, calculée avec la clé secrète du store |
Comment calculer la signature ?
La signature X-Signature est l'empreinte
HMAC-SHA256 d'un message construit ainsi :
message = "<X-Timestamp>\n<body>"
signature = base64url( hmac_sha256( secret = clé_secrète, data = message ) )
-
check_circle
X-Timestampest suivi d'un retour à la ligne (\n) puis du corps de la requête brut et à l'identique. -
check_circle
Le secret de l'empreinte est la clé secrète associée au Bearer, pas l'
apiKeypublique. - check_circle Le body signé doit être strictement identique (octet pour octet) au corps réellement envoyé dans la requête : ne signez pas une version reformatée du JSON.
-
check_circle
Le résultat est encodé en base64url (mêmes caractères que le base64, avec
-et_à la place de+et/, sans padding=).
Quel secret pour quel endpoint ?
| Endpoint | Bearer | Secret de l'empreinte HMAC |
|---|---|---|
POST /api/payment-intents |
pk_sandbox_… / pk_live_… |
la clé de boutique elle-même |
Le mode (sandbox ou live) est choisi automatiquement par le serveur selon la clé utilisée :
une clé pk_sandbox_… place la requête en environnement sandbox.
Pourquoi ce système est-il sécurisé ?
Authenticité
Seule une application détenant la clé secrète peut produire une signature valide : le serveur est certain de l'identité de l'émetteur.
Intégrité
La moindre modification du montant, de la devise ou des URLs modifie l'empreinte : le serveur rejette tout payload altéré en transit.
Anti-rejeu
L'horodatage X-Timestamp (tolérance ±300 s) rend caduque toute requête interceptée et rejouée après son expiration.
Créer un paiement
Initialisez une intention de paiement via l'API REST de MyAgency Pay. Cette première étape crée un paiement unique pour un client : la suite du déroulé se fait sur la page de paiement hébergée.
https://api-pay.altivane.io/api/payment-intents
En-têtes requis
| En-tête | Exemple |
|---|---|
Authorization |
Bearer pk_sandbox_xxxxxxxxxxxxxxxxxxxx |
Content-Type |
application/json |
X-Timestamp |
1753000000 |
X-Signature |
Rm9vIEJhciBCYXo... |
Le Bearer et le secret de l'empreinte sont la clé de boutique (pk_).
Le message signé est <X-Timestamp>\n<body> — voir la section
Authentification HMAC.
Corps de la requête
{
"customer": "client-123",
"amount": 10000,
"currency": "MGA",
"order_ref": "CMD-2025-001",
"success_url": "https://votre-app.com/paiement/reussi",
"failed_url": "https://votre-app.com/paiement/echoue",
"notification_url": "https://votre-app.com/webhook/paiement",
"metadata": { "produit": "Abonnement premium" }
}
| Champ | Obligatoire | Description |
|---|---|---|
customer |
Non | Référence du client côté marchand |
amount |
Oui | Montant à payer en fraction minimale de la devise |
currency |
Oui | Devise (ex. MGA) |
order_ref |
Non | Référence de commande pour rapprochement |
success_url |
Non | URL de redirection en cas de succès |
failed_url |
Non | URL de redirection en cas d'échec |
notification_url |
Non | URL webhook notifiée à chaque changement de statut |
metadata |
Non | Données libres (paires clé/valeur) |
Exemple
# 1. Calculer la signature HMAC-SHA256
TIMESTAMP=$(date +%s)
BODY='{"customer":"client-123","amount":10000,"currency":"MGA","order_ref":"CMD-2025-001","success_url":"https://votre-app.com/success","failed_url":"https://votre-app.com/failed","notification_url":"https://votre-app.com/webhook/paiement","metadata":{"produit":"Abonnement premium"}}'
MESSAGE="${TIMESTAMP}
${BODY}"
SIGNATURE=$(printf '%s' "$MESSAGE" \
| openssl dgst -sha256 -hmac pk_sandbox_xxxxxxxxxxxxxxxxxxxx \
| sed 's/^.* //; s/[+\/=-]/_/g; s/__\+//')
# → ou utilisez un script Python/PHP pour le base64url
# 2. Envoyer la requête
curl -X POST https://api-pay.altivane.io/api/payment-intents \
-H "Authorization: Bearer pk_sandbox_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "X-Timestamp: ${TIMESTAMP}" \
-H "X-Signature: ${SIGNATURE}" \
-d "$BODY"
Réponse
En cas de succès (HTTP 201), le serveur renvoie l'intention de paiement créée avec son
identifiant pi_… — indispensable pour la signature
de la transaction suivante : conservez-le.
{
"success": true,
"data": {
"id": "pi_8f3c2d1e4a5b6c7d8e9f0a1b",
"amount": 10000,
"currency": "MGA",
"order_ref": "CMD-2025-001",
"url_pay": "https://app-pay.altivane.io/pay?pi=pi_"
},
"message": "Payment intent créé avec succès"
}
Erreurs fréquentes
400— corps invalide401— clé de boutique ou signature incorrecte404— store introuvable422— erreur de validation
Bon à savoir
Une intention de paiement a une durée de vie limitée et son statut évolue
(init, pending, success, failed, cancelled, expired). Les notifications de changement
de statut sont envoyées sur notification_url.
Intégration
Intégrations
Choisissez l'intégration adaptée à votre boutique. Les intégrations utilisent la même API de paiement et conservent les signatures HMAC de la section Authentification HMAC.
cURL
Exemple de requête prêt à exécuter depuis un terminal.
PHP
Exemple PHP avec signature HMAC et appel API cURL.
E-commerce
download Télécharger le module .zipPour une plateforme e-commerce personnalisée, utilisez le module comme couche de paiement. Il crée l'intention, redirige le client vers la page hébergée et vérifie les notifications serveur.
- 1. Configurer
Renseignez l'URL API et la clé de boutique dans l'environnement serveur. - 2. Créer
Envoyez le montant, la devise, la commande et les URLs de retour. - 3. Confirmer
Traitez le webhook et vérifiez la signature avant de valider la commande.
WooCommerce
download Télécharger le plugin .zipInstallez le plugin depuis WooCommerce, activez le mode Sandbox pour vos essais, puis renseignez l'URL API et la clé de boutique dans les réglages du moyen de paiement.
- 1. Téléchargez et installez l'archive du plugin.
- 2. Ouvrez WooCommerce > Réglages > Paiements et activez MyAgency Pay.
- 3. Configurez les clés, testez une commande Sandbox, puis activez le mode Live.
JavaScript
Le navigateur ne doit jamais contenir la clé secrète. Appelez votre serveur, puis redirigez le client vers l'URL de paiement reçue.
const response = await fetch('/api/payment-intents', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(order)
});
const { data } = await response.json();
window.location.assign(data.url_pay);
CDN
Pour une intégration rapide dans une page HTML, chargez le SDK depuis votre CDN puis utilisez-le uniquement pour l'interface. La création et la signature du paiement restent côté serveur.
<script src="https://cdn.example.com/MyAgency Pay/latest/MyAgency Pay.js" defer></script>
<script>
window.addEventListener('DOMContentLoaded', () => {
MyAgency Pay.init({ checkoutUrl: '/checkout' });
});
</script>
Page de paiement
Aucun endpoint de création de transaction n'est nécessaire : lors de la création de l'intention (section Créer un paiement), le serveur renvoie une URL de paiement hébergée qui s'ouvre dans le navigateur du client.
Exemple : https://app-pay.altivane.io/pay?pi=pi_xxxxxxxxxxxxxxx
Comment ça fonctionne ?
Votre serveur appelle POST https://api-pay.altivane.io/api/payment-intents et reçoit le champ url_pay.
Vous redirigez le client vers cette URL (page de paiement sécurisée, hébergée par MyAgency Pay).
Le client consulte le résumé du paiement et choisit son moyen de paiement parmi ceux que la boutique a configurés (Orange Money, MVola, ....).
Après validation sur son téléphone, le client est redirigé vers success_url ou failed_url et vous êtes notifié via notification_url.
Bon à savoir
Le mode sandbox / live affiché sur la page dépend de la clé utilisée à la création de l'intention. Les moyens de paiement proposés sont ceux configurés pour la boutique dans le tableau de bord (section Boutiques).
Règlement
Chaque paiement validé par le client crédite le portefeuille de votre organisation. Le règlement correspond à l'encaissement de ces fonds : vous consultez votre solde puis demandez un virement vers votre compte de retrait, sans manipulation supplémentaire de part et d'autre.
1. Les fonds sont encaissés
Le montant net d'une transaction réussie est ajouté au solde disponible de votre portefeuille, visible sur le tableau de bord.
2. Vous demandez un retrait
Dès que les comptes de retrait sont configurés, effectuez une demande de retrait depuis la page Demande de retrait.
3. Le virement est versé
Les fonds sont transférés en temps réel vers le compte de retrait configuré (numéro MVola ou Orange Money). Le statut de chaque virement est suivi dans la liste des demandes.
Suivi du règlement
La page Demande de retrait (https://app-pay.altivane.io/transfers)
récapitule toutes vos demandes : montant, moyen de paiement de retrait, statut et date.
La page Compte de retrait indique le numéro vers lequel seront versés vos futurs virements.
Prérequis
Configurez un compte de retrait avant de demander un virement, sinon la demande ne peut pas aboutir (voir Compte de retrait).
Attention
Le règlement ne concerne que les transactions réussies. Les montants remboursés ou échoués ne sont pas crédités sur votre portefeuille.