Aller au contenu principal
Sur cette page

Connecter un paiement de détail à l'orchestration des paiements sans perdre les données nécessaires à la livraison et au support. DEUNA conserve le catalogue, la promotion, la livraison et le contexte du client sur la même commande utilisée tout au long du cycle de vie du paiement.

Contenu complet de la commande de détail#

Cet exemple inclut une variante de produit, une référence de remise au niveau de l'article, la remise correspondante à la commande, une adresse de livraison et une méthode d'expédition sélectionnée.

Charge utile complète de la commande

Commerce de détail

Variantes produit, promotion, adresse, mode de livraison et contexte de traitement pour le commerce.

itemsdiscountsshipping_addressshipping_method
Corps de la requêteJSON
{
  "order_type": "DEUNA_CHECKOUT",
  "order": {
    "order_id": "retail-93418",
    "store_code": "es-online",
    "currency": "EUR",
    "items_total_amount": 10900,
    "sub_total": 11400,
    "shipping_amount": 500,
    "total_tax_amount": 2152,
    "total_discount": 1000,
    "total_amount": 13552,
    "items": [
      {
        "id": "shoe-runner-42-blue",
        "sku": "RUNNER-BLU-42",
        "upc": "8437012345678",
        "name": "Runner trainers",
        "description": "Everyday lightweight trainers",
        "quantity": 1,
        "brand": "Northline",
        "category": "footwear",
        "sub_category": "trainers",
        "color": "navy",
        "size": "42",
        "taxable": true,
        "image_url": "https://merchant.example.com/products/runner-blue.jpg",
        "details_url": "https://merchant.example.com/products/runner-blue",
        "unit_price": {
          "amount": 11900,
          "currency": "EUR",
          "currency_symbol": "€"
        },
        "total_amount": {
          "amount": 10900,
          "original_amount": 11900,
          "currency": "EUR",
          "currency_symbol": "€",
          "total_discount": 1000
        },
        "tax_amount": {
          "amount": 2052,
          "currency": "EUR",
          "currency_symbol": "€"
        },
        "weight": {
          "weight": 850,
          "unit": "g"
        },
        "discounts": [
          {
            "amount": 1000,
            "ref_idx": 0
          }
        ]
      }
    ],
    "discounts": [
      {
        "amount": 1000,
        "code": "WELCOME10",
        "reference": "campaign-2026-welcome",
        "description": "Welcome discount",
        "details_url": "https://merchant.example.com/promotions/welcome10",
        "free_shipping": {
          "is_free_shipping": false,
          "maximum_cost_allowed": 0
        },
        "discount_category": "coupon",
        "target_type": "items",
        "type": "fixed_amount"
      }
    ],
    "shipping_address": {
      "first_name": "Alex",
      "last_name": "Morgan",
      "email": "alex@example.com",
      "phone": "+34600000000",
      "address1": "Calle de Alcalá 125",
      "address2": "3B",
      "city": "Madrid",
      "zipcode": "28009",
      "state_name": "Madrid",
      "state_code": "MD",
      "country_code": "ES",
      "address_type": "home",
      "is_default": true
    },
    "shipping_method": {
      "code": "standard-48h",
      "name": "Standard delivery",
      "min_delivery_date": "2026-10-05",
      "max_delivery_date": "2026-10-06",
      "cost": 500,
      "display_cost": "€5.00",
      "tax_amount": 100,
      "display_tax_amount": "€1.00",
      "scheduler": []
    },
    "shipping_options": {
      "type": "delivery",
      "method": "standard-48h",
      "carrier": "Merchant Logistics",
      "price": {
        "amount": 500,
        "currency": "EUR"
      },
      "requires_shipping": true,
      "details": {
        "store_id": "es-online",
        "store_name": "Online store",
        "address": "Calle de Alcalá 125, Madrid",
        "address_coordinates": {
          "lat": 40.4217,
          "lng": -3.6772
        },
        "contact": {
          "name": "Customer care",
          "phone": "+34910000000"
        },
        "additional_details": {
          "address_notes": "Leave with the concierge."
        }
      }
    },
    "payer_info": {
      "email": "alex@example.com"
    },
    "channel_type": "desktop_web",
    "metadata": {
      "vertical": "retail",
      "fulfillment_node": "warehouse-mad-02"
    },
    "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
Identité du produititems[].id, sku, upc, brand, category, sub_category
Variante et présentationcolor, size, image_url, details_url, weight
Promotiondiscounts[] et article discounts[].ref_idx
Livraisonshipping_address, shipping_method, shipping_options
Opérations de livraisonInformations sur le magasin, l'entrepôt, le transporteur, les dates de livraison et les métadonnées du commerçant

Liste de contrôle de production#

  • Utiliser des identifiants de produits et de variantes immuables plutôt que les noms d'affichage comme clés.
  • Maintenir la cohérence des références de remise entre les articles et le niveau de commande. discounts array.
  • Valider l'adresse postale, le transporteur, les dates de livraison et le coût de port avant le paiement.
  • Conserver le token de commande original pour les flux de capture, de remboursement, d'annulation et de support.
  • Tester les modifications des promotions, les articles en rupture de stock, la répartition de la livraison, les remboursements partiels et les scénarios de nouvelle tentative.

Continuez avec Modules de paiement, Capture et remboursementset Traiter le paiement d’une commande.