Sin impuesto Con impuesto

Module de protection des commandes - empêche les commandes en double et les factures ou paiements en double.

Price: 229,90 €
Première année: 229,90 € TTC
À partir de la deuxième année: 57,48 €/an TTC
  • Un an de support technique et des mises à jour à vie ; à partir de la deuxième année, le support est prolongé pour 57,48 €/an et inclut la prise en compte de vos idées d'amélioration générales du module.
  • Renouvellement automatique ; résiliable à tout moment, sans engagement.
Paiement unique: 229,90 € TTC
  • Un an de support technique et des mises à jour à vie ; ensuite, le support s'arrête (avec l'abonnement, il est prolongé pour 57,48 €/an).
  • Un seul paiement, sans prélèvement automatique.
190,00 € Sin impuesto 229,90 € Con impuesto

Évitez les commandes en double, qui entraînent deux factures ou deux paiements lorsque la passerelle de paiement ou le statut du paiement change deux fois simultanément. Corrigez également les doublons existants dans votre boutique en retournant les stocks bloqués.

Compatible avec PrestaShop 1.7.6 à 9.x. Aucune modification du code source.

Partager

Essayez la démo

Ordres

Le client a payé une seule fois. Votre boutique a deux commandes.

Deux notifications de passerelle de paiement arrivent simultanément, demandant toutes deux si la commande existe avant même sa création. Deux commandes sont alors générées : chacune avec sa facture, son paiement et le stock déduit. Aucun contrôle standard ne les détecte car les deux systèmes semblent fonctionner correctement en interne. RKR Order Guard bloque la seconde notification.

29 chariots
avec seulement deux commandes dans un magasin physique sur 143 649 commandes, réparties via trois plateformes de paiement.
10 sur 10
Les doubles exécutions ont donné lieu à deux factures sans le module ; avec celui-ci, aucune.
0 remplacements
Il ne touche pas au cœur du système, il survit donc aux mises à jour de PrestaShop et à celles de vos passerelles de paiement.

Cela l'empêche avant qu'il ne se produise.

Sur la passerelle de paiement
Avant que le contrôleur du module de paiement ne charge quoi que ce soit, un verrou MySQL est posé. La seconde notification attend, et lorsqu'elle arrive, elle constate que la commande est déjà créée.
Lors du changement d'état
La commande est bloquée le temps qu'elle change de statut, afin d'éviter la génération de deux factures et de deux paiements.
Dans l'arrière-boutique
Évitez de soumettre deux fois le formulaire de statut, car cela peut être dû à une erreur humaine.
Cocher et case
Après chaque changement de statut, il compare l'en-tête de la commande avec ses propres lignes et, s'il ne correspond pas, il le redimensionne : sans rien créer ni supprimer.

Et réparez ceux que vous avez déjà.

Dans Commandes → Commandes en double, vous pouvez consulter l'historique complet, et pas seulement les commandes passées après l'installation. Chaque panier en double est classé selon les paiements enregistrés :

A · un paiement, deux commandes
Il n'y a pas de supplément. L'excédent est annulé et votre stock vous est restitué.
B · deux paiements, deux commandes
Il y a eu un trop-perçu. Le remboursement est décidé par une seule personne, et le système n'a aucun pouvoir de décision.
C · indéterminé
Certaines charges ne sont pas identifiées. Elles sont simplement listées.

L'écran vous indique quelle commande sera conservée et pourquoi, et vous permet de la modifier. Le surplus est marqué comme Annulé (il n'est jamais supprimé) et le stock est mesuré avant et après, vous ne réapprovisionnez donc que ce qui n'a pas été retourné. Vous pouvez effectuer une simulation au préalable : le décompte est identique à l'exécution réelle.

Ce module ne fait jamais : ni effectuer de retour ni contacter la plateforme de paiement ; ni modifier une commande dont le colis a déjà été expédié ; ni supprimer une facture numérotée nécessitant une correction ; ni exécuter d’opérations par lots sans votre sélection et confirmation. De plus, même si le blocage prend fin, la vente se poursuit : le module n’annule jamais une commande.

Il vous alerte de ce qu'il trouve.

Il détecte quatre problèmes — commande en double, facture en double, surfacturation et commande déséquilibrée — et les enregistre dans un journal des incidents qui est conservé même si vous désinstallez le module.

Et assurez-vous que personne ne détourne vos paiements.

Un pirate informatique disposant d'un accès FTP à une boutique légitime a inséré sa propre passerelle de paiement dans le module de paiement. Des commandes ont été créées au nom du module légitime, apparaissaient comme des paiements normaux dans l'interface d'administration, et l'argent a été détourné. Pendant des mois, personne ne s'en est aperçu, car rien d'anormal n'apparaissait dans l'interface d'administration. Order Guard détecte ce que l'interface d'administration ne montre pas, grâce à son fonctionnement en deux niveaux.

Tous
L'examen de l'historique des commandes sur la copie du magasin n'a révélé aucune commande détournée antérieure au premier jour de l'attaque.
0 faux positifs
parmi des dizaines de milliers de paiements PayPal et PayPlug examinés
1. Le numéro d'opération de chaque commande
Chaque passerelle de paiement attribue un identifiant unique au paiement, et toute personne tentant de l'usurper ne peut le reproduire à l'identique. Redsys vérifie cet identifiant en comparant la signature au contenu du panier d'achat ; PayPal, PayPlug et Stripe le vérifient quant à eux par son format. Cette vérification est effectuée en temps réel lors de la création de la commande, via des tâches cron pour les commandes des sept derniers jours, et surtout, dans la section « Commandes » → « Suivi des paiements » , en mode lecture seule. Un avertissement s'affiche sur la page de détails de la commande (où figure l'expéditeur) et sous forme de bandeau rouge dans l'interface d'administration.
2. Les fichiers du module de paiement
Ce module enregistre le hachage SHA256 des fichiers de code de votre module de paiement (actifs ou inactifs), de ce module et de tous les fichiers individuels du répertoire racine. Si un fichier est modifié, ajouté ou supprimé sans mise à jour de PrestaShop, vous en serez informé. Les mises à jour légitimes ne déclencheront pas cette notification ; le hachage est automatiquement recréé. Si la modification vous appartient, il vous suffit de l'accepter en un clic.

Ce que ce service ne fait pas : il ne traite aucune commande ni aucun paiement, il vous alerte uniquement. Il s’agit d’une trace, pas d’une preuve : chaque commande suspecte est confirmée en consultant son numéro de transaction dans le tableau de bord de la passerelle de paiement, où les transactions frauduleuses ne sont pas répertoriées. De plus, il ne vérifie pas Redsys à votre place : cette vérification est effectuée manuellement dans votre tableau de bord marchand, à l’aide de la liste affichée à l’écran.

Compatible avec PrestaShop 1.7.6 à 9.x

Développé et maintenu par REKIRE

12/10/2026
v1.3.2

  • La clé produit des modules complémentaires PrestaShop ( module_key ) est requise pour vendre ce produit sur cette plateforme. Rien d'autre ne change.

12/10/2026
v1.3.1

  • Pour les validateurs d'extensions PrestaShop uniquement : la description du module doit tenir sur une seule ligne. Si elle est répartie sur plusieurs lignes, le validateur ne la lira pas et le processus de vérification des exigences échouera avec le message « $this >description n'est pas valide ». Le texte reste identique et la boutique ne s'en aperçoit pas.

12/10/2026
v1.3.0

Surveillance des paiements détournés. Ce système est issu d'un cas réel : un attaquant disposant d'un accès FTP a inséré un paiement par carte depuis sa propre passerelle de paiement dans le module Redsys. Pendant des mois, des commandes ont été créées au nom de Redsys, avec une configuration correcte dans le back-office (y compris la table du module) et les fonds crédités sur son compte. Aucune autre action n'est effectuée sur une commande ou un paiement : le système se contente d'enregistrer et d'alerter.

  • Nouveau critère payment_mismatch : le numéro de transaction ne correspond pas à celui enregistré par la passerelle pour cette commande. Validateurs par passerelle ( classes/RkrOrderGuardGateway*.php , un emplacement par passerelle). Redsys est vérifié par signature : le Ds_Order commence par le numéro de panier suivi de zéros jusqu’à 8 chiffres et se termine par mmss (ou correspond à l’identifiant de commande à 12 chiffres avec la mention « Créer une commande avant de payer »). Ce critère est respecté, qu’il s’agisse d’un panier différent ou d’une autre commande du même client. Les formats vides ou obsolètes ne sont pas pris en compte. PayPal, PayPlug et Stripe sont vérifiés par format . Cette vérification est effectuée dans actionValidateOrder et enregistrée une seule fois par commande, et non à chaque changement de statut.
  • La validation par rapport à la copie du dossier du magasin (plus de 100 000 commandes, vérifiées en moins d'une seconde) confirme que les commandes détournées apparaissent exactement, aucune avant le premier jour de l'attaque, et qu'il n'y a pas de faux positifs parmi les dizaines de milliers de commandes PayPal et PayPlug. Tous les comptes Redsys légitimes à 12 chiffres possèdent mmss valide ; les comptes à 12 chiffres sélectionnés aléatoirement échouent deux fois sur trois.
  • Empreinte numérique du module de paiement ( payment_files ) : hachage SHA256 de chaque fichier de code des modules de paiement installés (actifs ou non, l’attaquant ayant désactivé PayPlug pour le dissimuler), ainsi que de ce module et de tous les fichiers individuels du répertoire racine. Vous êtes alerté en cas de modification, d’apparition ou de disparition d’un fichier. Une mise à jour de PrestaShop ne déclenche pas de notification : elle met simplement à jour la version dans la base de données, et l’empreinte numérique est automatiquement reconstruite. La version du fichier est invalide : l’attaquant a installé une version antérieure du module.
  • Nouvel écran : Commandes → Suivi des paiements. Ouvrir les alertes (marquées comme examinées), les fichiers par module avec « Accepter les fichiers actuels » et consulter l’historique des numéros de transaction (lecture seule).
  • Les notifications s'affichent comme suit : une bannière rouge apparaît sur l'ensemble de l'interface d'administration tant qu'une commande est ouverte, et une notification apparaît sur la page de détails de la commande , où se trouve l'expéditeur. Des notifications par e-mail et via RKR Sentinel sont également envoyées.
  • Cron, avec son propre jeton ( /module/rkrorderguard/cron ), vérifie les fichiers et les commandes des sept derniers jours, au cas où certains auraient été créés sans passer par le hook. Sans cron, le back-office effectue cette vérification au maximum une fois par intervalle.
  • Ce qu'il ne faut pas faire : vérifier la transaction avec Redsys. Le module Redsys ne permet pas d'effectuer de requêtes et Redsys est un service distinct que chaque banque active pour chaque commerçant. La confirmation se fait manuellement dans le panneau de contrôle.
  • Coexistence avec RKR Order Guard Free, qui partage le tableau des incidents et clôture les éléments ouverts d'une commande qu'il considère comme correcte : un paiement détourné reste ouvert jusqu'à ce qu'un employé le marque comme examiné, peu importe qui le clôture.
  • PrestaShop 9.1 n'affiche pas displayAdminAfterHeader sur les pages du contrôleur classique : la bannière est également placée à partir de displayBackOfficeHeader , sans être dupliquée.
  • Correction d'un bug critique dans PrestaShop 9 lié à la réparation des commandes en double : la restauration du stock appelait ` StockAvailable::dependsOnStock() , qui n'est plus présente dans la version 9. Cette erreur se produisait uniquement lorsque l'annulation n'avait pas automatiquement restauré le stock.
  • Vérification des modules complémentaires : tout le HTML est placé dans les modèles Smarty ( views/templates/admin/ ) et les scripts dans views/js/ ; absence Context:: , Tab::getIdFromClassName() et Module::isInstalled()/isEnabled() (obsolètes) ; .htaccess à la racine ; l() sans la sauvegarde Symfony, ce qui a laissé « Traduction introuvable » avec « Non » et « Total » ; la description config.xml est identique à celle de PHP ; PHP CS Fixer et PHPStan (niveau 5) sont exempts de problèmes.

30/09/2026
v1.2.0

Ce défaut présente une variante que la version 1.1.0 n'a pas détectée : lorsque le module de paiement crée la commande APRÈS le paiement, ce n'est pas la facture qui est dupliquée, mais la commande elle-même . Chaque élément reste cohérent en interne (la facture avec ses lignes de commande et son paiement rapproché), c'est pourquoi aucun des trois critères précédents ne l'a signalé. Sur une boutique réelle avec 143 649 commandes : 29 paniers contenant deux commandes, et parmi les 54 commandes les plus récentes, la version 1.1.0 n'en aurait signalé aucune .

  • Nouveau critère duplicate_order : Une autre commande est active dans le même panier, avec une référence différente. Cette référence permet de la distinguer d'une commande fractionnée par colis, opération effectuée intentionnellement par PrestaShop, où toutes les commandes partagent la même référence. Par conséquent, un index unique sur orders.id_cart ne constitue pas le tableau approprié. Ce critère est vérifié lors de l' actionValidateOrder , déclenchée par la détection d'une nouvelle commande, et lors de chaque vérification ultérieure.
  • Nouvel écran : Commandes → Commandes en double. Vérifiez et corrigez celles déjà présentes dans la boutique, une opération qui nécessitait jusqu'à présent une intervention manuelle. La colonne RKROG_SINCE n'est pas prise en compte : cette date sert au suivi en temps réel, et c'est ici que vous trouverez la précédente.
  • La classification est l'élément essentiel de cet écran et provient de order_payment.transaction_id , qui est une donnée centrale indépendante de la passerelle de paiement : A correspond à un paiement et deux commandes (le trop-perçu est annulé, aucun remboursement n'est effectué), B à deux paiements distincts (un remboursement est nécessaire et la décision revient à un opérateur), et C à une situation indéterminée (elle est simplement listée). Seul le cas A est modifié.
  • Et ce qu'il ne fait pas, et qui est tout aussi important : si le surplus a une facture numérotée, la facture n'est pas touchée (cela nécessite une correction), si un colis a été expédié, rien n'est touché, la passerelle n'est jamais appelée ni un retour émis, et rien n'est exécuté par lots sans marquage et confirmation.
  • La simulation donne exactement les mêmes résultats que l'exécution. La décision finale est prise dans la analizar() `, qui ne produit aucune donnée ; aplicar() exécute uniquement les décisions déjà prises. Le rapport est équilibré par construction ( grupos = reparados + saltados + sin nada ) et un avertissement s'affiche en cas de déséquilibre.
  • Le stock est mesuré, et non présumé. Le système central restitue le stock en cas d'annulation, mais uniquement si l'état précédent était pertinent et si le produit n'est pas géré par une administration avancée. Le stock est mesuré avant et après la restitution, et seul le stock non restitué est remis en stock : ajouter du stock par précaution entraînerait un double retour, ce qui est plus préjudiciable que de ne pas le restituer du tout.
  • La référence de la passerelle devient la première clé de verrouillage. Sur un serveur n'autorisant qu'une seule requête GET_LOCK par session, seule la première clé est utilisée. Avec le panier d'achat en première ligne, les deux appels à la passerelle verrouillaient des noms différents : aucune exclusion mutuelle n'était possible, et le module était installé, actif, mais inactif. La référence de la passerelle est la seule à parvenir par les deux chemins ; la notification serveur à serveur arrive généralement sans aucun de nos paramètres.
  • Journalisation optionnelle des verrous acquis ( RKROG_TRACE , désactivée par défaut). Sans elle, la découverte de ce problème prendrait une après-midi entière : il était impossible de savoir quelle clé avait bloqué une requête.

Vous pourriez aussi aimer

module d'abonné
108,90 €
90,00 € Sin impuesto 108,90 € Con impuesto
Blog
Module de point de vente à distance Lite
121,00 €
100,00 € Sin impuesto 121,00 € Con impuesto
Product Videos
RKR Remote TPV Lite in under 2 minutes (English)
play_circle_outline

4 autres produits de la même catégorie

FAQ et module de questions-réponses
36,30 €
30,00 € Sin impuesto 36,30 € Con impuesto
Product Videos
RKR Questions in 90 seconds (English)
play_circle_outline

Questions and answers

Nobody has asked anything about this product yet.

Chargement...
Consentement aux cookies
Retour en haut