Pont caisse externe (External Shop POS)
Si le magasin de votre camping tourne sur sa propre caisse — Lightspeed, Zettle, un script Python maison, peu importe — ce pont permet à la caisse de pousser chaque transaction vers CampOne, de sorte que les totaux du jour (et l’écriture comptable SAP, et les rapports) capturent la totalité du chiffre d’affaires, pas seulement celui de l’accueil.
Contrairement aux autres intégrations, celle-ci est entrante : c’est la caisse externe qui appelle CampOne, et non l’inverse. Vous n’avez pas de compte fournisseur à configurer ici — à la place, vous générez une clé API CampOne avec les bons scopes et la collez dans le système externe.
Ce que vous y gagnez
Section intitulée « Ce que vous y gagnez »- Une API publique sur
/api/v1/public/pos/transactions/qui accepte les transactions externes - Idempotence sur
external_ref— un nouvel essai après une coupure réseau ne crée jamais de doublon - Authentification standard par clé API CampOne, avec deux nouveaux scopes :
pos:readetpos:write - Un endpoint de relecture pour la réconciliation de fin de journée
- Un endpoint produits pour que la caisse externe puisse synchroniser le catalogue
- Un journal d’activité entrante sur la carte de réglages
Prérequis
Section intitulée « Prérequis »Aucun côté éditeur — vous n’avez pas besoin d’un contrat Lightspeed ou d’un compte Zettle pour activer l’intégration. Vous configurez CampOne, puis vous pointez votre système externe vers lui.
Ce dont vous avez besoin :
- Un système de caisse externe capable d’effectuer des requêtes HTTP avec un Bearer token
- De savoir comment renseigner des URL d’API et des jetons dans ce système
Comment le mettre en place
Section intitulée « Comment le mettre en place »Réglages → Intégrations → Clés API (la surface de clés API existante, à côté de l’onglet Adaptateurs fournisseurs) :
- Cliquez sur Create new key.
- Donnez-lui un nom (par ex.
Lightspeed shop till). - Cochez les scopes
pos:readetpos:write. - Cliquez sur Generate. CampOne affiche le jeton brut une seule fois — copiez-le maintenant et enregistrez-le dans le système externe.
- Le jeton est haché au repos ; si vous le perdez, révoquez et générez-en un nouveau.
Puis, dans votre caisse externe, configurez :
- API URL :
https://votre-tenant.campone.ch/api/v1/public/pos/transactions/ - Auth :
Authorization: Bearer <le-jeton-que-vous-venez-de-copier>
Ce qu’envoie la caisse externe
Section intitulée « Ce qu’envoie la caisse externe »POST /api/v1/public/pos/transactions/Authorization: Bearer ck_…Content-Type: application/json
{ "external_ref": "lightspeed-2026-04-29-T-1234", "payment_method": "CASH", "total_amount": "12.50", "items": [ { "description": "Croissant", "quantity": 2, "unit_price": "3.50", "line_total": "7.00" }, { "description": "Coffee", "quantity": 1, "unit_price": "5.50", "line_total": "5.50" } ], "occurred_at": "2026-04-29T08:14:32Z"}Le external_ref est votre clé d’idempotence — il doit être unique par transaction dans votre système. CampOne en garantit l’unicité par tenant : un nouvel essai sur la même transaction renvoie un 200 avec l’enregistrement existant (au lieu d’un 409 ou d’un doublon).
Réconciliation
Section intitulée « Réconciliation »En fin de journée, le système externe peut faire GET /api/v1/public/pos/transactions/<external_ref>/ pour confirmer que CampOne a bien la transaction. Ou GET /api/v1/public/pos/products/ pour rafraîchir son catalogue.
Côté CampOne, les transactions issues de sources externes apparaissent dans /kasse/transaktionen comme toute autre transaction de caisse, avec Source: External POS, ce qui permet de filtrer.
Sécurité
Section intitulée « Sécurité »- Les clés API sont hachées au repos avec le hacher de mots de passe de Django (Argon2 / bcrypt).
- Chaque appel d’API est journalisé : méthode, chemin, code de statut, latence, préfixe de la clé.
- Les clés peuvent être révoquées instantanément. Une clé révoquée renvoie 401 dès l’appel suivant.
- Les scopes sont appliqués par endpoint — une clé
pos:readseule ne peut pas poster de transactions, même si vous le lui demandez.
- Les intégrations en direct contre des éditeurs de caisse précis (Lightspeed, Zettle, Sumup) ne sont pas encore certifiées — le contrat HTTP standard ci-dessus est ce dans quoi ils doivent s’inscrire. Sur la feuille de route : des adaptateurs testés par éditeur.
- Les remboursements émis depuis la caisse externe apparaissent dans CampOne comme des transactions distinctes ; CampOne ne lie pas automatiquement un remboursement à sa vente d’origine entre systèmes.