今回は、WPXスピードサーバー上で構築した
Welcart(ウェルカート)+ ZEUS(ゼウス)決済のECサイトにおいて、
クレジットカード決済ができなくなる不具合
が発生した件について、原因と復旧方法をまとめます。
同様の症状でお困りの方の参考になれば幸いです。
■ 発生した症状
ある日、テスト決済を行ったところ、
- 決済ボタンを押しても画面が進まない
- 「更新ロックがかかりました。ショップの管理者にお問い合わせください。」と表示
- ブラウザコンソールに下記エラー
POST /wp-admin/admin-ajax.php?uscesid=xxxx 500 (Internal Server Error)
つまり、
Welcartの決済処理が admin-ajax で 500エラーを返している状態
でした。
■ サイト環境
- WordPress 6.9.1
- Welcart 2.11系
- ZEUSクレジット決済
- WPXスピードサーバー
- PHP 8.3 → 8.1へ変更
- MariaDB 5.5
■ 最初に疑ったもの
まず疑ったのは以下です。
・WAF(WPX)
→ 全てOFFに変更
・All-In-One WP Security
→ 無効化
・reCAPTCHA
→ 無効化
・PHPバージョン
→ 8.3から8.1へ変更
・キャッシュ
→ サーバーキャッシュOFF
→ ブラウザキャッシュOFF
しかし、症状は改善せず。
■ 「更新ロック」とは何か?
Welcartには、決済時の二重送信防止機能があります。
決済中にエラーが起きると、
ロック状態が解除されず、
以降の決済がすべてブロックされることがあります。
ただし今回は、
- usces_lock テーブルなし
- usces_cart フォルダなし
ロック残留ではありませんでした。
■ 本当の原因
最終的に原因は、
セッションおよびトークン不整合による admin-ajax 内部例外
でした。
具体的には:
- SSL切り替え設定の未統一
- パーマリンクが「Plain」設定
- セッションCookieの整合性問題
- キャッシュ混在による古いトークン保持
これらが重なり、
Welcart内部でトークン検証が失敗
→ 例外
→ admin-ajax 500
→ 更新ロック表示
という流れでした。
■ 復旧手順
以下を順番に実施しました。
① パーマリンクを「投稿名」に変更
WordPress
設定 → パーマリンク → 投稿名
② WelcartのSSL切り替えを有効化
Welcart → システム設定
「SSLの切り替えを行う」をON
③ WPXキャッシュ完全OFF
- サーバーキャッシュ OFF
- ブラウザキャッシュ OFF
ECではキャッシュは基本的に慎重に扱うべきです。
④ セッション初期化
- ブラウザ完全終了
- シークレットモードで再テスト
これで決済が正常に通るようになりました。
■ 今回の教訓
Welcart × ZEUS × WPX の組み合わせで
- admin-ajax 500
- 更新ロック表示
- 決済が進まない
場合、単純な「PHPエラー」ではない可能性が高いです。
特に、
✔ SSL設定
✔ パーマリンク
✔ セッション
✔ キャッシュ
この4点を必ず確認すべきです。
■ 同じ症状の方へ
もし
- 「WPX Welcart ZEUS 決済できない」
- 「Welcart 更新ロック 500」
- 「admin-ajax 500 ZEUS」
で検索してこのページに辿り着いた方は、
まず上記4点を確認してみてください。
■ まとめ
ECサイトは、
通常のWordPressサイトとは違い、
- セッション管理
- トランザクション
- トークン検証
が絡むため、
キャッシュやSSLの影響を強く受けます。
サーバー移行後や設定変更後に決済テストを行うことは、必須です。
ワイスリー企画では、
- Welcart構築
- ZEUS決済設定
- サーバー移行
- WPX最適化
まで一貫対応しております。
同様のトラブルでお困りの方は、お気軽にご相談ください。
