3.1.7. セッション・バウンド・ペイメント#
注文の支払いが済んでいるかどうかをチェックするだけでは十分でないこともある。例えば、オンラインメディアへのアクセスを販売する場合、出版社は各顧客から全く同じ製品に対して支払いを受けたい場合があります。Talerは、メチャントが「支払い領収書」がユーザーの現在のデバイスで利用可能かどうかをチェックできるようにすることで、このモデルをサポートします。これにより、ユーザーがフルフィルメントページへのリンクを送信することで、メディアアクセスを簡単に共有することを防ぐことができる。もちろん、洗練されたユーザーは支払い領収書を共有することもできるが、これはリンクを共有するほど簡単ではない。
この機能を使用するために、マーチャントはまずユーザーの現在のブラウザにエフェメラルな session_id を割り当てる必要があります。支払いを実行または再実行するとき、ウォレットは追加の署名(session_sig)を受け取ります。この署名は、ウォレットが現在のセッションでそれぞれの注文の支払いレシートを表示したことを証明します。
セッションバウンドペイメントは session_id パラメータを /check-payment エンドポイントに渡すことでトリガーされます。その後、ウォレットはフルフィルメントページにリダイレクトされますが、追加の session_sig パラメータが含まれます。フロントエンドは session_id と session_sig の両方で /check-payment に問い合わせを行い、署名が正しいかどうかを確認することができます。
支払い領収書がユーザーのウォレットにあることを証明するために成功裏に使用された最後のセッ ションIDも、/check-payment``に対するレスポンスで ``last_session_id として利用可能である。