3.2.2 ― マイナーバージョンアップ

目次

更新情報

今回のバージョンアップには、新しい機能は追加されておりませんが、重要なアップデートが含まれているため特別に更新情報を掲載しております。

項目名
リリース日2026/1/23
対応PHPバージョン8.2(変更なし)
対応WordPressバージョン6.7.x 〜 6.8.x(変更なし)
対応Stripeのバージョン2025-02-24.acacia(変更なし)
対応SWELLバージョン2.15.0(変更なし)
対応Genesis Frameworkバージョン3.6.1(変更なし)

PHPのバージョンやWordPressのバージョンは上記を遵守してください。WordPressの更新設定を変更してしまうとWordPress本体が自動的に最新版にアップデートされてしまい、Luxlinerの動作に不具合が発生することがあります。
また、SWELLやGenesis Frameworkなどのテーマのバージョンアップは、デザインが崩れる原因となる場合があります。

Chromeでの申込みエラーの解消

概要

2026年1月に入ってから、Chromeブラウザでの申し込み時にエラーが発生する事象を確認いたしました。絶対にエラーが発生するとは限らず、発生しないこともあります。

具体的には、申し込みボタンを押した直後に、エラーが表示されたり、エラーは表示されなくとも動作が停止してそれ以降の処理が実行されない事象が発生することがありました。

原因

本件について調査をした結果、以下のことが判明いたしました。

  • 申し込みボタンを押した直後に会員サイトのサーバーに対して通信が発生しますが、それと同時に想定外の通信が発生していました。
  • この想定外の通信はChromeによって自動的に発生したもので、技術的にはプリフェッチと呼ばれる通信でした。
  • これにより実質的にページがリロードされたような状態となり、セキュリティ上必要なトークンが再発行されてしまった結果、正規の通信のセキュリティチェックに失敗して処理がエラーになるという事象が発生していました。
  • ただし、このプリフェッチ通信が処理されるタイミングによってはエラーにならないこともあるため、エラーになったりエラーにならなかったりということが発生していました。
  • Chrome以外のブラウザ(例えばSafariブラウザ)では、このような想定外の通信は発生しないため、エラーは発生しません。

対応方法

今回のアップデートで、申し込みページでのプリフェッチ通信を無視するように実装することでエラーが発生しないように対応いたしました。

Stripe決済と契約の不整合への対応

概要

ごく稀に、Stripe上で決済は成功しているのに、Luxlinerを使った会員サイト上で契約が作成されないという事象が確認されておりました。

原因

例1:ログインセッションが切れる

以下のような操作をすることで、この事象を意図的に発生させることが可能です。

  1. 会員サイトにログインした状態で申し込みページを表示する。(申し込みページでログインしても同様)
  2. 申し込みボタンを押して、3DS認証ダイアログが表示されることを確認。
  3. ブラウザの別のタブで会員サイトを開き、会員サイトからログアウトする。
  4. 申し込みページを表示している画面のタブに戻り、3DS認証を成功させる。
  5. ブラウザでエラーが表示される。

上記の手順を踏むと、Stripe上で決済は成功しますが、会員サイトに処理が戻ってきたときにはすでにログアウトされているためセッションが切れており、処理が続行できずにエラーとなり、契約が作成されないという事象が発生します。

よほどのことがない限り意図的にログアウトをするということはないと思いますが、3DS認証が表示された後にあまりにも長い時間放置した後に3DS認証の処理を続行して成功した場合は、すでに自動的なログアウトが実施されていた場合に同様の事象が発生する可能性があります。

例2:不安定な通信状態

ログイン状態に関係なく通信状態が不安定な場合に同様の事象が発生する可能性があります。

  1. 申し込みページを表示する。(= 会員サイトのサーバーとこの時点では通信可能だった)
  2. 3DS認証ダイアログが表示され、3DS認証が成功する。(= Stripeサーバーとも通信できた)
  3. 上記2つの通信が成功したにもかかわらず、3DS認証が成功した後に、会員サイトのサーバーとの通信に失敗し、契約が作成されない可能性がある。

3DS認証が必須となったことで、申し込みボタンを押してから実際に決済して契約が作成されるまでに最低でも数分間のタイムラグが発生するようになりました。3DS認証では、一般的に個人のメールアドレスに対してワンタイムパスワードが送られてくるため、メールを確認する必要があるためです。

このため、通信状態が不安定な場所で申し込み等をした場合(例えば電車の中など)、決済だけされて契約が作成されないリスクが増えました。

対応方法

Luxlinerは特殊な申し込みページの機能(オプション契約やワンタイムオファーなど)を実現するため、かなり複雑な申し込み処理を実装しています。

このため、上記の問題に完全に対応しようとすると、申し込み処理を最初から作り直すくらいの大幅な変更が必要でした。また、実装方法を変えて最初から作り直した場合、これまで利用できていたワンタイムオファーなどの機能を削除せざるを得ない可能性もありました。

このため、この事象自体がごくまれにしか発生しないこともあり、以下のような対応策を採用致しました。(技術的な説明となりますがご了承下さい)

具体的な対応策

  • Stripeでの決済の成功イベントをすべて補足し、会員サイトのイベントデータベースに保存。(リッスン対象とするwebhookの追加
  • 一定時間ごとに、これらの決済成功イベントに対する契約もしくは購入履歴が作成されているかどうかをチェック。
  • 契約もしくは購入履歴が作成されていない場合、Stripe上の決済を返金し、サブスクリプションを即時停止。また、決済と契約の不整合が発生したことを管理者にメールで通知
  • これらの処理により、Stripe上の決済と会員サイト上の契約に不整合が発生しないようにしました。

決済と契約の不整合が発生してから、10分後から最大で20分後に返金・サブスクリプションの停止、管理者への通知が実施されます。

これらが正しく処理されるためには、cronが正しく設定されていることが必要です。(cronの追加エントリは必要なく、これまで正常にcronが動作しているサーバーであれば問題はありません)

その他の細かい変更内容

  • Luxlinerの設定画面での警告表示を抑制。(デバッグモード時のみ)
  • その他細かい文言修正。

この記事を書いた人

目次