3.1.5. フルフィルメントURLを理解する#

Talerの注文と契約には、``fulfillment_url``または``fulfillment_message``のいずれかを含める必要があり、これらは契約が支払われた後にウォレットによって使用されます。このチュートリアルでは、これらの値を適切に設定する方法を説明します。

3.1.5.1. フルフィルメント・メッセージ#

このフィールドは、ユーザーが購入を完了した後、Talerウォレットによってユーザーに表示されるメッセージです。任意の種類のUTF-8テキストに設定することができ、ビジネストランザクションの終了時にマーチャントからのフレンドリーな最終メッセージとして使用されることになっています。

注釈

Wheelウォレットは購入が行われる前にテキストを学習するため、ユーザーは実際の購入前にフルフィルメントメッセージを得ることができる。その結果、このメッセージには、ユーザーが契約で購入する可能性のある実際のクレデンシャルや情報は含まれていないはずである。

フルフィルメントメッセージは、マーチャントがユーザーをリダイレクトするフルフィルメントURLを持っていない場合に使用されます。

3.1.5.2. フルフィルメントURL#

契約には fulfillment_message の代わりに fulfillment_url を含めることができます。この fulfillment_url は Web サイト(http://` または https:// で始まる)を参照する必要があり、ユーザーは購入が完了した直後、場合によってはウォレットの取引履歴の購入詳細ダイアログからそのサイトにリダイレクトされます。

フルフィルメントURLには2つ目の目的があり、それは**再購入検知**にも使われるということです。 従って、フルフィルメントURLを正しく使用するように注意しなければならない。次の2つのセクションで、関連する2つのシナリオとその動機について説明する。

3.1.5.3. 買い戻し検出#

デジタル記事へのアクセスを販売する業者にとって起こりうる問題は、顧客があるデバイスで記事の代金を支払ったが、その後別のデバイス、場合によってはTalerウォレットさえインストールされていないデバイスで記事を読みたくなるかもしれないことである。

当然ながら、この時点では、顧客は最初はまだ記事の代金を再度支払うよう促される。顧客が次に、(例えばアンドロイドアプリでデスクトップ上の QR コードをスキャンして)以前記事の代金を支払っ たウォレットで taler:// リンクを開くと、ウォレットは契約を要求し、フルフィルメント URL が既に過去に支払いを行ったものと 同一 であることを検出し、再購入リダイレクト を開始する:ここで、ウォレットはマーチャントに連絡し、ブラウザの(現在の)セッションID(QRコードからセッ ションIDを学習する)を使用することを除いて、以前の支払いを再生します。

そして、マーチャントのバックエンドは、既存のオーダーのセッションIDをブラウザの現在のセッションIDに更新する。 新しい」未払いオーダーの支払いステータスがチェックされるとき(または、すでにロングポーリング中)、バックエンドはブラウザの*セッションID*と*フルフィルメントURL*に既存の支払い済み契約があることを検出します。そして、既に支払われた記事が利用可能なフルフィルメントURLに即座にリダイレクトするようにブラウザに伝えます。

従って、再購入の検出が必要な場合、販売者は同じデジタル製品に同じフルフィルメントURLを一貫して使用することが極めて重要である。

注釈

異なるデバイスにセッションIDを変更するには、支払いを行った元のウォレットが関与する必要があるため、デジタル購入を広く共有する可能性が合理的に制限される。

3.1.5.4. 繰り返し購入の許可#

再購入の検知が、顧客が同じサービスや物理的な商品を2回目以降に購入することを妨げないようにするため、加盟店は、異なる商品や、顧客がその商品を繰り返し購入することが予想される物理的な商品に対して、同じフルフィルメントURLを使用しない**ようにしなければならない。

ユニークなフルフィルメントURLを作成する便利な方法は、フルフィルメントURLに**注文ID**を埋め込むことです。新しい注文をPOSTする際にマーチャントが order_id フィールドを設定しなくても、フルフィルメントURLに注文IDを使用できるようにするには、マーチャントのバックエンドに投稿する際に fulfillment_url にプレースホルダテキスト ${ORDER_ID} を使用します。マーチャントバックエンドは、URLの ${ORDER_ID} をすぐに実際の注文IDに置き換えます(契約条件をローカルに保持する前に)。