私たちはツツで17年間電車を扱ってきました。あなたは私たちのスケジュールを子供または学生として見たことがあるかもしれません。この間ずっと、アプリケーションから直接関心のある列車のチケットを購入できるのはいつかという質問がありました。17年間、私たちは明るい未来を待っていました。デジタルチケットの需要がさらに高まるには、地球の半分が隔離されるのに時間がかかりました。
その理由は、次のような方法でそれらを販売する方法をまだ誰も理解していないためです。
- 一方では、チェックアウト時とまったく同じ価格です。
- 一方、「2歩先にコントローラーが見えます。チケットを購入します」などの悪用がないことを確認します。
-
高速、便利、信頼性。
3番目のポイントはまだ一緒に成長していません。ここで、このスキームがすでにどれほど巧妙に機能しているかを説明します。そして、私はそれを将来便利にするためのすべての前提条件を見ていると言います。
ユーザーが購入する方法と、このプロセス中にさまざまなシステムで何が起こるかを見ていきましょう。
バグのない通常のトリッキーな方法
ステップ1:チケットの選択と支払い。ここではすべてが非常にシンプルでおなじみです。タイムテーブル付きの2つのモバイルアプリは、TsPPKトレインの「購入」ボタンを受け取りました(これまでのところ、TsPPKのみ、はい、つまりモスクワのほとんどの方向)。

アプリケーションの価格は、チェックアウトの場合とまったく同じです。 CPPKがチケットの販売に使用するのと同じメカニズムを使用します。これは、ある種の内部技術APIのように見えます。 iOSとAndroidの両方の既製のライブラリは100%安定して動作しなかったため、これらすべてを結び付けるのに多くの時間がかかりました。 「ほとんどクラッシュしない」と「時々クラッシュする」の違いは、より技術的なラッパーを作成することを意味する場合があります。
しかし、チケットを購入し続けましょう:

Apple PayとGoogleウォレットは、ゲートウェイの機能のため、このプロジェクトでは困難でした。この話は後で私の同僚によってもっとよく話されるでしょう。最初に、顧客を公式のCPPKアプリケーションに転送する可能性を調査しました。これは、関連する入札を勝ち取ったMovista社によって開発されました。一連の実験の結果、購入時にインターフェースを変更するよりも、多くの統合作業の方が優れていると判断しました。
ステップ2:PD。ここで私たちは信じられないほどの力の次の驚きに向かっています:定期的なチェックアウトでフルネームとパスポート番号を入力する必要がない場合は、オンラインで入力します。はい、電車のチケットでも。基礎は運輸省第322号の命令です。

ここに証拠があります:
:
- ( ) ;
- ;
- ;
- ;
- () ;
- — , , * ( ), , , ;
- .
3.4. :
- ( ) ;
- ;
- ;
- ;
- () ;
- — , , * ( ), , , ;
- .
ご想像のとおり、これはユーザーが怖がる場所であり、私たちは彼らの躊躇を減らすために最善を尽くしました。しかし、ベータテストでは、この注文の実行に多くの不満がありました。
あなたが支払いの後にあなたがあなたの手にチケットを持っていると思うなら、それでもそうではありません。駅のターンスタイルでアクティベーションするとチケットになるドキュメントが手元にあります。
したがって、ステップ3:赤いターンタイルを通過します。これは実際には追加の手順ですが、これはセキュリティ要件です。最初にチケットを購入してから、ターン
タイルを通過する必要があります。赤いターンタイル(通常はCPPKステーションで1つまたは2つ)と緑のバリデーターが適合します。投稿の上部では大きくなっていますが、通常は次のようになります
。
- チケットを購入すると、サーバー上で予約が作成されます。
- チケットの支払いを行うと、支払いが成功したというデータがゲートウェイから受信されます。
- CPPKは、チケットとbase64キーを電話に送信します。これは、このチケットをアクティブ化するためのキーの半分です。
- キーの残りの半分は、ターンタイルまたはバリデーターで取得する必要があります。ターンスタイルに行き、その上のQRコードをスキャンします。
- さらに、キーは2つの半分から組み立てられ、チケットを「開きます」。チケットをターンタイルに置いて通過します。
重要:
- ターンタイルには、QRコードとチケットをチェックするためのロジックがまったくありません。彼は、キーの絶えず変化する部分を、ステーションマークが縫い付けられたQRコードの形式で表示するだけです。
- キーの半分を接続してチケットを取得するのにインターネットは必要ありません。購入直後にすべてが発生し、チケットを受け取りました。その後、アプリケーション内の電話で、アクティブ化と表示の両方ですべてがオフラインで実行されます。
- QR- — . — . .
すべてがうまくいけば、あなたはチケットを受け取ります。すべてがうまくいかなかった場合(ターンタイルの代わりに、別のステーションから慎重に保存された写真をスキャンした場合)、無効なチケットを取得するか(たとえば、昨日のQRコードでアクティブ化した場合)、チケットがアクティブ化されません。ちなみに、無効なチケットを入手する機会があったので、ライブラリコードを逆にするのは簡単だと思いました。最後のタスク
は残っています:コントローラーはどのようにして電子チケットをチェックできますか?結局のところ、それはまったく同じチケットのスクリーンショットと視覚的に違いはありません! CPPKは、独創的な解決策に近い解決策を見つけたことがわかりました。アプリケーションでチケットを開き、それをタップする必要があります。有効化されたチケットが回転を開始します。これにより、人口の大部分がPhotoshopの偽物から確実に保護されると想定されています。
途中で駅で降りた場合に備えて、再アクティベーションを追加しました。
それでは、甘いもの、つまりバグに移りましょう。
赤いターンタイルが開かない場合があります。ただそれを取り、開かないでください。彼のターンスタイルの頭脳の何かが時間内に発火しないからです。たとえば、同じQRコードを2つのターンタイルに同時に通過させないようにする保護。確率は非常に小さいですが、あります。この場合、駅で勤務している疲れた祖父があなたに近づきます。彼はこれを何百回も見て、赤いターンスタイルで躊躇することの意味を知っています。アプリケーションでチケットを確認し(「スピニング?スピニング!」)、落ち着いて通過させます。
プラットフォームの緑色の検証ツールが機能しない可能性があります。これは日本ではなくロシアなので、ここでは年間合計3分以上続く可能性があります。この場合、別の検証者に行く必要があり、彼は別のプラットフォームにいます。確率も非常に低いですが、あります。普通の人がそういう状況に直面することはまずありませんが、私たちは長い間、そして激しくそれをテストしたので、私たちは知っています。
フローを変更するときに赤いターンタイルのQRコードをスキャンした場合(「別の場所に移動し、ここで人々は電車から降ります」と言われた場合)、これを正確に通過する必要があります。そうしないと、同じコードをカットすることになります。 1つのチケットで、一度にすべてのターンタイルを通過することはできませんでした。隣接するものはすぐには同期されません。これは、30分遅れるか、当直の祖父がチケットをチェックすることを意味します。「回転していますか?回転!」
小さなFAQ
-地下鉄から電車の電子チケットを購入できますか?
できる。そのため、エスカレーターで購入させました。
-チケットの有効化後に接続が切断された場合、チケットは残りますか?
はい。そしてそれは回転します。
-ターンスタイルでチケットがアクティブ化されたときにインターネットが必要ですか?
いいえ、すべては電話ソフトウェア内でオフラインで行われます。あなたはすでにチケットを持っています、それは単に解読されます。
-コントローラーを見たら、急いで電子チケットを買うのは遅すぎますよね?
はい、最寄りの駅からのQRコードが手元にない場合は可能です。そして私たちの精神を知っていると、それはそれほど完全に皮肉ではありません。
-はぁ、朝、ターンタイルを通り抜けるときに彼の写真を撮ったらどうなる?
数分以内に定期的に変更されます。
-そして、私がこのコードのパターンを理解した場合はどうなりますか?
コーディングアルゴリズムは深夜に変更され、コードは以前のものと非常に劇的に異なり始めます。
-間違ったQRコードでチケットをアクティブ化した場合、どうなりますか?
その後、無効なチケットがあります。または間違った日付のチケット。
-eチケットの有効期間はどれくらいですか?
アクティベーション後、チケットは翌日の03:00まで有効です。つまり、午前7時にターンスタイルでスキャンし、21時に使用できます。問題ありません。
-00:01に電車に乗るとどうなりますか?
日付の合流点で、ターンタイルが昨日のチケットに応答しない可能性があるときに、チケット検証システムにハイゼンバグがあります(紙のチケットも、つまり、スタックにはありません)。処理は正常です。ターンタイルをオンデューティで呼び出す必要があります。ターンタイルは回転チケットを見て、通過させます。
-2:59にターンタイルを通過した場合はどうなりますか?
チケットの有効化からターンタイルへの通過までの2秒以内に技術的な日が終了した場合は、祖父を通じて問題を解決する必要があります。彼はすべてに耐えます。
その他のチケット
ボックスオフィスと同じ価格でチケットを販売することについて、他のキャリアと交渉しています。多くの方向で、チケットのアクティブ化にそのような問題はありません。たとえば、ほとんどのLeningradskoye列車では、列車内でチケットを購入できます。当然、これは既知の脆弱性を生み出し、すべての人に適した妥協点を見つける必要があります。しかし、私はこれが開発というよりもコミュニティの仕事の分野であると思います。アイデアがあれば、喜んで実装させていただきます。