Expertise 05 / 07

Billetterie & accès

Vendre en ligne, contrôler à l'entrée, même sans réseau.

Prouvé sur :Kultix

Depuis juillet 2024

  • HMAC-SHA256
  • anti-rejeu
  • liste de révocation locale
  • lien court par SMS
  • réseau de distributeurs
  • frais en points de base

Le tunnel d'achat

Étape 3 / 5

01 · Événement

Visuel

Événement de démonstration

Nom, date et lieu réels à fournir · billetterie fictive

02 · Places

Prix unitaire : 10 000 F CFA

03 · Récapitulatif — frais de service par méthode

MéthodeFrais de serviceTotal

La méthode la moins chère est affichée en premier, frais visibles avant le paiement.

04 · Paiement

Page de contrôle

Hors ligne — vérification locale

Aucun billet présenté. Achetez-en un à gauche, puis scannez-le.

Panneau technique

Latence de vérification

0 — vérification locale

Charge utile décodée

Signature

Émis le
Billets consommés localement
0
4
Méthodes de paiement
0 appel réseau
Vérification hors ligne

Le mécanisme

Comment ça marche.

Achat

frais par méthode en points de base

Paiement

PSP

Émission

charge utile + signature HMAC

QR

le jeton signé lui-même

SMS

lien court

Contrôle

vérification locale · 0 appel réseau

Anti-rejeu

liste locale · synchronisation différée

Côté émission — le billet se porte lui-même.

La charge utile du billet — événement, place, catégorie, dates d'émission et d'expiration — est signée en HMAC-SHA256, et c'est ce jeton signé que porte le QR. Le contrôle n'a donc rien à interroger : il vérifie la signature avec la clé embarquée. Sous un chapiteau sans couverture, avec une file d'attente, c'est la seule approche qui tienne.

Côté contrôle — la liste locale tranche.

La vérification de signature est faite en temps constant : une comparaison naïve laisserait fuiter, par le temps de réponse, à quel caractère elle a divergé. Le second scan d'un même billet est refusé alors que sa signature reste parfaitement valide — c'est la liste locale des billets consommés qui tranche, et elle se synchronise dès que le réseau revient.

Les arbitrages

Ce que j'ai écarté, et pourquoi.

Un choix technique sans son coût n'est pas un choix, c'est une préférence.

01

QR signé, ou identifiant vérifié en base ?

Le problème

Un identifiant vérifié en base impose un aller-retour réseau à chaque entrée — inutilisable sous un chapiteau sans couverture, avec une file d'attente.

Les options

Identifiant vérifié en base · charge utile signée vérifiable hors ligne.

Ce que j'ai choisi

Charge utile signée en HMAC-SHA256, vérifiable sans appel réseau.

Le coût

La clé de signature doit être embarquée dans l'application de scan et pouvoir être tournée ; un billet ne peut pas être révoqué instantanément partout.

02

Où mémoriser les billets consommés hors ligne ?

Le problème

Hors ligne, il faut bien mémoriser quelque part les billets déjà consommés.

Les options

Liste locale par appareil · synchronisation temps réel obligatoire.

Ce que j'ai choisi

Liste locale par appareil, synchronisée dès que le réseau revient.

Le coût

Deux portes qui scannent le même billet hors ligne, chacune sur son appareil, le laisseront toutes deux passer. Atténué en assignant les portes par catégorie de billet.

03

Les frais de service : absorbés ou répercutés ?

Le problème

Les frais du prestataire de paiement doivent bien être portés par quelqu'un.

Les options

Absorbés par l'organisateur · répercutés sur l'acheteur.

Ce que j'ai choisi

Répercutés et affichés par méthode, en points de base, avant le paiement.

Le coût

Le prix affiché n'est plus le prix final, ce qui crée de l'abandon — compensé par le fait que la méthode la moins chère est visible d'emblée.

Preuves dans le code

Deux extraits réels.

app/Services/Ticketing/TicketSigner.php

Extrait à fournir

lib/services/ticket_verifier.dart

Extrait à fournir

Code Mes Rêves

Alexis Kouakou