PaymentRequest: PaymentRequest() コンストラクター
=========================================

**安全なコンテキスト用:** この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

**`PaymentRequest()`** コンストラクターは、決済リクエストの生成、検証、送信の処理を行うために使用する新しい `PaymentRequest` オブジェクトを作成します。

構文
--


```js
new PaymentRequest(methodData, details)
new PaymentRequest(methodData, details, options)
```

### 引数

`methodData`

販売者ウェブサイトが受け入れる決済手段の識別子と、関連する決済手段固有のデータを格納する配列です。配列の各項目には以下のフィールドが含まれます。

`supportedMethods`

この仕様の初期の実装では、これは販売者のウェブサイトが受け入れる決済手段の識別子の列でした。最近のブラウザーでは、この引数はクレジットカードよりも一般的で、単一の文字列であり、`data` 引数の意味は `supportedMethods` によって変化します。例えば、Example Pay の決済手段は、ここに文字列 `https://example.com/pay` を指定することで選択されます。

`data`

対応している決済手段が必要とするかもしれないオプション情報を提供する JSON シリアライズ可能なオブジェクトです。これは `supportedMethods` で示す決済ハンドラーが期待する種類に適合していなければなりません。。開発者は、データオブジェクトの期待される形について、決済手段の管理者に相談する必要があります。


`details`

リクエストされたトランザクションに関する情報を提供する。この引数には以下のフィールドが含まれます。

`total`

決済リクエストのための合計金額です。

`id` 省略可

この決済リクエストのための自由形式の識別子。値が与えられなかった場合、ブラウザーは値を作成します。

`displayItems`

ユーザーエージェントが表示することができる決済リクエストのオプション行項目（商品詳細、税金、送料など）の配列。

`shippingOptions`

ユーザーが選ぶことのできる配送オプションです。この配列が空の場合、販売者は現在の配送先住所に配送できないことを示す。既定値の配送オプションは、この配列で示すことができます。

`modifiers`

特定の決済手段に対する変更仕様です。例 えば、決済のための合計金額を決済手段に基づいて調整することです。このパラメータには、以下のフィールドが格納されます。

`additionalDisplayItems`

`details.displayItems` プロパティに追加する項目の配列です。このプロパティは、`details.modifiers.total` で異なる金額を示す割引または割増料金の行を追加するために一般的に使用されます。

`data`

対応している決済手段で必要と思われるオプション情報を提供する JSON シリアライズ可能なオブジェクトです。

`total`

details.total の値を上書きする、決済リクエストのための合計金額です。これは通常、`details.modifiers.additionalItems` がリクエストに割引や購入を追加するときに使用します。


`options` 省略可

ユーザーエージェントの動作を制御するオプションを設定することができます。この引数には、以下のフィールドが含まれます。

`requestPayerName`

ユーザーエージェントが支払者の名前を収集し、決済リクエストと一緒に送信するかどうかを示す論理値です。既定値は `false` です。

`requestPayerEmail`

ユーザーエージェントが支払者の電子メールアドレスを収集し、決済リクエストと一緒に送信するかどうかを示す論理値です。既定値は `false` です。

`requestPayerPhone`

ユーザーエージェントが支払者の電話番号を収集し、決済リクエストと一緒に送信するかどうかを示す論理値です。既定値は `false` です。

`requestShipping`

ユーザーエージェントが支払者の配送先住所を収集し、決済リクエストと一緒に送信するかどうかを示す論理値です。この型を true に設定した場合、適切な `shippingType` を選択する必要があります。既定値は `false` です。

`shippingType`

 使用する用途によって「配送」という言葉が適切でない場合に、ユーザーインターフェイスがどのように配送を参照するかを指定します。例えば、英語圏では "pizza shipping" ではなく "pizza delivery" と言います。有効な値は、`"shipping"`、`"delivery"`、`"pickup"` です。
 引用符は必ず含める必要があります。既定値は `"shipping"` です。



### 返値

新しい`PaymentRequest`オブジェクトで、入力引数によって設定された通りの用途で使用するように構成されています。

### Exceptions

`SecurityError` `DOMException`

この機能を使用することが、権限ポリシーによってブロックされている。

例
-

次の例は、最小限の機能を示し、代わりに `PaymentRequest` オブジェクトをインスタンス化する際の完全なコンテキストを示すことに重点を置いています。


```js
const supportedInstruments = [
  {
    supportedMethods: "https://example.com/pay",
  },
];

const details = {
  total: { label: "Donation", amount: { currency: "USD", value: "65.00" } },
  displayItems: [
    {
      label: "Original donation amount",
      amount: { currency: "USD", value: "65.00" },
    },
  ],
  shippingOptions: [
    {
      id: "standard",
      label: "Standard shipping",
      amount: { currency: "USD", value: "0.00" },
      selected: true,
    },
  ],
};

const options = { requestShipping: true };

try {
  const request = new PaymentRequest(supportedInstruments, details, options);
  // Add event listeners here.
  // Call show() to trigger the browser's payment flow.
  request
    .show()
    .then((instrumentResponse) => {
      // Do something with the response from the UI.
    })
    .catch((err) => {
      // Do something with the error from request.show().
    });
} catch (e) {
  // Catch any other errors.
}
```

仕様書
---

| Specification |
| --- |
| Payment Request API 1.1 # constructor |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.