web-dev-qa-db-ja.com

Stripeでカスタムの「Remember Me」を実装する

StripeでCheckout(PhoneGapではサポートされていません)を使用してremember meを実装すると、パスを使用して問題ないようです:

初回:

  1. カード情報を使用してクライアント側でトークンを要求します。
  2. トークンを使用してサーバー側に顧客を作成します。
  3. 確認したら、お客様に請求します。

2回目:

  1. サーバーに情報を要求して、現在のユーザーがStripeの顧客かどうかを確認します。
  2. Stripeのお客様の場合は、通常のCCフォームの代わりに「ファイルにクレジットカードを使用する」と表示します。
  3. 確認したら、お客様に請求します。

ただし、重要な便利なアイテムが1つ不足しています。カード番号の下4桁です。ほとんどのサイトは、支払いを行う前に、使用しているカードを通知します。カードを切り替える必要がある場合に備えて、非常に重要です。

私はあなたができることを見ました 料金を取得する これは私が最後の4桁を取得することを可能にするでしょう。それを引っ張って表示するのは悪い習慣ですか?

誰かが考えている代替ソリューションはありますか?

6
Matt

私はあなたが説明するものと非常によく似たものを実装しました。ユーザーが自分のアカウントに資金を投入したいときはいつでも、クレジットカード番号を提供するか、該当する場合は最後のクレジットカードを再利用するかのいずれかを選択できました。

この実装では、「デフォルト」カードの最後の4桁をStripeのローカルの自分のデータベーステーブルに保存しました。クレジットカードエントリフォームを作成するときに、サーバーはこの保存された値を探し、存在する場合、サーバーはブラウザーにチェックボックスを表示し、「クレジットカードを使用XXXX XXXX XXXX 1234」のようなラベルが付けられました。ユーザーがボックスをチェックした場合、私のコードはデフォルトのカードを使用する必要があることを示すトランザクションをStripeに送信します。

このデザインに導いたのは3つの要因です。

1)ユーザーの資金取引(成功したものと失敗したものの両方)を一覧表示できるようにしたいと考えました。これらのリストは、クレジットカード番号の最後の4桁を表示して、各資金調達の試行に関する必要なコンテキスト情報をユーザーに提供する必要がありました。おそらく、ユーザー向けにこのリストを作成するときに、トランザクションごとにStripeトランザクションをクエリできたかもしれませんが、それは何度も行ったり来たりしているようです。したがって、とにかく「最後の4桁」の情報を保存したかったのです。

2)クレジットカードの最後の4桁を保存することは、大きなセキュリティリスクとは思われませんでした。安全性の低い状況では、下4桁を表示するのが慣例です。そのため、データベースに完全なクレジットカード番号を保存したくありませんでしたが、特定のカードの最後の4桁を保存することは許容できると考えました。

3)簡単でした。ユーザーごとにカード番号のリストを管理する必要はありませんでしたが、そのようなもののユースケースの大部分は(私の見積もりでは)とにかく対処されました。

おそらく、誰かが私たちのデータベースから最後の4桁を取得し、それから私たちのサイトからStripeトラフィックを傍受した場合、彼らはmightがこのトラフィックを復号化することに何らかの頭からのスタートを切るでしょう。しかし、これは実際のクレジットカードを保管するよりもはるかに小さなリスクです。

3
user1172763