WooCommerce Square決済で「3D Secure Verification Token is missing」エラーが発生する場合の解決方法

問題の概要

WooCommerce SquareプラグインでSquare決済を導入した際、決済処理で「3D Secure Verification Token is missing」というエラーが発生し、「エラーが発生しました。もう一度お試しいただくか、別のお支払い方法をお試しください」と表示される問題に遭遇しました。

興味深いことに、同じSquareアカウントでSquare Payment Links(支払いリンク)を使用した場合は、同じクレジットカードで正常に決済が完了します。この違いがトラブルシューティングの重要な手がかりとなりました。

検証した環境と設定

検証環境は以下の通りです。

  • WordPress 6.8.1
  • WooCommerce 9.8.5
  • WooCommerce Square 4.9.2(最新版)
  • Squareアカウント:日本、本人確認・銀行口座登録済み

プラグインの競合を排除するため、WooCommerceとWooCommerce Squareのみを有効化したテスト環境でも同様のエラーが発生することを確認しました。また、Squareのサンドボックス環境でテスト用カードを使用した場合でも同じエラーが再現されました。

エラーログの詳細

WooCommerceのログを確認すると、以下のようなエラーが記録されていました。

2025-05-31T11:50:28+00:00 NOTICE Square.js Response:
Array
(
    [brand] => VISA
    [expMonth] => XX
    [expYear] => 20XX
    [last4] => XXXX
)

2025-05-31T11:50:28+00:00 NOTICE Square.js Response:
Array
(
    [0] => UnexpectedError: An unexpected error occurred while verifying buyer.
)

2025-05-31T11:50:28+00:00 NOTICE 3D Secure Verification Token is missing
Code language: PHP (php)

ログを分析すると、カード情報の取得は正常に完了しているものの、3D Secure(本人認証)の段階で失敗していることが分かりました。

3D Secureとは

3D Secureは、オンラインでのクレジットカード決済時に行われる本人認証システムです。カード情報に加えて、本人にしか分からない情報(ワンタイムパスワードや生体認証など)を使って本人確認を行います。

日本では2025年3月末までに、すべてのEC加盟店に対して3D Secure 2.0の導入が義務化されています1。これにより、オンライン決済のセキュリティが強化される一方で、システム間の連携に新たな課題が生まれています。

同様の問題を抱えるユーザーの状況

この問題は世界中で報告されており、WordPress.orgのサポートフォーラムには類似のエラー報告が多数投稿されています2。興味深いことに、多くのケースで根本的な解決策が提示されておらず、最終的にWooCommerceの公式サポートへの問い合わせが推奨されています。

ユーザーレビューを確認すると、WooCommerce Squareプラグインの評価は5つ星中2.1つ星と低く、81件の1つ星レビューが投稿されています3。一方で、決済機能のみを使用し、同期機能を使わないユーザーからは「50万ドル以上の取引で問題なし」という報告もあります4

試行した解決策

プラグインの設定変更

まず、Square設定でデバッグモードをオフにしました。デバッグモードが有効になっていると、3D Secure認証で問題が発生する場合があるためです。しかし、この変更では問題は解決されませんでした。

プラグインの再インストール

次に、プラグインのインストール方法の違いが影響している可能性を考慮しました。WordPressの管理画面から直接プラグインをインストールした場合と、WooCommerceの拡張機能からインストールした場合では、言語設定や地域設定が異なる可能性があります。

WordPress管理画面の「プラグイン」→「新規追加」から再インストールを試みましたが、エラーは解消されませんでした。

根本的な原因の発見

様々な検証を行った結果、問題の根本原因はチェックアウトページの実装方式にあることが判明しました。

WooCommerceには、チェックアウトページを実装する方法が2つあります。

Classic Checkout(従来の方式)

ショートコード [woocommerce_checkout] を使用する従来の方式です。この方式は古いJavaScript実装を使用しており、3D Secure 2.0への対応が不完全である可能性があります。

Block Checkout(ブロック方式)

WooCommerce Block Editorを使用した新しい方式です。最新のSquare Web Payments SDKに対応しており、3D Secure 2.0の実装が最適化されています。

解決方法

チェックアウトページをClassic CheckoutからBlock Checkoutに変更することで、エラーが解消されました。

具体的な手順

  1. WordPressの管理画面で「固定ページ」→「固定ページ一覧」を開く
  2. チェックアウトページを編集する
  3. ページエディターでショートコード [woocommerce_checkout] を削除する
  4. ブロックエディターで「すべてのブロックを表示」から「WooCommerce」カテゴリを選択する
  5. 「購入手続き」ブロックを追加する
  6. ページを更新する

この変更後、同じクレジットカードで決済処理を実行したところ、3D Secure認証が正常に動作し、決済が完了しました。

なぜBlock Checkoutで解決するのか

WooCommerce Squareプラグインの変更履歴を確認すると、2022年5月のバージョン3.0.0で「Square Web Payments SDKへの大幅アップグレード」が実施されています5。また、2021年5月のバージョン2.5.0では「WooCommerce Checkout blocksのサポート追加」が行われています。

これらの更新により、Block Checkoutでは最新の3D Secure実装が使用される一方で、Classic Checkoutでは古い実装が残されている可能性があります。まるで新しい道路と古い道路が並行して存在しているような状況です。新しい道路(Block Checkout)では最新の信号システム(3D Secure 2.0)が正常に動作しますが、古い道路(Classic Checkout)では信号の連携に問題が生じているのです。

まとめ

WooCommerce SquareプラグインでSquare決済を使用する際は、Classic CheckoutではなくBlock Checkoutを使用することが重要です。Classic Checkoutでは3D Secure 2.0の実装に問題があり、「3D Secure Verification Token is missing」エラーが発生する可能性があります。

この問題は、プラグインの設定やサーバー環境の問題ではなく、チェックアウトページの実装方式の違いに起因します。Block Checkoutに変更することで、最新のSquare Web Payments SDKが使用され、3D Secure認証が正常に動作します。

  1. 経済産業省による「クレジットカード・セキュリティガイドライン5.0版」に基づく義務化 – 日本の EC サイトで 3D セキュア 2.0 の導入が義務化 | Stripe
  2. 同様のエラー報告事例として、日本のユーザーからも複数の報告があります – Card payment fails (3D Secure related?) | WordPress.org
  3. 2025年5月時点でのプラグイン評価データ – WooCommerce Square – WordPress プラグイン | WordPress.org 日本語
  4. 決済専用での成功事例レビュー – WooCommerce Square – WordPress プラグイン | WordPress.org 日本語
  5. プラグインの公式変更履歴に記載されている情報 – WooCommerce Square – WordPress プラグイン | WordPress.org 日本語