Le journal d'audit de returnEasier est un registre immuable de tout ce qui se passe avec vos demandes : chaque fois qu'une demande est créée, approuvée, marquée comme reçue ou remboursée, une ligne qu'on ne peut ni modifier ni supprimer est consignée. Chaque événement est scellé par un hachage SHA-256 chaîné avec le précédent, formant une chaîne à l'épreuve des manipulations. Quand vous devez fournir des preuves — à un auditeur, à l'administration ou à votre conseiller — vous allez dans Conformité → Exporter et téléchargez un ZIP contenant tout l'historique et un fichier d'intégrité pour le vérifier.
Pourquoi le registre est-il immuable ?
La table des événements est en ajout seul : la base de données n'admet que l'ajout de lignes. Un déclencheur PostgreSQL rejette toute tentative d'UPDATE ou de DELETE sur celle-ci, d'où qu'elle vienne (l'application, un script, une migration ou un attaquant disposant de droits). Ce n'est pas une promesse de configuration : c'est imposé au cœur du moteur de la base de données.
Sur cette base se construit la chaîne de hachages :
- Chaque événement est converti en un JSON canonique (clés ordonnées, sans ambiguïté) et on lui calcule un SHA-256.
- Ce hachage est calculé en incluant le hachage de l'événement précédent (
hash_anterior). Le premier événement de chaque chaîne est le « génésis ». - Si quelqu'un modifiait une seule donnée d'un événement passé, son hachage changerait et ne concorderait plus avec le
hash_anteriorde l'événement suivant : la manipulation se trahit d'elle-même.
Les demandes (return_requests) portent aussi leur propre hachage et hachage précédent, inclus dans l'exportation afin de pouvoir être vérifiés hors de l'application.
Comment exporter mon historique vérifiable ?
L'exportation se trouve dans Conformité → Exporter (chemin /app/settings/compliance/export) au sein de l'application, dans l'Admin Shopify.
- Ouvrez Conformité → Exporter dans le menu latéral.
- Indiquez une plage de dates : « du » et « au » (au format date). Vous pouvez laisser les deux vides pour exporter tout votre historique. Les dates sont interprétées dans le fuseau horaire de votre boutique (par défaut Europe/Madrid).
- Lancez l'exportation. Selon le nombre de demandes de la plage, returnEasier fait l'une de deux choses (voir plus bas).
Téléchargement sur le moment ou par email, selon le volume
returnEasier adapte la livraison à la taille de la plage pour ne pas bloquer le navigateur avec des téléchargements énormes :
| Demandes dans la plage | Ce qui se passe |
|---|---|
| 0 – 100 | Le ZIP est généré et téléchargé sur le moment. |
| 101 – 1000 | returnEasier vous envoie le ZIP par email (lien temporaire). |
| Plus de 1000 | L'exportation est refusée : restreignez la plage de dates. |
La limite stricte est de 1000 demandes par exportation. Si votre historique est plus important, divisez-le en plusieurs plages de dates (par exemple, trimestre par trimestre) et exportez chacune.
Que contient le ZIP ?
Le fichier s'appelle returneasier-auditoria-<votre-boutique>-<date>.zip et contient :
LISEZMOI.txt— guide en langage clair : ce qu'est chaque fichier et comment vérifier l'intégrité.solicitudes.csv— une ligne par demande, avec des colonnes commepublic_id,tipo,estado,creada_en_utc,resuelta_en_utc,pedido,cliente_email,cliente_nombre,importe,moneda,motivo,resolucion_preferida,notas_cliente,hash,hash_anterioretrefund_id.eventos.csv— le registre complet en ajout seul :public_id,evento,actor,actor_id,fecha_utc,hash,hash_anterioretpayload_json.pdfs/— les PDF d'accusé de réception de chaque rétractation, un par demande.INTEGRITY.json— le fichier d'intégrité : algorithme (SHA-256), décomptes, le hachage de chaque fichier du ZIP et la vérification de chaque chaîne d'événements.
Comment vérifier l'intégrité de l'exportation ?
Le INTEGRITY.json est la pièce maîtresse pour démontrer que rien n'a été touché :
- Il apporte le hachage SHA-256 de chaque fichier du ZIP. Recalculez le hachage de, par exemple,
eventos.csvavec n'importe quel outil standard et comparez-le à celui qui y figure. - Il inclut la vérification de chaque chaîne d'événements : pour chaque demande, il indique si sa chaîne est « ok » ou « rompue » et, le cas échéant, le motif (chaîne bifurquée, cycle, hachage qui ne se recompose pas…).
- Si un PDF n'a pas pu être récupéré (par exemple, parce qu'il a été supprimé suite à une demande RGPD), cela est noté dans la liste des PDF non disponibles avec son motif, au lieu de faire échouer toute l'exportation.
Le INTEGRITY.json lui-même ne peut pas contenir son propre hachage : c'est donc le seul fichier qui ne s'auto-vérifie pas ; tout le reste, si.
Lien avec d'autres fonctions
Le journal d'audit est la base des modèles légaux et du PDF d'accusé de réception (voir « Que contient le PDF d'accusé de réception de la rétractation ? ») : chaque confirmation de rétractation envoyée au client est ancrée à la chaîne de hachages. Pour comprendre quels emails génèrent ces événements, consultez « Quels emails envoie returnEasier et à qui ? ». Et avant de désinstaller ou d'annuler, il convient d'exporter l'historique : c'est expliqué dans « Que deviennent mes données si je désinstalle ou annule returnEasier ? ».