オンセッションとオフセッションの違いと、それがなぜ重要なのかを教えてください。

「オンセッション」とは購入者がお客様の Web サイトやアプリを使用しているときに行われる支払いで、「オフセッション」とは自動的または加盟店によって開始される支払いです。この用語は、支払いの試行がどう作成されたかを示し、支払い処理中に発生可能または発生不可能なアクションをより良く理解するために Stripe が独自に使用するものです。

支払いが「オンセッション」で実行される場合、購入者はお客様のウェブサイトまたはモバイルアプリ上でお客様に対して支払いを行おうとしています。その支払いが失敗すると、購入者は別の方法で支払いをもう一度試すことができます。支払いに追加アクション (Klarna などのパートナーにリダイレクトされる 3D セキュアの利用) が必要な場合、購入者は追加アクションの手順を実行して、その場で支払いを完了させることができます。

デフォルトにより、Stripe の API は「オンセッション」です。このことを示すために具体的なパラメーターを渡す必要はありませんが、明示したい場合は PaymentIntent を確定する際に false (デフォルト) に設定された off_session パラメーターを渡すことができます。

支払いが「オフセッション」で実行される場合、購入者は支払いの確定時にお客様のウェブサイトまたはモバイルアプリを利用していません。「オフセッション」の支払いには次のようなものがあります。

「オフセッション」の支払いの確定後に何らかなアクションが必要な場合、そのアクションを実行するには購入者を「オンセッション」に戻す必要があります。

「オフセッション」の支払いでは、true に設定された off_session パラメーターを PaymentIntent の確定時に渡す必要があります。これは、Billing に関連する更新分の支払いの場合には自動的に設定されます。

支払いがオフセッションであることを示すことはなぜ重要なのですか?

「オフセッション」の支払いの場合、その支払いを確定するために購入者がその場に居合わせないことになります。たとえば、カード支払いの場合、購入者が 3D セキュアを利用できないことを意味します。同様に、購入者が CAPTCHA を利用したり、Stripe が購入者のために必要とする追加検証や手動アクションを実行したりすることもできません。

お客様が開始しようとしている決済が「オフセッション」であることを示すことで、こうした処理の一部を省略するか、パートナー (カードネットワーク、BNPL など) に対して免除を要求することを Stripe に許可します。たとえば、Stripe はカード取引を以下のようにフラグすることで、その免除を要求できます。

off_session: true を設定すると、Stripe がその取引をカードネットワークとの継続支払いとしてマーキングする原因となる場合があります。