MyAgency Pay

Documentation

Guide utilisateur

Tout ce qu'il faut savoir pour créer votre compte, vous connecter et gérer votre accès à MyAgency Pay.

person_add

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.

link https://app-pay.altivane.io/auth/register Ouvrir

Étapes de l'inscription

  1. 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. 2

    Définissez un mot de passe sécurisé

    Choisissez un mot de passe conforme aux exigences de sécurité (voir ci-dessous).

  3. 3

    Confirmez le mot de passe

    Ressaisissez le mot de passe pour éviter toute erreur de saisie.

  4. 4

    Acceptez les conditions

    Cochez la case pour accepter les conditions générales d'utilisation.

  5. 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)
info

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 →

Page d'inscription — <strong>MyAgency Pay</strong>
mark_email_read

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. 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. 2

    Cliquez sur le lien de vérification

    Le lien contient un jeton de vérification valide pendant une durée limitée.

  3. 3

    Confirmation

    La page affiche « Adresse e-mail vérifiée avec succès ! ». Vous pouvez désormais vous connecter.

link https://app-pay.altivane.io/auth/verify-email?token=<jeton>
mail_lock

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
login

Connexion

Connectez-vous à votre espace MyAgency Pay en renseignant votre adresse e-mail et votre mot de passe.

link https://app-pay.altivane.io/auth/login Ouvrir

Étapes de connexion

  1. 1

    Saisissez votre adresse e-mail

    Utilisez l'adresse e-mail associée à votre compte MyAgency Pay.

  2. 2

    Saisissez votre mot de passe

    Entrez le mot de passe défini lors de la création du compte.

  3. 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.
help

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 →

person_add

Pas encore de compte ?

Créez votre compte →

Page de connexion — <strong>MyAgency Pay</strong>
lock_reset

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.

link https://app-pay.altivane.io/auth/reset-password Ouvrir

Procédure de réinitialisation

  1. 1

    Saisissez votre adresse e-mail

    Entrez l'adresse e-mail associée à votre compte, puis cliquez sur Envoyer.

    /auth/reset-password

  2. 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. 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=...

  4. 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)
Étape 1 — Saisie de l'e-mail
Saisie de l'e-mail pour réinitialisation
Étape 2 — Vérifiez votre boîte mail
Confirmation d'envoi de l'e-mail
Étape 3 — Confirmation
Mot de passe mis à jour avec succès
dashboard

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.

link https://app-pay.altivane.io Ouvrir

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.

Tableau de bord — <strong>MyAgency Pay</strong>
storefront

Boutiques

La page Boutique vous permet de créer vos commerces, de les modifier et d'y configurer les moyens de paiement acceptés.

link https://app-pay.altivane.io/stores Ouvrir

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.
Liste des boutiques — <strong>MyAgency Pay</strong>

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.

Créer une boutique — <strong>MyAgency Pay</strong>

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.
Modifier une boutique — <strong>MyAgency Pay</strong>
receipt_long

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.

link https://app-pay.altivane.io/transactions Ouvrir

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.

Liste des transactions — <strong>MyAgency Pay</strong>
Filtres de transactions — <strong>MyAgency Pay</strong>
account_balance

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.

link https://app-pay.altivane.io/transfers Ouvrir

Effectuer une demande de retrait

  1. 1

    Cliquez sur « Ajouter »

    Une fenêtre « Moyen de paiement de retrait » s'ouvre.

  2. 2

    Sélectionnez votre moyen de paiement

    Choisissez le compte de retrait vers lequel les fonds seront dirigés.

  3. 3

    Validez la demande

    La demande apparaît dans la liste avec son statut et peut être filtrée.

warning

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.

Demandes de retrait — <strong>MyAgency Pay</strong>
Ajouter une demande de retrait — <strong>MyAgency Pay</strong>
account_balance_wallet

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.

link https://app-pay.altivane.io/account Ouvrir

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é

info

À 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 →

Compte de retrait — <strong>MyAgency Pay</strong>
settings

Configuration

La page Configuration permet de modifier les coordonnées et informations de votre organisation.

link https://app-pay.altivane.io/configuration Ouvrir

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.

Configuration — <strong>MyAgency Pay</strong>
science

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.

link 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.

verified_user

Authentification HMAC

Sécurisation du payload

Les 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-Timestamp est 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'apiKey publique.
  • 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é ?

fingerprint

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.

data_object

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.

history_toggle_off

Anti-rejeu

L'horodatage X-Timestamp (tolérance ±300 s) rend caduque toute requête interceptée et rejouée après son expiration.

code

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.

POST 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 invalide
  • 401 — clé de boutique ou signature incorrecte
  • 404 — store introuvable
  • 422 — 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.

integration_instructions

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.

Pour 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. 1. Configurer
    Renseignez l'URL API et la clé de boutique dans l'environnement serveur.
  2. 2. Créer
    Envoyez le montant, la devise, la commande et les URLs de retour.
  3. 3. Confirmer
    Traitez le webhook et vérifiez la signature avant de valider la commande.

Installez 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. 1. Téléchargez et installez l'archive du plugin.
  2. 2. Ouvrez WooCommerce > Réglages > Paiements et activez MyAgency Pay.
  3. 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>
credit_card

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.

link https://app-pay.altivane.io/pay?pi=pi_<identifiant> Créer l'intention

Exemple : https://app-pay.altivane.io/pay?pi=pi_xxxxxxxxxxxxxxx

Comment ça fonctionne ?

1

Votre serveur appelle POST https://api-pay.altivane.io/api/payment-intents et reçoit le champ url_pay.

2

Vous redirigez le client vers cette URL (page de paiement sécurisée, hébergée par MyAgency Pay).

3

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, ....).

4

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.

Page de paiement hébergée : résumé et choix du moyen de paiement — MyAgency Pay
info

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).

payments

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.

add_card

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.

swap_horiz

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.

account_balance_wallet

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.