私はモバイルチケット販売アプリに取り組んでいます。このシステムにより、ユーザーはサードパーティの API (CardIO) を使用してアイテムの支払いを行うことができ、すべての情報がクラウドにあるサーバーに保存されます。
問題は次のとおりです。 (1) 支払いプロセスはすべて電話で行われ、(2) 支払いが実際に行われたことをサーバーが支払い処理業者に確認できるようにする API がないため、どのようにすれば最善なのか疑問に思います。サーバーのデータベースで支払い済みとしてマークする前に、ユーザーが実際にアイテムの支払いを行ったことを確認します。
お分かりのように、ユーザーは私の API 呼び出しを手動で追跡し、自分のアカウントにログインしてから、私のサーバーにコマンドを送信して、アイテムの支払いをせずに購入を支払い済みとしてマークすることができます。
問題は 、支払いがサーバー上で行われたか、モバイルアプリで何らかのハンドシェイクまたは暗号化を介して行われたかを確認するにはどうすればよいかということです。
私の現在のアプローチ: SSL (HTTPS) 呼び出しを介して必要なプレーンテキスト情報をサーバーに送信しています。これに加えて、その文字列のハッシュを送信し、サーバーで同じアルゴリズムを使用して、送信された文字列が送信されたハッシュと一致することを確認します。なんらかの秘密鍵を使用してこのハッシュを生成し、プレーンテキストがサーバー側のハッシュと一致することを確認して、何も変更されていないことを確認できると考えています。このソリューションに関する私の問題は、それが本当に安全だとは思わないことです...暗号化とプレーンテキストが与えられているため、誰かがアルゴリズムを簡単にクラックできます。
ご覧いただきありがとうございます。
スティーブン