注文ペイロードの例:業界別
QSR、航空会社、映画館、銀行、小売業向けの完全なDEUNA注文ペイロードをコピー。
これらの例は、以下の内容を含む完全なリクエストボディを示しています。 POST /merchants/orders。業界を選択し、すべてのフィールドを検査して、JSON または cURL リクエストをコピーします。この例は、公開された Create Order コントラクトに従っています。金額はマイナー通貨単位で表されます。
注文の作成時に order.items に必要なフィールドは何ですか?#
簡単に言うと、基本的な Create Order リクエストのバリデーターは、各項目内に普遍的に必要なプロパティを定義していないということです。各項目の内容ではなく、特定の注文タイプに項目配列が存在するかどうかを検証します。
| 注文タイプ | 必須のオブジェクト | 基本的なコントラクトの動作 |
|---|---|---|
DEUNA_CHECKOUT | order.items | 必須。指定された場合、フルフィルメント タイプはのみを受け入れます dine_in, pickup、または delivery. |
SUBSCRIPTIONS | order.items | 必須。該当する行にマークを付けます included_in_subscription. |
AIRLINE_ORDER | order.airline_information | 必須。 items 配列は、基本契約レベルではオプションのままです。 |
DEUNA_NOW | N/A | items 配列は基本コントラクトでは必要ありません。下流工程で製品の詳細が必要な場合に含めます。 |
PAYMENT_LINK | N/A | items 配列は基本コントラクトでは必要ありません。ホストされたエクスペリエンスまたはダウンストリーム処理で製品の詳細が必要な場合は、これを含めます。 |
空の項目は統合ターゲットとしては役に立ちません。決済プロバイダー、不正行為のチェック、税務処理、報告、およびお客様自身の調整については、さらに詳細な情報が必要になる場合があります。プロバイダー ガイドにさらに厳しい要件が記載されていない限り、すべての項目に対して次の移植可能なベースラインを使用してください。
JSON
{
"id": "merchant-item-001",
"sku": "SKU-001",
"name": "Product name",
"quantity": 1,
"unit_price": {
"amount": 2500,
"currency": "USD"
},
"total_amount": {
"amount": 2500,
"original_amount": 2500,
"total_discount": 0,
"currency": "USD"
},
"tax_amount": {
"amount": 0,
"currency": "USD"
},
"category": "products",
"type": "physical",
"taxable": false
}項目モデルは次のフィールド グループをサポートします。
| 目的 | サポートされているフィールド |
|---|---|
| 販売者のアイテム ID | id, sku, upc, isbn |
| 顧客向けアイテムの詳細 | name, description, image_url, details_url |
| 数量と価格の詳細 | quantity, uom, unit_price, total_amount, tax_amount, taxable, discounts |
| カタログとバリエーションの詳細 | brand, manufacturer, category, sub_category, color, size, weight |
| フルフィルメントと追加のコンテキスト | options, type, item_details, included_in_subscription, shipping_options |
| フィールド | 文書化された値 |
|---|---|
type | physical, digital, event, service |
品目と注文の通貨を一致させて、マイナー通貨単位で金額を計算します。
必須の注文レベルのフィールドと金額ルール
| フィールドまたはルール | 要件 |
|---|---|
order_id | すべての注文に必要です。 |
currency | すべての注文に必要です。 |
total_amount | 通常の発注書の場合は、ゼロより大きくなければなりません。ゼロ値の初回使用の繰り返しは、文書化されたカード検証例外です。 |
sub_total + total_tax_amount = total_amount | 小計または合計税額が指定されるたびに適用されます。 |
垂直フィールドガイド#
QSR、映画、銀行、小売は、標準的なチェックアウト注文タイプに基づく文書化パターンです。これらは個別の注文タイプの値ではありません。航空会社は専用の航空会社注文契約を使用します。
| 垂直 | 注文タイプ | プライマリフィールドセット | 使い方 |
|---|---|---|---|
| QSR | DEUNA_CHECKOUT | items[].id, items[].sku, options, shipping_options, scheduled_at, user_instructions | メニュー行と修飾子、サービス モードとストア、準備時間、およびハンドオフ手順を特定します。 items 配列は必須です。 |
| 航空会社 | AIRLINE_ORDER | airline_information.booking_items, pnr, ticket_number, passenger, legs, ancillaries | 予約、航空券、代理店、乗客、旅程、有料サービスの詳細を送信します。航空会社の情報は必須です。 items 配列は、基本契約レベルではオプションです。 |
| 映画館 | DEUNA_CHECKOUT | items, type, options, shipping_options.details, expires_at | チケットと特典を別の行としてモデル化し、イベント チケットを特定し、上映時間、座席、会場、受取人、座席の確保期限を添付します。 items 配列は必須です。 |
| 銀行 | DEUNA_CHECKOUT | items, type, description, statement_descriptor, initiator_type, channel_type, metadata | サービスとしての支払いをモデル化し、マスクまたはトークン化されたビジネス参照を送信します。 items 配列は必須です。完全なアカウント番号や認証情報をメタデータに含めないでください。 |
| 小売 | DEUNA_CHECKOUT | items, discounts, shipping_address, shipping_method, shipping_options | 製品とバリエーションの ID、プロモーション、宛先、配送方法、フルフィルメント コンテキストを送信します。 items 配列は必須です。品目割引参照を注文レベルの割引配列と一致させてください。 |
完全な例#
完全な注文ペイロード
QSR
メニュー、オプション、サービス形態、店舗、時間、顧客の指示を 1 つの飲食店注文にまとめます。
itemsshipping_optionsscheduled_atuser_instructionsリクエスト本文JSON
{
"order_type": "DEUNA_CHECKOUT",
"order": {
"order_id": "qsr-2048",
"store_code": "mad-gran-via-01",
"currency": "EUR",
"items_total_amount": 2890,
"sub_total": 2890,
"total_tax_amount": 286,
"total_amount": 3176,
"items": [
{
"id": "meal-smash-01",
"sku": "SMASH-COMBO",
"name": "Smash burger combo",
"description": "Burger, fries, and drink",
"options": "medium; no onions; sparkling water",
"quantity": 1,
"category": "combos",
"taxable": true,
"unit_price": {
"amount": 1890,
"currency": "EUR",
"currency_symbol": "€"
},
"total_amount": {
"amount": 1890,
"original_amount": 1890,
"currency": "EUR",
"currency_symbol": "€",
"total_discount": 0
},
"tax_amount": {
"amount": 172,
"currency": "EUR",
"currency_symbol": "€"
}
},
{
"id": "side-wings-06",
"sku": "WINGS-6",
"name": "Six hot wings",
"options": "chipotle sauce",
"quantity": 1,
"category": "sides",
"taxable": true,
"unit_price": {
"amount": 1000,
"currency": "EUR",
"currency_symbol": "€"
},
"total_amount": {
"amount": 1000,
"original_amount": 1000,
"currency": "EUR",
"currency_symbol": "€",
"total_discount": 0
},
"tax_amount": {
"amount": 114,
"currency": "EUR",
"currency_symbol": "€"
}
}
],
"shipping_options": {
"type": "pickup",
"method": "counter",
"requires_shipping": false,
"details": {
"store_id": "mad-gran-via-01",
"store_name": "Gran Vía",
"address": "Calle Gran Vía 42, Madrid",
"address_coordinates": {
"lat": 40.4201,
"lng": -3.7058
},
"contact": {
"name": "Gran Vía team",
"phone": "+34910000000"
},
"additional_details": {
"pickup_time": "2026-10-03T18:30:00Z",
"stock_location": "Front counter"
}
}
},
"scheduled_at": "2026-10-03T18:30:00Z",
"user_instructions": "Label the order for Alex. Include napkins.",
"payer_info": {
"email": "alex@example.com",
"external_registration_date": "2024-02-10T12:00:00Z"
},
"channel_type": "mobile_app_ios",
"metadata": {
"vertical": "qsr",
"service_mode": "pickup",
"loyalty_member_id": "LOY-88201"
},
"callback_urls": {
"on_success": "https://merchant.example.com/payments/success",
"on_pending": "https://merchant.example.com/payments/pending",
"on_reject": "https://merchant.example.com/payments/rejected",
"on_canceled": "https://merchant.example.com/payments/canceled",
"on_failed": "https://merchant.example.com/payments/failed"
}
}
}共通点#
すべての業界で共通の基本的な契約が存在します:
order_id,store_code, およびcurrency商取引の文脈を特定します。- 金額は、整数で最小単位の通貨で表され、項目、税金、割引、および配送の詳細と一致する必要があります。
items顧客が購入または支払うものを記述します。payer_info,channel_type, およびinitiator_typeフローを開始した人物と場所を明確にします。callback_urlsおよび、返されたorder_tokenは、同期リクエストを最終的な結果に接続します。metadata商取引固有の参照が含まれます。存在する場合、型付きフィールドを使用してください。