Nous avons affaire à des trains électriques à Tutu depuis 17 ans. Vous avez peut-être vu notre emploi du temps en tant qu'enfant ou étudiant. Pendant tout ce temps, on nous demande quand il sera possible d'acheter un billet pour le train d'intérêt directement via l'application. Depuis 17 longues années, nous attendons un avenir meilleur, et il a fallu la moitié de la planète pour être mis en quarantaine pour que les billets numériques deviennent beaucoup plus demandés.
La raison en est que personne n'a encore trouvé comment les vendre de telle manière que:
- D'une part - exactement le même prix qu'à la caisse;
- D'autre part, pour s'assurer qu'il n'y a pas d'abus comme «je vois un contrôleur à deux pas - j'achète un ticket»;
-
Rapide, pratique et fiable.
Le troisième point n'a pas encore évolué ensemble. Maintenant, je vais vous dire à quel point ce schéma fonctionne déjà intelligemment. Et je dirai que je vois toutes les conditions préalables pour le rendre pratique à l'avenir.
Voyons comment un utilisateur achète et ce qui se passe sur différents systèmes au cours de ce processus.
La manière délicate habituelle sans bugs
Étape 1: sélection et paiement des billets. Tout est assez simple et familier ici. Deux de nos applications mobiles avec des horaires ont reçu des boutons «acheter» pour les trains TsPPK (jusqu'à présent seulement le TsPPK, oui, c'est-à-dire la plupart des directions de Moscou).
Les prix dans l'application sont exactement les mêmes qu'à la caisse. Nous utilisons les mêmes mécanismes que CPPK utilise pour vendre des billets, cela ressemble à une sorte d'API technique interne. Il a fallu beaucoup de travail pour tout cela, car les bibliothèques prêtes à l'emploi pour iOS et Android ne se sont pas comportées à 100% de manière stable. La différence entre "ne plante presque jamais" et "plante parfois" signifie parfois la création de wrappers plus avancés sur le plan technologique.
Mais continuons à acheter un billet:
Apple Pay et Google wallet ont été difficiles pour nous sur ce projet en raison des fonctionnalités de la passerelle. Cette histoire sera mieux racontée par mon collègue plus tard. Dans un premier temps, nous avons étudié la possibilité de transférer un client vers l'application officielle CPPK. Il a été développé par la société Movista, qui a remporté l'appel d'offres correspondant. Après une série d'expériences, nous avons décidé que beaucoup de travail d'intégration est encore mieux que de changer l'interface lors de l'achat.
Étape 2: PD. Nous sommes ici pour la prochaine surprise d'une puissance incroyable: si vous n'avez pas besoin de renseigner votre nom complet et votre numéro de passeport lors d'un paiement régulier, vous le faites en ligne. Oui, même pour les billets de train. La base est l'ordre du ministère des transports n ° 322.
Voici une preuve :
:
- ( ) ;
- ;
- ;
- ;
- () ;
- — , , * ( ), , , ;
- .
3.4. :
- ( ) ;
- ;
- ;
- ;
- () ;
- — , , * ( ), , , ;
- .
Comme vous pouvez le deviner, c'est là que les utilisateurs ont peur et nous avons fait de notre mieux pour réduire leurs hésitations. Mais dans les tests bêta, il y a eu beaucoup d'insatisfaction quant à l'exécution de cette commande.
Si vous pensez qu'après paiement, vous avez un ticket entre les mains, ce n'est toujours pas le cas. Vous avez entre les mains un document qui peut devenir un ticket lors de l'activation au tourniquet de la gare.
Par conséquent, étape 3: passez par le tourniquet rouge. C'est en fait une étape supplémentaire, mais c'est une exigence de sécurité: vous devez d'abord acheter un billet, puis passer par le tourniquet: des
tourniquets rouges (généralement 1 ou 2 d'entre eux aux stations CPPK) et des validateurs verts conviennent. En haut de l'article, ils sont volumineux, mais ils ressemblent généralement à ceci:
Que se passe-t-il:
- Vous achetez un ticket, nous créons une réservation sur le serveur.
- Vous payez pour un ticket, des données sont reçues de la passerelle indiquant que le paiement a réussi.
- Le CPPK envoie un ticket et une clé base64 au téléphone, soit la moitié de la clé pour activer ce ticket.
- L'autre moitié de la clé doit être prise au tourniquet ou au validateur. Vous allez au tourniquet, scannez le code QR dessus.
- Ensuite, une clé est assemblée à partir des deux moitiés, ce qui "ouvre" le ticket. Vous posez votre ticket au tourniquet et passez.
Important :
- Le tourniquet n'a aucune logique pour vérifier le code QR et le ticket. Il montre simplement ses parties de la clé qui changent constamment sous la forme de codes QR avec des étiquettes de station cousues là-bas.
- Vous n'avez pas besoin d'Internet pour connecter les moitiés de la clé et obtenir un ticket. Tout s'est passé presque immédiatement après l'achat, vous avez reçu un ticket, puis tout est fait hors ligne sur le téléphone à l'intérieur de l'application - à la fois son activation et son affichage.
- QR- — . — . .
Si tout s'est bien passé, vous recevrez un ticket. Si tout s'est mal passé (au lieu du tourniquet, vous avez scanné sa photo soigneusement stockée depuis une autre gare), soit vous obtenez un ticket invalide (si vous l'avez activé avec le QR code d'hier, par exemple), soit le ticket n'est pas activé. D'ailleurs, l'opportunité d'obtenir un ticket invalide nous a fait penser qu'il serait facile d'inverser le code de la bibliothèque.
Reste la dernière tâche : comment le contrôleur peut-il vérifier le billet électronique? Après tout, cela ne diffère pas visuellement de la capture d'écran du même billet! Il s'avère que le CPPK a trouvé une solution qui se rapproche d'une ingénieuse: il faut ouvrir un ticket dans l'application et appuyer dessus. Le ticket activé commencera à tourner. On suppose que cela protège de manière fiable la majorité de la population contre les contrefaçons dans Photoshop.
Nous avons ajouté la réactivation au cas où vous descendriez à la gare en cours de route.
Passons maintenant aux trucs doux - les bugs!
Le tourniquet rouge peut ne pas s'ouvrir. Prends-le et ne t'ouvre pas. Parce que quelque chose dans son cerveau de tourniquet ne se déclenchera pas à temps. Par exemple, une protection qui vous empêche de transmettre le même code QR à deux tourniquets à la fois. La probabilité est très faible, mais il y en a. Dans ce cas, un grand-père fatigué, en service à la gare, vous approchera. Il a vu cela des centaines de fois et sait ce que signifie hésiter au tourniquet rouge. Vérifiez le ticket dans l'application ("Spinning? Spinning!") Et laissez-vous passer tranquillement.
Le validateur vert sur la plateforme peut ne pas fonctionner. C'est la Russie, pas le Japon, donc ici, cela peut durer plus de 3 minutes au total par an. Dans ce cas, vous devez vous rendre chez un autre validateur, et il se trouve sur une plate-forme différente. La probabilité est également très faible, mais il y en a. Il est peu probable qu'une personne ordinaire soit confrontée à une telle situation, mais nous l'avons testée pendant longtemps et avec acharnement, nous le savons donc.
Si vous avez scanné le code QR sur le tourniquet rouge au moment du changement de flux (quand ils vous disent: «Allez dans un autre, ici les gens descendent du train») - vous devez passer exactement par celui-ci, sinon vous couperez le même code qui est responsable de avec un ticket, vous n'avez pas parcouru tous les tourniquets à la fois. Le voisin n'est pas synchronisé immédiatement. Cela signifie soit une demi-minute de retard, soit la vérification du billet par le grand-père de garde. "Est-ce qu'il tourne? Spinning! "
Petite FAQ
- Puis-je acheter un billet électronique pour un train depuis le métro?
Pouvez. C'est pourquoi nous vous avons fait acheter sur l'escalator.
- Si la connexion est coupée après l'activation du ticket, le ticket restera-t-il?
Oui. Et ça tournera.
- Avez-vous besoin d'Internet lorsque le ticket est activé au tourniquet?
Non, tout se passe hors ligne dans le logiciel de votre téléphone. Vous avez déjà un ticket, il est simplement décrypté.
- Si je vois un contrôleur, il est trop tard pour se précipiter pour acheter un billet électronique, non?
Oui, si vous ne disposez pas d'un code QR de la gare la plus proche. Et connaissant notre mentalité, ce n'est pas si complètement sarcasme.
- Ha, et si je le photographiais le matin en passant le tourniquet?
Change régulièrement en quelques minutes.
- Et si je comprenais le schéma de ce code?
L'algorithme de codage change à minuit et les codes commencent à différer de manière très spectaculaire des précédents.
- Si j'active le ticket avec le mauvais code QR, que faire?
Ensuite, vous aurez un ticket invalide. Ou un billet pour la mauvaise date.
- Combien de temps le billet électronique est-il valable?
Après activation, le ticket est valable jusqu'à 03h00 du lendemain. Autrement dit, vous pouvez le scanner au tourniquet à 7 h et l'utiliser à 21 h. Pas de problème.
- Et si je monte dans le train à 00h01?
À la jonction des dates, il y a un Heisenbug dans le système de vérification des billets (billets papier aussi, c'est-à-dire pas dans notre pile), lorsque les tourniquets peuvent ne pas répondre au billet d'hier. Le traitement est normal - vous devrez appeler le tourniquet en service, qui examinera le billet renouvelable et vous laissera passer.
- Et si je passais le tourniquet à 2h59?
Si dans la seconde qui s'est écoulée entre l'activation du billet et le passage au tourniquet, la journée technique s'est terminée, le problème doit également être résolu par l'intermédiaire du grand-père. Il endurera tout.
Autres billets
Nous négocions avec d'autres transporteurs pour vendre des billets aux mêmes prix qu'au guichet. Dans de nombreuses directions, il n'y a pas de telles difficultés avec l'activation des billets, par exemple, dans la plupart des trains de Leningradskoye, vous pouvez acheter un billet à l'intérieur du train. Naturellement, cela crée une vulnérabilité connue, et un compromis doit être trouvé qui conviendra à tout le monde. Mais je crains que ce soit plus un domaine de travail communautaire que de développement. Bien que si vous avez des idées, nous serons heureux de les mettre en œuvre.