正確にはバグというよりも、ユースケース考慮漏れと言った方が適切かもしれない。
恐らくは、プログラマ視点では仕様通りの挙動であり、そのような設計にした上流工程に責任があるのではなかろうかとも思える(妄想)。
nanacoモバイルユーザー以外にも解るように整理してみたので、今後の改善に活かされるとかヘンテコなシステムが増えないことを期待して。
nanacoモバイルとは
セブン&アイホールディング傘下のセブン・カードサービスが提供する電子マネーサービス。
プラスチックカードの電子マネー「nanaco」の、おサイフケータイ版が「nanacoモバイル」。
セブンイレブンやヨーカドーなど主にセブン&アイ系各社の支払いに利用でき、これらの店舗でポイントを貯めることを考慮すると他の電子マネーよりお得である。
(他の電子マネー同様に便利である故、私はサービスイン当初から利用している。)
チャージ方法
現金でチャージするには、店頭のレジで店員さんに申し出るか、セブン銀行ATMで操作するか、専用のチャージ端末で操作するといった方法がある。
クレジットカードからチャージするには、オンラインの「nanaco会員メニュー」から事前にクレジットカードを登録した後、スマホアプリの操作でチャージできる。。
なお、「nanaco会員メニュー」に入るためには「nanaco会員メニュー用パスワード」を、クレジットチャージ時には「クレジットチャージパスワード」を都度入力する必要があるのだが、これらは別物である。
クレジットカード更新が出来なくなるまでのフロー
- クレジットチャージを試行し、クレジットチャージパスワードを複数回間違える
- クレジットチャージ機能がロックされ、nanaco会員メニューからクレジットチャージパスワードを変更するよう表示される
- (nanacoモバイルのシステムとは無関係に)登録済クレジットカードの有効期限を迎え、新しい有効期限のクレジットカードが届く
- nanaco会員メニューからクレジットチャージパスワードの変更を試行すると、登録済クレジットカードの以下の情報入力が要求される
- クレジットカード番号
- クレジットカード有効期限
- クレジットカード裏面3桁のセキュリティコード
- 既に有効期限を迎えている登録済クレジットカードの情報を入力すると、以下のエラー
- 有効期限が更新された同一カード番号のクレジットカード情報を入力すると、以下のエラー
詰んだ。クレジットチャージパスワードのリセットも、クレジットカード情報の更新もできない\(^o^)/
主観に基づく考察等
- パスワードリセット画面への遷移時のバリデーションにクレジットカード有効期限と現在日付との比較は含める必要が無いのでは。
- 単に登録済クレジットカード情報との一致判定をすればいいだけで、クレジットカード登録・更新画面のバリデーションを使いまわした?
- と、書いていて気付いたが、nanaco側のサーバーにはクレジットカード番号だけを保持し、カード番号・有効期限・セキュリティコードの3点セットの有効性をクレジットカード会社側に照会をかける作りだからこうなってしまうのか?
- テストシナリオとして「クレジットチャージパスワード」ロック状態でクレジットカード有効期限が切れた場合の検証してない?
- 検証してればこの挙動に気付くわけで、気付いたうえでこの挙動なら仕様がおかしいって誰も思わないのだろうか。
- この場合、どんなオペレーション想定になってるのだろうか。困り果てたユーザがコールセンター的なところに連絡してくる想定なのだろうか。そうならそうと、エラーメッセージに連絡先含め案内追加してほしい。
- そもそもパスワードリセット画面への遷移時にクレジットカード情報を入力させる必要があるのか。
- そもそもそもそも「nanaco会員メニュー用パスワード」と「クレジットチャージパスワード」の2種類を併用させる必要があるのか。
- Suica/Edy/Waonならオートチャージできるのだが、nanacoにはオートチャージ機能が無い。
そんなわけで、私のnanacoモバイルは数か月前からひっそりと現金チャージで生きながらえておりました。
が、この度おサイフケータイ端末を変えることになったので、詰んだ状態のnanacoモバイルだけは機種変更手続きせず、チャージを使い切って新規登録しなおそうと思います。
何だかんだ言っても、便利なものは使うのです(だからこそ、改善してほしい*1 )。