クロネコWebコレクト利用時に「お支払い手続きエラー」になる原因とその対策がわかった。
ども、どもども。
弊社ではSKELETON CARTという自社開発のショッピングカートシステムを販売しています。
もちろん販売しているだけじゃなくって、複数の自社クライアントのECサイトにも導入しているのですが、たまにそのクライアントから「お客さん(購入者)がクレジットカード決済できなかったらしい」と連絡を受けることがありました。
ところが、何度確認しても特に問題が見つけられず、これまで原因特定には至っていませんでした。
本当であればそのお客さんに、エラーになってしまったその状況をもっと色々聞ければいいのですがそうも行かず...。
悶々としていたところ、あるクライアントから有力情報(スクリーンショット)が届きました。
それがこちら。
調べてみるとFAQにも同じ内容が掲載されていました。
スマートフォンからクロネコwebコレクトで決済をしたところ、「お支払い手続きエラー」と表示されました。どうしたらいいでしょうか?
ヤマトフィナンシャル株式会社 よくあるご質問 > 購入者様 > 受取前の支払 > クレジットカードでの支払い
アプリ経由だと「お支払い手続きエラー」になる?
注目すべきは「Facebook等のSNSアプリをご利用の場合、ご利用端末搭載の標準ブラウザ(Safari等)を立ち上げ、販売店様のショッピングサイトへアクセスし、再度購入手続きをお試しください」の部分。
確かに、このスクリーンショットはおそらくFacebookアプリを利用しているものと思われますが、なぜそんなことをしなくちゃダメなんだろう...と、クロネコWebコレクトのサポートへ問い合わせを送ってみました。
その回答がこちら。
ご購入者様がクロネコwebコレクトのお支払い画面に遷移する際に、【お支払い手続きエラー】がおきてしまうのは、購入者様ご利用のブラウザ起因、もしくは接続パラメータに誤りがあることが原因となります。
購入者様ご利用のブラウザ起因の場合、 一部スマートフォンの仕様により「Googleアプリ」「Yahoo!アプリ」にて新規ウィンドウを開く構築にしておりますと必要情報(パラメータ)が抜け落ちてしまう事象が確認されております。
解決策と致しましては、新規ウィンドウを立ち上げないような構築に変更いただきますと、上記事象は発生しなくなるもとの思われます。
確かに、クロネコWebコレクトへ接続する際に新規ウィンドウが開くように設定( target="_blank" )しています。
それにしてもなぜ...普通のブラウザでは問題ないのに。
ここでハッと気が付きました。
私はこれに気がつくのにちょっと時間がかかってしまいましたが、気がつくと単純というかなるほどな内容。
一般的にアプリ内ブラウザでは新規ウィンドウと言うものがありません。
新規ウィンドウで開こうとしても、同じアプリ内ブラウザで開いてしまうので、おそらくこの時点でなにかしらの必要情報(パラメータ)が抜け落ちてしまっているようです。
ちょっと定かではないのですが、おそらくこんな感じの問題では無いかと思われます。
プログラマさん、特にアプリ系開発技術者の方々にとっては当たり前なのかもしれませんね(汗)
考えられる対応策
現時点、私が考えられる/対応できる解決策としては、以下を設定するしかなさそうでした。
- target="_blank"をやめる
- 決済手続き完了後に購入元ウェブサイトへ戻れるよう「戻り先URL」を一緒にPOSTする
アプリ内ブラウザがWebViewを使用しているのとおそらく同じ理由で新規ウィンドウでクロネコWebコレクトの画面を開くようにしていたのですが、これはなんともしがたい問題。
先のクライアントに連絡してきた購入者さんは、たまたまクライアントのお知り合いだったらしく詳しく聞いてもらうと...「いやだって、スマートフォン買ったときからYahoo!アプリがあるんだもん、普通はそれ使うでしょ」と...いやごもっとも。
今や、FacebookやTwitter、LINEでシェアされたURLをクリックしてウェブサイトに訪れる方も多いでしょうし、これは単純なことだけれど気が付きにくい問題だと思います。
今回の解決策をとることでPCブラウザでの閲覧時にも同じ遷移になるわけですが、今の時代背景を考えるとトレードオフと考えるほかないかなーと。
アプリ内ブラウザ/WebViewをユーザーエージェント判定したり、そもそもスマートフォンとPCを分けるということも可能(やるならこちらかな?)だとは思いますが。
クロネコWebコレクトを利用しているECサイト等で「お支払い手続きエラー」が発生した場合はおそらくこれ(新規ウィンドウ)が原因ではないかなと思います。
ウェブ上で検索してみても特に情報が見つけられなかったので今回の記事を書きましたが、この記事をお読みいただいた方で、なにか解決・対応策のヒントなどお持ちであればぜひ教えてください!
ってか、問い合わせて得られた回答、これを最初からFAQに載せておいて欲しかったです(笑)