Aller au contenu principal

Ces exemples présentent des corps complets de requêtes de commande et de paiement pour chaque secteur. Commencez par POST /v2/merchants/orders/purchase pour créer et payer une commande en ligne dans une seule requête. La création séparée de la commande avec POST /merchants/orders est facultative.

Choisir le flux de requête#

FluxPoint de terminaisonQuand l'utiliser
Purchase V2 · RecommandéPOST /v2/merchants/orders/purchaseEnvoyez ensemble la commande en ligne, le payeur et la source de paiement tokenisée. DEUNA crée la commande dans le cadre de la requête de paiement.
Créer d’abord la commande · FacultatifPOST /merchants/orders, puis POST /v2/merchants/orders/purchaseCréez la commande séparément uniquement lorsque votre intégration a besoin d’un order_token avant le paiement, par exemple pour initialiser Checkout, réutiliser la même commande sur plusieurs canaux ou la récupérer avant la tentative de paiement.

Les exemples ci-dessous prennent en charge les deux flux. Choisissez un secteur, passez d’un type de requête à l’autre et copiez la requête JSON ou cURL. Les montants sont exprimés dans l’unité monétaire minimale.

Quels champs sont obligatoires dans order.items ?#

La réponse courte est que le validateur de demande de base de création de commande ne définit pas de propriété universellement requise à l'intérieur de chaque élément. Il valide si le tableau items est présent pour un type de commande particulier, et non le contenu de chaque article.

Type de commandeObjet requisComportement du contrat de base
DEUNA_CHECKOUTorder.itemsObligatoire. Lorsqu'il est fourni, le type d'exécution accepte uniquement dine_in, pickup, ou delivery.
SUBSCRIPTIONSorder.itemsObligatoire. Marquez les lignes applicables avec included_in_subscription.
AIRLINE_ORDERorder.airline_informationObligatoire. Le tableau items reste facultatif au niveau du contrat de base.
DEUNA_NOWAucunLe tableau items n’est pas requis par le contrat de base. Incluez-le lorsque le traitement en aval nécessite des détails sur le produit.
PAYMENT_LINKAucunLe tableau items n’est pas requis par le contrat de base. Incluez-le lorsque l'expérience hébergée ou le traitement en aval nécessite des détails sur le produit.

Un élément vide n'est pas une cible d'intégration utile. Les prestataires de paiement, les contrôles anti-fraude, la gestion fiscale, les rapports et votre propre rapprochement peuvent nécessiter plus de détails. À moins qu'un guide du fournisseur n'énonce une exigence plus stricte, utilisez cette référence portable pour chaque élément :

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
}

Le modèle d'élément prend en charge les groupes de champs suivants :

ObjectifChamps pris en charge
Identité de l'article du marchandid, sku, upc, isbn
Détails des articles destinés au clientname, description, image_url, details_url
Détail des quantités et des prixquantity, uom, unit_price, total_amount, tax_amount, taxable, discounts
Détail du catalogue et des variantesbrand, manufacturer, category, sub_category, color, size, weight
Accomplissement et contexte supplémentaireoptions, type, item_details, included_in_subscription, shipping_options
ChampValeurs documentées
typephysical, digital, event, service

Gardez les devises des articles et des commandes alignées et calculez les montants dans des unités monétaires mineures.

Champs obligatoires au niveau de la commande et règle de montant

Champ ou règleExigence
order_idObligatoire pour chaque commande.
currencyObligatoire pour chaque commande.
total_amountDoit être supérieur à zéro pour les bons de commande normaux. Une récurrence de première utilisation de valeur nulle est l’exception documentée en matière de vérification de carte.
sub_total + total_tax_amount = total_amountAppliqué chaque fois qu'un sous-total ou un montant total de taxe est fourni.

Guide de terrain vertical#

QSR, cinéma, banque et vente au détail sont des modèles de documentation basés sur le type de commande de paiement standard. Ce ne sont pas des valeurs de type de commande distinctes. Les compagnies aériennes utilisent le contrat de commande dédié aux compagnies aériennes.

VerticaleType de commandeEnsemble de champs principalComment l'utiliser
QSRDEUNA_CHECKOUTitems[].id, items[].sku, options, shipping_options, scheduled_at, user_instructionsIdentifiez les lignes de menu et les modificateurs, le mode de service et le magasin, le temps de préparation et les instructions de transfert. Le tableau items est obligatoire.
Compagnies aériennesAIRLINE_ORDERairline_information.booking_items, pnr, ticket_number, passenger, legs, ancillariesEnvoyez les détails de la réservation, du billet, de l'agence, du passager, de l'itinéraire et du service payant. Les informations sur la compagnie aérienne sont requises ; le tableau items est facultatif au niveau du contrat de base.
CinémaDEUNA_CHECKOUTitems, type, options, shipping_options.details, expires_atModélisez les billets et les concessions en lignes distinctes, identifiez les billets d'événement et joignez l'heure de projection, les sièges, le lieu, le destinataire et la date limite de réservation des sièges. Le tableau items est obligatoire.
BanqueDEUNA_CHECKOUTitems, type, description, statement_descriptor, initiator_type, channel_type, metadataModélisez le paiement en tant que service et envoyez des références commerciales masquées ou tokenisées. Le tableau items est obligatoire. Ne mettez jamais les numéros de compte complets ou les informations d’identification dans les métadonnées.
Commerce de détailDEUNA_CHECKOUTitems, discounts, shipping_address, shipping_method, shipping_optionsEnvoyez l’identité du produit et de la variante, les promotions, la destination, le mode de livraison et le contexte d’exécution. Le tableau items est obligatoire. Gardez les références de remise sur les articles alignées sur le tableau de remise au niveau de la commande.

Exemples complets#

Chaque exemple identifie l’endpoint ciblé. Purchase V2 · Recommandé contient la requête de paiement complète en un seul appel. Créer d’abord la commande · Facultatif contient uniquement la requête qui crée la commande ; utilisez le order_token renvoyé dans la requête Purchase V2.

Requête complète

Restauration rapide

Traitez le paiement en une requête en envoyant la commande, le payeur et la source de paiement tokenisée en ligne.

POST/v2/merchants/orders/purchase

Menu, options, mode de service, lieu, horaire et instructions client dans une seule commande de restaurant.

itemsshipping_optionsscheduled_atuser_instructions
Corps de la requêteJSON
{
  "payer_info": {
    "email": "alex@example.com",
    "external_registration_date": "2024-02-10T12:00:00Z"
  },
  "payment_source": {
    "method_type": "credit_card",
    "payment_method": "TOKENIZED_PAYMENT_METHOD"
  },
  "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.",
    "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"
  }
}

Ce qui reste commun#

Chaque secteur utilise le même contrat de base :

  • order_id, store_codeet currency Identifier le contexte commercial du commerçant.
  • Les montants sont des entiers en unités monétaires mineures et doivent correspondre aux détails de l'article, des taxes, des remises et des frais de port.
  • items Décrire ce que le client achète ou paie.
  • payer_info, channel_typeet initiator_type Clarifier qui a initié le processus et où.
  • callback_urls et les données retournées. order_token Relier la requête synchrone à son résultat final.
  • metadata transmet des références définies par le commerçant ; il est préférable d'utiliser les champs de type pris en charge si possible.

Continuer l'intégration#