アフィリエイト広告を利用しています

2020年11月23日

GMOペイメントカード決済IすでにオーダーIDが存在しています。

エラーコード E01040010 の説明文は以下。


 すでにオーダーIDが存在しています。設定を確認してください。


この文章をすでに決済が完了しているという意味に捉えていたが、違っていた。

誤った理解


決済完了後にブラウザの戻るボタンで前画面に戻って、

再度、[決済]ボタンを押した場合にこのエラーが発生すると思い、

エラーメッセージの文章を以下のように変更していた。


 決済はすでに完了しています。


正しい仕様


実際は、決済は完了していようがいまいが関係ない。

同じオーダーIDを二度送信することがエラー原因だった。


カード番号を間違えて入力した人が、決済エラーの画面を見て

ブラウザの戻るボタンを押して、

カード番号の入力画面に戻ってしまった。

そして、カード番号を再入力して[決済]ボタンを押すと、このエラーが発生。


カード番号を間違えたので入れ直したら、「決済はすでに終了しています。」と

表示され、びっくりされたはず。

しかしながら、ブラウザの戻るボタンを押すのは禁じ手で、こちらも困ってしまう。

何とかならないものか。

対案1


カード番号の入力画面が表示される都度、オーダーIDを発行すれば、

二重送信は発生しなくなる。しかし、そうすると決済完了後に

ブラウザの戻るボタンでカード番号の入力画面に戻って、

再度の決済が可能になってしまう。

これはまずい。

対案2


エラー画面からカード番号の入力画面に戻らせないようにするしかない。

カード番号入力画面の一つ前の画面に戻るためのボタンをエラー画面に追加する。

そして、「ブラウザの戻るボタンは押さないでください。」と注意書きをする。

これでブラウザの戻るボタンを押す確率は低くなる。

最後に


ブラウザの戻るボタンをすべてのブラウザで殺せれば良いのだが、

それができない。

不完全なことは承知の上で対案2を採用する。









posted by db-engineer at 00:00 | Comment(0) | PHP

この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

検索
最新記事
カテゴリーアーカイブ
プロフィール
db-engineerさんの画像
db-engineer
プロフィール
タグクラウド