Aller au contenu principal
Sur cette page

DEUNA traite les données de réservation aérienne comme faisant partie de la commande, et non comme un amas de métadonnées opaques. Conserver le contexte commercial et de voyage utilisé par les fournisseurs de paiements, les contrôles de fraude, la réconciliation et les opérations clients.

Charge utile complète de la commande aérienne#

Utilisation AIRLINE_ORDER et inclure airline_information.booking_items. L'exemple est conforme au modèle utilisé par les services de commande et de paiement, tel qu'il est appliqué aux compagnies aériennes.

Charge utile complète de la commande

Compagnies aériennes

PNR, passager, billet, itinéraire, tarif, taxes et services annexes dans une commande aérienne typée.

airline_informationbooking_itemslegsancillaries
Corps de la requêteJSON
{
  "order_type": "AIRLINE_ORDER",
  "order": {
    "order_id": "pnr-N7K4Q2",
    "store_code": "web-eu",
    "currency": "EUR",
    "items_total_amount": 52000,
    "sub_total": 52000,
    "total_tax_amount": 9200,
    "total_amount": 61200,
    "items": [
      {
        "id": "ticket-0741234567890",
        "name": "Madrid to Paris",
        "description": "Economy Flex airfare with one checked bag",
        "quantity": 1,
        "category": "airfare",
        "taxable": true,
        "unit_price": {
          "amount": 52000,
          "currency": "EUR",
          "currency_symbol": "€"
        },
        "total_amount": {
          "amount": 52000,
          "original_amount": 52000,
          "currency": "EUR",
          "currency_symbol": "€",
          "total_discount": 0
        },
        "tax_amount": {
          "amount": 9200,
          "currency": "EUR",
          "currency_symbol": "€"
        }
      }
    ],
    "airline_information": {
      "booking_items": [
        {
          "pnr": "N7K4Q2",
          "ticket_number": "0741234567890",
          "e_ticket": true,
          "airline_3_digit_code": "074",
          "airline_iata_designator": "UX",
          "reservation_system_code": "AMADEUS",
          "ticketing_travel_agency": {
            "iata_code": "91234567",
            "name": "DEUNA Travel",
            "agency_invoice_number": "INV-2026-00421"
          },
          "passenger": {
            "user_id": "traveler-8821",
            "first_name": "Alex",
            "middle_name": "",
            "last_name": "Morgan",
            "title": "Mx",
            "date_of_birth": "1990-06-25",
            "document_type": "passport",
            "identity_document_number": "PA1234567",
            "document_number": "PA1234567",
            "email": "alex@example.com",
            "phone": "+34600000000",
            "frequent_flyer_code": "UX008821",
            "country_code": "ES",
            "type": "ADT"
          },
          "legs": [
            {
              "origin": {
                "iata_code": "MAD",
                "date": "2026-11-14",
                "time": "09:10",
                "city": "Madrid",
                "country_code": "ES"
              },
              "destination": {
                "iata_code": "ORY",
                "date": "2026-11-14",
                "time": "11:05",
                "city": "Paris",
                "country_code": "FR"
              },
              "carrier_code": "UX",
              "carrier_name": "Air Europa",
              "flight_number": "UX1027",
              "seat_location": "12A",
              "fare_basis_code": "YFLEX",
              "stopover_code": "O",
              "sub_total_amount": 48500,
              "tax_amount": 9200,
              "total_amount": 57700,
              "service_class": "Y",
              "airport_tax_amount": 4700
            }
          ],
          "ancillaries": [
            {
              "type": "BAGGAGE",
              "ticket_number": "0741234567890",
              "total_amount": 3500,
              "service_category": "baggage",
              "description": "One checked bag",
              "category_code": "BG",
              "sub_category_code": "23K",
              "fee_code": "0CC",
              "unit_price": 3500
            }
          ]
        }
      ]
    },
    "payer_info": {
      "email": "alex@example.com",
      "date_of_birth": "1990-06-25T00:00:00Z"
    },
    "description": "N7K4Q2 · MAD–ORY",
    "statement_descriptor": "DEUNA TRAVEL",
    "channel_type": "desktop_web",
    "metadata": {
      "vertical": "airline",
      "sales_channel": "direct",
      "loyalty_tier": "gold"
    },
    "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"
    }
  }
}

Modéliser le contexte commercial#

ExigenceChamps de commande
Réservation et billetteriepnr, ticket_number, e_ticket, reservation_system_code
Passagerpassenger Champs d'identité, de contact, de type et de membre de programme de fidélité
Vollegs[].origin, destination, carrier_code, flight_number, service_class
Tarif et taxesSous-total, taxe, taxe aéroport et montant total
Services additionnelsancillaries[] Type, catégorie de service, billet, code de frais et montant

Liste de contrôle de production#

  • Mapper booking_item par passager et relation avec le billet, utilisé par votre système de réservation.
  • Utilisez de manière cohérente les désignateurs d'aéroport et d'airline.
  • Vérifiez la cohérence des totaux, des legs, des taxes, des services additionnels et du total final dans des devises mineures.
  • Limitez les données personnelles des passagers aux champs requis par le processus.
  • Testez les scénarios d'autorisation, 3DS, capture différée, annulation, remboursement et modification d'itinéraire.

Continuez avec Authentification 3DS, Flux de capture et de remboursementet Traiter le paiement d’une commande.