Module Stancer
Informations
| Module name | Stancer |
| Editor / Editeur | CAP-REL - cap-rel.fr |
| Download or buy page / Page achat ou téléchargement | External module - www.dolistore.com |
| Status / Statut / Estado | Stable |
| Prerequisites / Prérequis | PHP 7.4 minimum
Dolibarr min version: See on Dolistore Dolibarr max version: See on Dolistore |
| Last update date / Date mise à jour fiche / Fecha última actualización | 2026-02-24 |
| Note / Nota | Utilisez Stancer comme prestataire de paiement |
Qu'est-ce que le module Stancer pour Dolibarr ?
Plus de documentation sur le site de l'éditeur : https://doc.cap-rel.fr/projet_stancer/accueil
Le module Stancer est un module d'intégration de la passerelle de paiement Stancer dans l'ERP Dolibarr. Il permet d'encaisser des paiements par carte bancaire (avec 3D Secure) et par prélèvement SEPA, directement depuis les objets métier de Dolibarr (factures, commandes, devis, dons, cotisations d'adhérents).
Langues supportées : Français, Anglais, Allemand, Espagnol, Italien, Néerlandais
Architecture technique
Tables de base de données
Le module crée trois tables principales dans la base de données Dolibarr :
llx_stancer_stancer_payments
Stocke l'historique de tous les paiements (CB et SEPA).
| Champ | Type | Description |
|---|---|---|
rowid |
INTEGER (PK) | Identifiant interne auto-incrémenté |
stancer_id |
VARCHAR(30) NOT NULL | Identifiant unique du paiement chez Stancer |
amount |
INTEGER | Montant en centimes |
fee |
INTEGER | Frais de transaction en centimes |
currency |
VARCHAR(4) | Code devise (EUR, USD, etc.) |
description |
VARCHAR(64) | Description du paiement |
order_id |
VARCHAR(36) | Référence de commande du marchand |
unique_id |
VARCHAR(36) UNIQUE | Identifiant unique / clé d'idempotence (TAG) |
method |
VARCHAR(4) | Méthode de paiement (card ou sepa)
|
card |
VARCHAR(30) | Identifiant de la carte si paiement CB |
sepa |
VARCHAR(30) | Identifiant SEPA si prélèvement |
customer |
VARCHAR(30) | Identifiant client Stancer |
refunds |
TEXT | Tableau JSON des remboursements associés |
response |
VARCHAR(4) | Code de réponse bancaire |
capture |
BOOLEAN | Capture immédiate (oui/non) |
created |
DATETIME | Date de création chez Stancer |
date_bank |
TIMESTAMP | Date de traitement bancaire |
live_mode |
BOOLEAN | Mode production (1) ou test (0) |
fk_soc |
INTEGER | Clé étrangère vers le tiers Dolibarr |
status |
INTEGER NOT NULL | Code de statut du paiement |
entity |
INTEGER | Support multi-entité |
date_creation |
DATETIME NOT NULL | Date de création locale |
tms |
TIMESTAMP | Date de dernière modification |
fk_user_creat |
INTEGER (FK → llx_user) | Utilisateur créateur |
fk_user_modif |
INTEGER | Utilisateur modificateur |
Index : stancer_id, fk_soc, status
llx_stancer_stancer_payouts
Stocke les reversements (virements de Stancer vers le compte bancaire du marchand).
| Champ | Type | Description |
|---|---|---|
rowid |
INTEGER (PK) | Identifiant interne |
payout_id |
VARCHAR(30) NOT NULL | Identifiant unique du reversement chez Stancer |
amount |
INTEGER | Montant total en centimes |
fees |
INTEGER | Frais de traitement en centimes |
amount_net |
INTEGER | Montant net (montant - frais) |
currency |
VARCHAR(4) | Code devise |
date_paym |
DATETIME | Date des transactions incluses |
date_bank |
DATETIME | Date de virement effectif |
details |
TEXT | Détails complémentaires (JSON) |
payments |
TEXT | JSON des paiements inclus dans ce reversement |
refunds |
TEXT | JSON des remboursements inclus |
disputes |
TEXT | JSON des litiges inclus |
statement_description |
TEXT | Libellé du relevé bancaire |
status |
INTEGER NOT NULL | Statut du reversement |
entity |
INTEGER | Support multi-entité |
tms |
TIMESTAMP | Date de dernière modification |
Index : payout_id, status
llx_stancer_stancer_refunds
Stocke les remboursements émis vers les clients.
| Champ | Type | Description |
|---|---|---|
rowid |
INTEGER (PK) | Identifiant interne |
refund_id |
VARCHAR(30) NOT NULL | Identifiant unique du remboursement chez Stancer |
payment_id |
VARCHAR(30) NOT NULL | Identifiant du paiement d'origine |
amount |
INTEGER | Montant remboursé en centimes |
currency |
VARCHAR(4) | Code devise |
status |
INTEGER NOT NULL | Statut du remboursement |
created |
DATETIME | Date de création chez Stancer |
date_refund |
TIMESTAMP | Date de traitement du remboursement |
date_bank |
TIMESTAMP | Date de crédit bancaire |
live_mode |
BOOLEAN | Mode production ou test |
fk_soc |
INTEGER | Clé étrangère vers le tiers |
entity |
INTEGER | Support multi-entité |
date_creation |
DATETIME NOT NULL | Date de création locale |
tms |
TIMESTAMP | Date de dernière modification |
fk_user_creat |
INTEGER (FK → llx_user) | Utilisateur créateur |
fk_user_modif |
INTEGER | Utilisateur modificateur |
Index : refund_id, payment_id, status, fk_soc
Fonctionnalités
1. Paiement par carte bancaire (CB)
1.1 Flux de paiement CB
Le paiement par carte bancaire suit le flux suivant :
- L'utilisateur Dolibarr clique sur le bouton "Payer avec Stancer" depuis la fiche d'une facture, commande, devis, don ou cotisation
- Le module valide l'objet (statut, montant restant dû, etc.)
- Un paiement est créé via l'API Stancer (
POST /checkout/) - L'enregistrement est sauvegardé dans
llx_stancer_stancer_payments - Le client est redirigé vers la page hébergée Stancer :
https://payment.stancer.com/{pubkey}/{paymentId} - Le client saisit ses informations de carte et confirme (avec 3D Secure si nécessaire)
- Stancer rappelle la page de retour :
/public/paymentback.php - La page de retour vérifie le statut du paiement via l'API
- Si le paiement est confirmé : enregistrement du paiement dans Dolibarr, mise à jour de la facture, envoi d'email de confirmation
1.2 Page publique CB
La page public/cb.php permet aux clients d'enregistrer une carte bancaire pour des paiements ultérieurs (sans effectuer de transaction immédiate).
Champs du formulaire :
- Nom de la société (lecture seule)
- Nom du titulaire de la carte
- Numéro de carte (masqué avec auto-formatage)
- Date d'expiration (format MM/AAAA)
- CVC/CVV
Sécurité :
- Protection CSRF via jeton
- Clé sécurisée :
hash("CB-{socid}-{nom_société}-{PAYMENT_SECURITY_TOKEN}") - Détection de rechargement de page pour prévenir les doublons
- Support de la pré-autorisation 3DS (
action=preauth)
1.3 Configuration CB
| Paramètre | Description |
|---|---|
STANCER_ENABLE_CB |
Activer/désactiver les paiements CB |
STANCER_PUBLIC_CB_PAGE |
Activer la page publique d'enregistrement de carte |
STANCER_CB_ORDER_PARTIAL_PAY |
Pourcentage d'acompte pour les commandes (0 = totalité) |
STANCER_CB_PROPAL_PARTIAL_PAY |
Pourcentage d'acompte pour les devis |
STANCER_AUTO_MAIL_ORDER_CB |
Envoi automatique d'email lors de l'initiation d'un paiement CB |
STANCER_AUTO_MAIL_INVOICES_CB |
Envoi automatique d'email CB pour les factures |
STANCER_AUTO_MAIL_INVOICES_CB_MAILTYPE |
Modèle d'email à utiliser pour les notifications CB |
1.4 Acomptes et paiements partiels
Le module supporte les acomptes sur les commandes et les devis :
- Configurable via
STANCER_CB_ORDER_PARTIAL_PAY(pourcentage de 1 à 100) - Configurable via
STANCER_CB_PROPAL_PARTIAL_PAYpour les devis - Le montant de l'acompte est calculé automatiquement :
total_ttc × pourcentage / 100 - Les paiements partiels sont marqués avec un flag
partialPayment=1 - Suivi des paiements multiples via un séquenceur (
SEQ={compteur}dans le TAG)
2. Paiement par prélèvement SEPA
2.1 Création de mandat SEPA
La page publique public/sepa-iban.php permet aux clients de saisir leur IBAN pour créer un mandat SEPA.
Champs du formulaire :
- Nom de la société (lecture seule)
- Nom du titulaire du compte
- Nom de la banque
- IBAN (avec auto-espacement)
- BIC (optionnel, récupéré automatiquement depuis Stancer si absent)
Processus de création :
- Validation de l'IBAN via la bibliothèque
PHP_IBAN - Création du compte client Stancer si nécessaire
- Création/mise à jour de l'enregistrement
societe_ribdans Dolibarr :- Label :
stancer-sepa-tst(test) oustancer-sepa(production) - RUM auto-généré via
BonPrelevement::buildRumNumber() - Type FRST/RECUR (premier/récurrent)
- Label :
- Enregistrement de l'IBAN chez Stancer via
stancerAddSEPAIfNeeded() - Génération optionnelle du PDF de mandat SEPA (si
STANCER_MANDATE_AUTOactivé) - Signature électronique optionnelle via UpToSign (si
STANCER_MANDATE_AUTO_UPTOSIGNactivé)
2.2 Flux de paiement SEPA
- Le système (ou l'utilisateur) déclenche un prélèvement SEPA via
stancerSEPAstartPay() - Validation du délai SEPA (configurable, par défaut 5 jours avant l'échéance)
- Vérification du montant maximum autorisé (
STANCER_SWITCH_SEPA_AMOUNT_MAX) - Validation de la date de paiement de la facture
- Création du paiement via l'API Stancer
- Sauvegarde dans
llx_stancer_stancer_payments
2.3 Configuration SEPA
| Paramètre | Description |
|---|---|
STANCER_PUBLIC_IBAN_PAGE |
Activer la page publique de saisie IBAN |
STANCER_PUBLIC_IBAN_PAGE_FORCE |
Forcer l'affichage de la page IBAN |
STANCER_MANDATE_AUTO |
Générer automatiquement le PDF du mandat SEPA |
STANCER_MANDATE_AUTO_UPTOSIGN |
Intégration signature électronique UpToSign |
STANCER_MANDATE_AUTO_UPTOSIGN_NOCLICK |
Redirection automatique vers la signature |
STANCER_DELAY_SEPA |
Délai en jours avant prélèvement (défaut : 5) |
STANCER_DELAY_SEPA_UPDATE_INVOICES |
Mettre à jour les dates de factures selon le délai |
STANCER_SWITCH_SEPA_AMOUNT_MAX |
Montant maximum pour un prélèvement SEPA |
STANCER_SWITCH_SEPA_TO_OTHER_BANK |
Basculer vers un autre compte bancaire au-delà du seuil |
STANCER_AUTO_MAIL_INVOICES_SEPA |
Email automatique pour les prélèvements SEPA |
STANCER_AUTO_MAIL_INVOICES_SEPA_MAILTYPE |
Modèle d'email SEPA |
STANCER_EMAIL_DPO |
Email du Délégué à la Protection des Données (RGPD) |
PRELEVEMENT_ICS |
Identifiant Créancier SEPA (ICS) |
2.4 Génération de mandat PDF
Le module inclut un générateur PDF spécifique (pdf_sepamandate_stancer) qui produit :
- La Référence Unique de Mandat (RUM)
- L'Identifiant Créancier SEPA (ICS)
- Les coordonnées du créancier (nom, adresse complète)
- Le formulaire débiteur (nom, adresse, IBAN, BIC)
- La case à cocher FRST/RECUR
- Les textes légaux SEPA relatifs au traitement des données et aux droits
- Les informations du DPO (Délégué à la Protection des Données)
- L'espace de signature (avec support UpToSign pour signature électronique)
3. Gestion des remboursements
3.1 Fonctionnalités
- Création de remboursements via l'API Stancer (
POST /refunds/) - Suivi des remboursements dans la table
llx_stancer_stancer_refunds - Liaison avec le paiement d'origine via
payment_id - Statuts : Brouillon (0), Validé (1), Annulé (9)
- Page de liste dédiée avec filtres et recherche (
stancer_refunds_list.php) - Détection des remboursements déjà effectués pour éviter les doublons
3.2 Statuts de remboursement
| Code | Statut | Description |
|---|---|---|
| 0 | Brouillon | Remboursement en attente de traitement |
| 1 | Validé | Remboursement effectué |
| 9 | Annulé | Remboursement annulé |
4. Gestion des reversements (Payouts)
4.1 Fonctionnalités
Les reversements représentent les virements effectués par Stancer vers le compte bancaire du marchand.
- Synchronisation des reversements depuis l'API Stancer (
GET /payouts/) - Détail des reversements : paiements inclus, remboursements, litiges
- Calcul du montant net (montant brut - frais)
- Disponible uniquement en mode production (les reversements n'existent pas en mode test)
4.2 Statuts des reversements
| Code | Statut | Description |
|---|---|---|
| -10 | Erreur | Erreur de traitement |
| 0 | Brouillon | En attente |
| 1 | En attente | Traitement en cours |
| 2 | À payer | Programmé pour paiement |
| 3 | Envoyé | Envoyé à la banque |
| 4 | Payé | Crédité sur le compte |
| 5 | Échoué | Échec du virement |
| 9 | Annulé | Reversement annulé |
| 10 | Validé | Validé dans le système |
4.3 Import de relevés de reversement
La page stancer_import_check_reversements.php permet d'importer et vérifier les relevés mensuels de Stancer au format CSV.
Processus d'import :
- Téléversement du fichier CSV avec le numéro de relevé
- Analyse automatique des en-têtes et mapping des colonnes
- Pour chaque opération (paiement, remboursement, litige) :
- Vérification de l'existence de l'opération en banque (champ
num_chq) - Validation des montants
- Mise à jour du
num_releve
- Vérification de l'existence de l'opération en banque (champ
- Pour chaque reversement :
- Création d'une écriture VIR (virement) vers le compte principal
- Création d'une écriture PRE (prélèvement) pour les frais
- Vérification croisée : détection des écritures bancaires absentes du fichier d'import
- Totalisation des crédits et débits avec comparaison
5. Statuts des paiements
| Code | Statut | Description |
|---|---|---|
| -10 | Erreur | Erreur technique lors du paiement |
| -1 | Masqué | Paiement masqué dans l'interface |
| 0 | Brouillon | Paiement initialisé, en attente |
| 1 | Autorisé | Autorisé par la banque, pas encore capturé |
| 2 | Capturé | Montant crédité sur le compte |
| 3 | Capture envoyée | Capture en cours de traitement |
| 4 | Contesté | Le client a contesté le paiement (litige) |
| 5 | Expiré | Paiement expiré |
| 6 | Échoué | Paiement échoué |
| 7 | Refusé | Paiement refusé par la banque |
| 8 | À capturer | Sera traité dans la journée |
| 9 | Annulé | Paiement annulé |
| 10 | Validé | Paiement validé dans le système |
6. Pages de liste et de gestion
6.1 Liste des paiements (stancer_payments_list.php)
Colonnes affichées :
- Identifiant interne (rowid)
- Identifiant Stancer (stancer_id) — lien cliquable vers le dashboard Stancer
- Montant (converti de centimes en devise)
- Devise
- Description
- Référence commande (order_id) — lien vers la facture/commande Dolibarr
- Identifiant unique (TAG)
- Méthode (card/sepa)
- Identifiant carte / SEPA
- Identifiant client Stancer
- Remboursements associés
- Statut (avec badge coloré)
- Code réponse bancaire
- Statut de capture
- Date de création
- Mode (test/production)
- Tiers (avec résolution automatique depuis le TAG si absent)
Fonctionnalités :
- Filtres individuels par colonne
- Recherche globale
- Tri par colonne
- Pagination configurable
- Bouton Rafraîchir : synchronisation manuelle avec l'API Stancer (déclenche
stancerRefreshAllPayments(),stancerRefreshAllPaymentsFromDolibarr()etstancerRemoveOldDraftPayments()) - Basculement vue liste / vue Kanban
- Suppression en masse (si permissions)
- Champs supplémentaires (extrafields) dynamiques
- Résolution automatique du tiers (fk_soc) depuis le TAG si absent
6.2 Liste des reversements (stancer_payouts_list.php)
Colonnes affichées :
- Identifiant interne et Stancer
- Montant brut, frais, montant net (calculé automatiquement)
- Devise
- Description et libellé relevé
- Dates (paiement et virement bancaire)
- Nombre de paiements, remboursements, litiges inclus
- Statut
- Mode (test/production)
Particularités :
- Le rafraîchissement n'est disponible qu'en mode production (message d'avertissement en mode test)
- Bouton "Nouveau" pour créer un enregistrement manuellement (tests)
6.3 Liste des remboursements (stancer_refunds_list.php)
Interface standard de liste Dolibarr avec :
- Colonnes triables et filtrables
- Vue liste et Kanban
- Actions en masse (suppression, email)
- Support des champs supplémentaires (extrafields)
7. Page de retour de paiement (public/paymentback.php)
Page publique appelée par Stancer après que le client a complété son paiement. Aucune authentification requise.
7.1 Flux de traitement
- Décodage des paramètres : déchiffrement Base64 du paramètre
scontenant tag, source, ref, securekey, entity - Récupération du paiement depuis la table Stancer par UUID ou session
- Vérification du statut via l'API Stancer (
GET /checkout/{id}) - Traitement carte bancaire : extraction des données de carte (marque, 4 derniers chiffres, nom, pays), création/mise à jour du mode de paiement
- Détection de doublons : recherche dans
llx_paiementparext_payment_id— affiche "Rechargement détecté" si doublon - Mise à jour de l'enregistrement local via
fillDataFromApi() - Actions post-paiement : attribution de permissions temporaires, enregistrement du paiement sur l'objet Dolibarr
7.2 Sécurité
- Pas d'authentification requise (page publique)
- CSRF désactivé (callback externe)
- Paramètres encodés en Base64 dans l'URL
- Support multi-entité via le paramètre entity
8. Onglet Tiers (stancer_thirdparty.php)
Ajoute un onglet "Stancer" sur la fiche des tiers dans Dolibarr.
Sections affichées :
- Compte Stancer : nom, date de création, identifiant (lien vers manage.stancer.com), action de suppression
- Mandats SEPA (si compte existant) : tableau avec label, banque, IBAN, BIC, identifiant Stancer, RUM, date RUM, mode de prélèvement, actions (créer/supprimer sur Stancer)
- Cartes bancaires (si carte existante) : tableau avec label, type, numéro masqué, titulaire, expiration, type de carte, pays, actions
- Lien de paiement du solde : bouton "Payer le solde [€X.XX]" pour encaisser directement les factures impayées du tiers
- Liens publics : vers les pages de saisie IBAN et CB si activées
- Intégration UpToSign : avertissement si activé mais aucun signataire configuré
9. Comptabilité et rapprochement
9.1 Gestion des frais
Trois modes de gestion des frais Stancer :
| Mode | Paramètre | Description |
|---|---|---|
| Aucun | STANCER_ADD_FEES = NONE |
Pas d'enregistrement automatique des frais |
| Par reversement | STANCER_ADD_FEES = PAYOUT |
Frais enregistrés au niveau de chaque reversement |
| Par paiement | STANCER_ADD_FEES = PAYMENT |
Frais enregistrés individuellement pour chaque paiement |
9.2 Régularisation des écarts comptables (admin/compta.php)
Page dédiée au rapprochement entre les factures fournisseur Stancer et les écritures comptables.
Fonctionnalités :
- Détection automatique des écarts entre débits et crédits
- Seuil configurable (
STANCER_COMPTA_SEUIL_ECART, ex. 0.05 EUR) - Création d'écritures OD (Opérations Diverses) pour régulariser
- Deux lignes par écart :
- Ligne compte fournisseur : débit/crédit du solde d'écart
- Ligne compte d'écart (658xxx) : contrepartie
Configuration :
| Paramètre | Description |
|---|---|
STANCER_COMPTA_JOURNAL_OD |
Journal pour les écritures OD |
STANCER_COMPTA_ACCOUNT_ECART |
Compte comptable pour les écarts (ex. 658xxx) |
STANCER_COMPTA_SEUIL_ECART |
Seuil de régularisation (ex. 0.05 EUR) |
STANCER_COMPTA_SUPPLIER_ID |
Identifiant du fournisseur Stancer dans Dolibarr |
9.3 Enregistrement bancaire
Les paiements sont enregistrés dans le module bancaire de Dolibarr :
- Création d'écritures
llx_bankpour chaque paiement confirmé - Enregistrement des frais en écriture séparée si configuré
- Support des virements inter-comptes pour les reversements
- Détection des doublons bancaires (
stancerBankLineDoesNotExists())
10. Automatisation et tâches planifiées
Le module définit trois tâches cron dans Dolibarr :
10.1 StancerCheckPay
Fréquence : quotidienne
Action : Vérifie le statut des paiements et reversements
- Synchronise les paiements depuis l'API Stancer
- Synchronise les paiements locaux non finalisés
- Vérifie les reversements
- Envoie des notifications email si configuré
10.2 StancerCheckTakePayments
Fréquence : quotidienne
Action : Collecte automatique des paiements SEPA
- Recherche les factures avec un mode de paiement SEPA actif
- Vérifie l'existence d'un compte Stancer et d'un mandat SEPA valide
- Initie les prélèvements SEPA pour les factures éligibles
- Gère les acomptes et les échecs de relance
- Génère un rapport HTML/email des actions effectuées
10.3 StancerCheckInvoicesPaid
Fréquence : quotidienne
Action : Vérification du statut "payé" des factures
- Recherche les factures non marquées comme payées
- Vérifie si le montant payé correspond au total TTC
- Marque automatiquement les factures comme payées si le paiement est complet
11. Hooks et intégration Dolibarr
Le module s'intègre dans 14 points d'accroche (hooks) de Dolibarr :
| Hook | Contexte d'intégration |
|---|---|
newpayment |
Création de paiement |
paymentlib |
Fonctions de la bibliothèque paiement |
invoicecard |
Fiche facture client |
invoicesuppliercard |
Fiche facture fournisseur |
ordercard |
Fiche commande |
propalcard |
Fiche devis / proposition commerciale |
formObjectOptions |
Options de formulaire |
thirdpartybancard |
Onglet compte bancaire du tiers |
printFieldListTitle |
En-têtes de colonnes dans les listes |
printFieldListValue |
Valeurs de colonnes dans les listes |
subscription |
Cotisations d'adhérents |
doncard |
Fiche don |
membercard |
Fiche adhérent |
bankline |
Ligne d'écriture bancaire |
Actions principales du hook formConfirm :
stancerCard: affiche une popup de paiement CB avec QR code et lien de paiementstancerSEPA: valide qu'un prélèvement SEPA n'est pas déjà en cours (temporisation de 10 minutes)
12. Variables de substitution
Le module fournit des variables de substitution pour les emails et documents :
| Variable | Description |
|---|---|
__STANCER_SEPA_RUM__ |
Référence Unique de Mandat SEPA |
__STANCER_SEPA_DELAIS__ |
Délai de prélèvement SEPA (en jours) |
__STANCER_SEPA_URL__ |
Lien public vers la page de saisie IBAN |
13. Modèles d'emails
Six modèles d'emails sont préconfigurés à l'installation :
| Modèle | Utilisation |
|---|---|
| Stancer Facture (SEPA) | Notification de prélèvement SEPA classique |
| Stancer Facture (SEPA information initiale) | Email d'information initial SEPA (obligation réglementaire) |
| Stancer Facture (SEPA Succès) | Confirmation de prélèvement SEPA réussi |
| Stancer Facture (ERREUR) | Notification d'erreur de paiement avec options de récupération |
| Stancer Facture (CB) | Notification de paiement par carte bancaire |
| Stancer Commande | Rappel de paiement pour commande |
Variables disponibles dans les modèles :
__REF__, __MYCOMPANY_NAME__, __MYCOMPANY_ADDRESS__, __MYCOMPANY_ZIP__, __MYCOMPANY_TOWN__, __DAY_TEXT__, __DAY__, __MONTH_TEXT__, __YEAR__, __AMOUNT_EXCL_TAX_FORMATED__, __STANCER_SEPA_DELAIS__, __USER_SIGNATURE__, __ONLINE_PAYMENT_URL__
14. Notifications automatiques
| Paramètre | Description |
|---|---|
STANCER_AUTO_MAIL_NOTIFICATIONS |
Activer les notifications email globales |
STANCER_AUTO_MAIL_NOTIFICATIONS_PAYMENT |
Notification à chaque paiement reçu |
STANCER_AUTO_MAIL_NOTIFICATIONS_PAYOUT |
Notification à chaque reversement reçu |
STANCER_AUTO_MAIL_NOTIFICATIONS_ON_NEW_CB_AND_SEPA |
Notification lors de l'enregistrement d'une nouvelle carte ou d'un nouveau mandat SEPA |
STANCER_AUTO_MAIL_INVOICES_ERROR |
Notification en cas d'erreur de paiement |
Administration
Pages d'administration
Le module fournit 12 pages d'administration accessibles depuis le menu Stancer :
| Page | Fichier | Description |
|---|---|---|
| Configuration | admin/setup.php |
Paramètres généraux, clés API, comptes bancaires, synchronisation |
| Carte bancaire | admin/cb.php |
Configuration des paiements CB, 3DS, emails |
| SEPA | admin/sepa.php |
Configuration des prélèvements SEPA, délais, montants max |
admin/mail.php |
Configuration des modèles d'emails | |
| Association | admin/asso.php |
Activation pour les associations et adhérents |
| Comptabilité | admin/compta.php |
Rapprochement comptable et régularisation des écarts |
| Test | admin/test.php |
Interface de test de l'API (client, paiements, reversements) |
| À propos | admin/about.php |
Informations sur le module |
| Logs | admin/logs.php |
Visualisation des journaux de transactions |
| Extrafields Paiements | admin/stancer_payments_extrafields.php |
Champs personnalisés pour les paiements |
| Extrafields Reversements | admin/stancer_payouts_extrafields.php |
Champs personnalisés pour les reversements |
| Extrafields Remboursements | admin/stancer_refunds_extrafields.php |
Champs personnalisés pour les remboursements |
Configuration générale
Clés API
| Paramètre | Description |
|---|---|
STANCER_IS_PROD |
Mode production (1) ou test (0) |
STANCER_TEST_PUBLIC_KEY |
Clé publique de test |
STANCER_TEST_PRIVATE_KEY |
Clé privée de test (masquée) |
STANCER_PROD_PUBLIC_KEY |
Clé publique de production |
STANCER_PROD_PRIVATE_KEY |
Clé privée de production (masquée) |
Comptes et utilisateurs
| Paramètre | Description |
|---|---|
STANCER_USER_ACCOUNT_FOR_ACTIONS |
Utilisateur Dolibarr pour les actions automatisées |
STANCER_BANK_ACCOUNT_FOR_PAYMENTS |
Compte bancaire pour l'enregistrement des paiements |
STANCER_BANK_MAIN_ACCOUNT_FOR_PAYOUTS |
Compte bancaire principal pour les reversements |
Synchronisation
| Paramètre | Description | Défaut |
|---|---|---|
STANCER_NUMBER_OF_ITEMS_TO_SYNC |
Nombre d'éléments par appel API | 200 (plage : 10-1000) |
STANCER_NB_DAYS_TO_SYNC |
Nombre de jours d'historique à récupérer | 31 (plage : 10-730) |
Divers
| Paramètre | Description |
|---|---|
STANCER_MONTHLY_SUBSCRIPTION_FEE |
Abonnement mensuel (frais de TPE, défaut : 18 EUR) |
STANCER_AUTO_INVOICE_ON_PROPAL_PAID |
Créer automatiquement une facture quand un devis est payé |
Interface de test (admin/test.php)
Permet de vérifier le bon fonctionnement de l'API directement depuis Dolibarr :
- Vérification de la configuration : affiche le mode (PRODUCTION / TEST) et un aperçu de la clé publique
- Création de client : crée ou récupère un client de test, affiche le lien vers le dashboard Stancer
- Lecture de client : affiche les détails (identifiant, email, nom, mobile)
- Liste des paiements récents : affiche les 5 derniers paiements (identifiant, montant, statut, date)
- Liste des reversements récents : affiche les 5 derniers reversements
- Détail d'un paiement : informations détaillées incluant le masquage de carte (**** + 4 derniers chiffres)
Support des associations (admin/asso.php)
L'activation de Stancer pour les associations crée automatiquement trois champs supplémentaires sur les adhérents :
| Champ | Type | Description |
|---|---|---|
stancer_sepa_ref |
VARCHAR(32) | Référence du mandat SEPA de l'adhérent |
stancer_cb_ref |
VARCHAR(32) | Référence de la carte bancaire de l'adhérent |
stancer_account |
VARCHAR(32) | Identifiant du compte client Stancer (obligatoire) |
API REST Stancer
Le module utilise un client REST intégré (StancerApi) qui communique directement avec l'API Stancer sans dépendance externe.
Synchronisation
Principes
- La synchronisation est exclusivement manuelle (bouton Rafraîchir dans les listes)
- Jamais de rafraîchissement automatique lors de la recherche ou du filtrage
- Les fonctions de synchronisation sont chaînées conditionnellement : si l'une échoue, les suivantes sont ignorées
Flux de synchronisation des paiements
stancerRefreshAllPayments(): récupère les nouveaux paiements depuis l'API Stancer depuis la dernière synchronisationstancerRefreshAllPaymentsFromDolibarr(): vérifie le statut des paiements locaux non finalisés via l'APIstancerRemoveOldDraftPayments(): supprime les paiements brouillon anciens (> 30 jours), sans appel API
Flux de synchronisation des reversements
stancerRefreshAllPayoutsFromStancer(): récupère les reversements depuis l'API (mode production uniquement)- Enchaîne avec la vérification locale si la première étape réussit
- Arrêt immédiat en cas d'erreur
Objets métier supportés
Le module s'intègre avec les objets Dolibarr suivants :
| Objet Dolibarr | Paiement CB | Prélèvement SEPA | Remarques |
|---|---|---|---|
| Facture client | Oui | Oui | Calcul automatique du solde restant dû |
| Commande | Oui | — | Support des acomptes (pourcentage configurable) |
| Devis / Proposition commerciale | Oui | — | Support des acomptes, page dédiée |
| Don | Oui | — | Via la page publique de paiement |
| Cotisation d'adhérent | Oui | Oui | Nécessite l'activation du mode association |
Codes de réponse bancaire
Le module interprète les codes de réponse bancaire standards :
| Code | Signification |
|---|---|
| 00 | Transaction approuvée |
| 02 | Contacter l'émetteur de la carte |
| 03 | Accepteur invalide |
| 04 | Conserver la carte |
| 05 | Ne pas honorer |
| 07 | Conserver la carte (conditions spéciales) |
| 08 | Approuver après identification |
| 12 | Transaction invalide |
| 13 | Montant invalide |
| 14 | Numéro de porteur invalide |
| 15 | Émetteur de carte inconnu |
| 30 | Erreur de format |
| 31 | Identifiant de l'acquéreur inconnu |
| 33 | Carte expirée |
| 34 | Suspicion de fraude |
| 41 | Carte perdue |
| 43 | Carte volée |
| 51 | Provision insuffisante ou crédit dépassé |
| 54 | Carte expirée |
| 56 | Carte absente du fichier |
| 57 | Transaction non autorisée pour ce porteur |
| 58 | Transaction non autorisée pour ce terminal |
| 59 | Suspicion de fraude |
| 60 | L'accepteur doit contacter l'acquéreur |
| 61 | Montant maximal de retrait dépassé |
| 63 | Règles de sécurité non respectées |
| 68 | Réponse non parvenue ou reçue trop tard |
| 75 | Nombre maximal d'essais PIN dépassé |
| 76 | Porteur déjà en opposition |
| 90 | Arrêt momentané du système |
| 91 | Émetteur de carte inaccessible |
| 92 | Transaction non trouvée par le réseau |
| 94 | Transaction dupliquée |
| 96 | Mauvais fonctionnement du système |
| 97 | Échéance de la temporisation |
| 98 | Serveur indisponible |
| 99 | Incident domaine initiateur |
| 7840 | Fraude détectée par le réseau CB |
Tests
Le module dispose d'une suite complète de tests :
Tests unitaires
| Fichier | Couverture |
|---|---|
StancerApiTest.php |
Client HTTP StancerApi |
StancerClassTest.php |
Classe principale Stancer |
StancerLibTest.php |
Fonctions de la bibliothèque partagée |
StancerPaymentsTest.php |
Modèle Stancer_payments |
StancerPayoutsTest.php |
Modèle Stancer_payouts |
StancerRefundsTest.php |
Modèle Stancer_refunds |
Tests d'intégration
| Fichier | Couverture |
|---|---|
StancerClassIntegrationTest.php |
Intégration classe principale avec Dolibarr |
StancerLibIntegrationTest.php |
Intégration fonctions bibliothèque |
StancerPaymentsIntegrationTest.php |
Intégration paiements |
StancerPayoutsIntegrationTest.php |
Intégration reversements |
StancerRefundsIntegrationTest.php |
Intégration remboursements |
StancerTriggersIntegrationTest.php |
Intégration déclencheurs |
Infrastructure de test
- Framework : PHPUnit 9.6+
- Mocks : HttpMock (simulation HTTP), DolibarrMocks (simulation Dolibarr)
- Fixtures : StancerApiFixtures (réponses API pré-enregistrées)
- Base de données : SQLite via
cap-rel/dolibarr-integration-sqlite - Couverture : PCOV avec rapport HTML
Conformité et sécurité
RGPD / Protection des données
- Configuration du DPO (Délégué à la Protection des Données) via
STANCER_EMAIL_DPO - Textes légaux SEPA intégrés dans les mandats PDF
- Informations sur le traitement des données dans les formulaires publics
Sécurité des paiements
- Support 3D Secure pour les paiements par carte
- Clés sécurisées (hachage) pour les pages publiques
- Détection de rechargement de page pour prévenir les paiements en double
- Protection CSRF sur les formulaires (désactivée uniquement sur les callbacks externes)
- Arrêt immédiat sur erreur 401 (authentification) pour éviter les requêtes en boucle
- Masquage des numéros de carte (affichage des 4 derniers chiffres uniquement)
Multi-entité
- Toutes les tables supportent le champ
entitypour la gestion multi-société - Les clés API sont configurables par entité
- Le contexte multi-entité est propagé dans les callbacks publics
Historique des versions
| Version | Date | Changements majeurs |
|---|---|---|
| 1.2.136 | 2026-01-19 | Paiement partiel (acompte) sur les devis |
| 1.2.130 | — | Corrections SQL des tâches cron |
| 1.2.124 | — | Migration vers getDolGlobalString(), support multi-entité, options d'automatisation SEPA |
| 1.2.117 | — | Nettoyage PHPStan, restauration gestion des frais |
| 1.2.109 | — | Second mandat SEPA, import de relevés, compatibilité Dolibarr 20 |
| 1.2.108 | — | Support des remboursements, import CSV de relevés, helpers bancaires |
| 1.2.100 | — | Corrections de conditions de course, améliorations des popups |
| 1.2.88 | — | Retour bancaire anticipé CB, automatisation statut facture payée |
| 1.2.80 | — | Délai SEPA, gestion multi-entité |
| 1.2.52 | — | Rétro-portage PHP-IBAN, conformité CNIL/DPO |
| 1.2.0 | — | Configuration du délai SEPA, notifications email automatiques |
| 1.0.0 | 2023-03-12 | Publication initiale |