こんにちは、ritouです。
Y!Jが今後出そうとしてるFastPayってやつの開発環境が提供されてるみたいです。
決済をシンプルにしたいという思いは重要だと思います。しかし、クレジットカード情報を決済サービス - マーチャント間でやりとりするしくみについて、いくつか懸念があります。
懸念1 : マーチャントからのカード情報流出など
(ここでは一旦、「クレカ情報入力するのは便利は便利だよね」という前提で進めます。)
現在、クレジットカード情報の大規模流出事故が報じられています。ここから得られる教訓としては"信頼できるところ以外にカード情報を保持させてはならない"という感じでしょう。
マーチャントにカード情報を直接取り扱わせるしくみでは、どうしてもリスクが発生します。
もちろん、監査などさまざまな仕組みでそのリスクを減らすこともできるでしょうが、意図せぬ実装不備もどうしてもあるでしょう。また、利便性のために一度預かったカード情報を保存しておいて次回以降使う仕組みなんてのも実装しちゃう可能性があります。
なるべく、マーチャントにカード情報そのものを触らせないしくみを提供することが大事だと思います。
提案 : 競合であるWebPayが提供しているCheckoutHelper機能みたいなやつ
FastPayの競合サービスであるWebPayでは、マーチャントがクレジットカード情報を直接扱わずにすむしくみが提供されています。
カード情報の入力フォームの処理と クライアントサイドでのカード情報のトークン化 を行える、WebPay.js向けのヘルパーを提供しています。
CheckoutHelperを使うと、数行のHTMLを記述するだけで、 カードに関する入力情報のチェックと、カード情報を直接取り扱わないセキュアな形で決済に利用出来るトークンを取得し、サーバサイドに送信することができます。
https://webpay.jp/docs/checkout
実際に挙動を細かく確認したわけではありませんが、一度WebPay側にカード情報がわたりトークンに変換されるような感じでしょう。上記のリスクを理解してカード情報を扱いたくないというマーチャントに向けて、バックエンドのやりとりを安全にできるしくみを提供している点は良いと思います。
懸念2 : カード情報を入力するUXが普及することによるフィッシングリスクの増加
これはもう説明不要かと思いますが、「クレジットカード情報をさくっと入力して決済」が当たり前になるとちょっと怖いなーと思います。マーチャント上のダイアログだけで、カード情報が本当にY!Jに流れるのかをユーザーはどうやって確認できるのでしょうか。
Y!Jのブランド力がフィッシング被害の後押しをしてしまうかもしれません。
提案 : OAuth + 決済APIをシンプルにするためにjs提供とかの方が良いのでは
やはり、PayPalや"Login and Pay with Amazon"みたいな"アカウント持っているだけで決済までさくっといける"しくみをもっと便利にする方向を考えるべきだと思います。
まとめ
2つの懸念があることを説明したつもりです。
- 意図せぬ流出や保存、悪用の可能性を考えたら、カード情報をマーチャントに扱わせるのは良くないと思う
- フィッシングのリスクなど、そもそもカード情報を入力させるUXも良くないと思う
不正利用などの場合、カード会社が補償してくれるところもありますが、リスクがあるしくみが普及して被害が増大してしまうと、今後は補償対象外となるケースも出てきちゃうのではないかというのもちょっと気になります。
中の人はよく考えるべきだと思います。