QSRの支払いと注文
メニュー、モディファイ、場所、および履行コンテキストを使用して、クイックサービスレストランのチェックアウトと支払いフローを構築。
DEUNAは、支払いと注文を分離することなく、レストランとオペレーションチームが必要とする、迅速なレストラン体験を構築します。DEUNAは、支払いライフサイクルに、アイテムのモディファイ、サービスモード、店舗、スケジュール、および顧客の指示を保持します。
メニューに基づいた注文メニューID、SKU、数量、モディファイ、税金、およびアイテム合計を送信。履行コンテキストピックアップまたは配送、場所の詳細、および予定された準備を表現。支払いオーケストレーション設定されたプロバイダーを介して、同じ注文トークンを保持しながら、すべての試行をルーティング。
完全なQSR注文ペイロード#
金額は、少額の通貨単位を使用します。この例は、2つのカスタマイズされたアイテムを使用した予定されたピックアップをモデル化し、注文をレストランの注文と一致させるための十分なコンテキストを提供します。
完全な注文ペイロード
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"
}
}
}ビジネスのコンテキストを定義する#
| 要件 | 注文フィールド |
|---|---|
| メニューとモディファイ | items[].id, sku, options, quantity, category |
| ピックアップまたは配送 | shipping_options.type, method, details.store_id |
| タイミング | scheduled_at, shipping_options.details.additional_details.pickup_time |
| キッチンまたは手渡しメモ | user_instructions |
| ロイヤリティとサービスモード | 名前空間キーを保持 metadata |
生産時のチェックリスト#
- アイテム、税金、割引、配送、および合計金額を内部的に一貫させる。
- 注文を準備または履行する店舗を送信。
- 予定注文の場合は、ISO 8601タイムスタンプと正しい商人のタイムゾーンを使用。
- 注文を履行する前に、ウェブフックを介して最終的な支払い状態を確認。
- ピックアップ、配送、モディファイ、クーポン、拒否、リトライ、およびタイムアウトのシナリオをテスト。
次に、 注文の支払い処理 と 支払いワークフローとステータスを確認.