Welcartを用いたECサイトのクレジットカードの決済テストを行った際に “トークンなし” というステータスの決済エラーとクレジットカード情報の入力フォームが表示されない現象に遭遇してしまいました。(※利用している決済モジュールは、クロネコWebコレクト)
決済エラー確認
まず管理画面上に表示されている決済エラー(トークンなし)の内容確認から着手。
決済エラーログ一覧
決済エラーログ詳細
決済エラーログ詳細 (テキスト)
登録日 = 2019-12-24 01:17:24 リンクキー = 1237050650 処理結果 = トークンなし param_list = Array send_url = https://ptwebcollect.jp/test_gateway/creditToken.api result = 0 errorCode = A081011201 returnCode = 1 returnDate = 20191224011724 errorLabel = トークンなし
私自身、決済エラーの報告を受けるまで実際にクレジットカード決済のテストを行っていなかったのですが、実際にクレジット決済のテストを行ってみたところクレジットカード情報を入力するためのフォームが表示されていない状況でした。
クレジットカード情報入力フォーム
本来は支払い方法にクレジットを選択して購入手続きを進めると以下のようなクレジットカード情報の入力フォームが表示されるはずですが、表示されていませんでした。
検証
検証1 テーマ変更
独自テーマを利用していたので Welcart Default Theme に一旦切り替えて同様の決済テストを行ってみたところ問題なくクレジットカード情報の入力フォームが表示されましたので、独自テーマに何かしらの問題があるようでした。
検証2 カート関連テンプレートのみ差し替え
続いて独自テーマに戻し wc_templates/cart/* 内のカート関連のテンプレートを全てデフォルトのものと差し替えてみましたが、結果は入力フォームが表示されないまま確認ページへ遷移してしまいました。
検証3functions.php を差し替え
Welcart関係なくテーマに何か不具合が出る場合 functions.php 内に問題がある可能性がありますので、デフォルトのものに差し替えてみたところ独自テーマのデザイン上でもクレジットカード情報の入力フォームが表示されることが確認出来ました。
検証4 デフォルト functions.php とマージ&独自コード確認
利用しない関数なども多くありますが、Welcartのデフォルトの functinos.php と独自に追加したものをマージして独自に追加したコード部分を順番にコメントアウトしながら確認したところWordPressデフォルトの jQuery の読み込みを停止しているところが原因のようでした。
原因
下記コードをコメントアウトすることで期待していたクレジットカード情報の入力フォームが表示されるようになりました。
エラー対象コード
/**
* 標準のjQueryを読み込まないようにする
*/
function sw_delete_local_jquery() {
wp_deregister_script('jquery');
}
add_action( 'wp_enqueue_scripts', 'sw_delete_local_jquery' );
環境情報
WordPress 5.3.2 Welcart e-Commerce 1.9.25 WCEX Yamato Credit 1.0.4 エックスサーバー(x10)
まとめ
決済エラーもクレジットカード情報の入力フォームが表示されない現象も原因は全て独自テーマにありましたので、デフォルトの機能を停止したり変更する場合は影響範囲を十分に検証してから進めるべきですね。
コメント