Gestionnaire de transactions : intégration : POST

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 6 minutes de lecture
  • Apprenez à écrire des données dans une application tierce telle que Salesforce à l’aide de l’intégration POST.

    Prérequis

    Cet article suppose que vous disposez d’un CPQ environnement intégré à un environnement Salesforce correspondant. Avant de continuer, reportez-vous à la rubrique Installation de l’extension du package d’intégration Salesforce Transaction Manager pour terminer les intégrations nécessaires.

    Lorsque l’utilisateur final lance une fonction qui réécrit les données dans l’enregistrement de CPQ transaction Salesforce correspondant, CPQ il doit avoir l’identificateur d’enregistrement de la transaction Salesforce à portée de main. Pour savoir comment récupérer l’ID de transaction Salesforce et l’enregistrer dans pour une utilisation ultérieure, reportez-vous à CPQ la section Gestionnaire des transactions : intégration : GET.

    Configuration de Salesforce

    Dans cet exemple, nous écrivons des données LGK dans les champs Salesforce répertoriés ci-dessous. Vérifiez les objets Salesforce Transaction et TransactionLine pour vous assurer que ces champs sont présents.

    Champs d’en-tête (objet Salesforce :LGK__Transaction__c)

    • LGK__Stage__c contient l’étape de la CPQ transaction.
    • LGK__PricingExtendedNet__c est le total net de la transaction (au niveau de l’en-tête).
    • LGK__Id__c est mappé à la id transaction parente.

    Champs de ligne (objet Salesforce : LGK__TransactionLine__c)

    • LGK__Quantity__c: quantité au niveau de la ligne.
    • LGK__PricingList__c: prix catalogue au niveau de la ligne.
    • LGK__PricingNet__c: prix net de la ligne, ou prix réduit à la pièce.
    • LGK__PricingExtendedNet__c: total net de la ligne, ou prix net étendu (quantité comprise).
    • LGK__ParentTransactionLineId__c vérifie s’il txn.line.custom.parentLineReferenceId existe. Si c’est le cas, il affecte les lignes correspondantes id; sinon, il définit la valeur sur null.
    • LGK__Product2Id__c est mappé au produit associé à partnerId la ligne de transaction actuelle.

    Intégration POST à l’aide de Composite Graph

    L’intégration LGK POST utilise l’API Salesforce Composite Graph pour mettre à jour plusieurs objets Salesforce simultanément dans un seul appel d’API, ce qui permet de mettre à jour les champs au niveau de l’en-tête et de la ligne dans la même demande.

    L’API Salesforce Composite Graph permet de regrouper plusieurs opérations en une seule demande, ce qui la rend très efficace pour les intégrations. Il permet d’écrire sur plusieurs objets Salesforce en un seul appel POST, ce qui réduit l’utilisation de l’API, assure la cohérence des données et permet des transactions atomiques, où toutes les opérations réussissent ou aucune n’est appliquée. Cela simplifie les processus d’intégration et améliore la gestion des erreurs. Pour plus de détails sur la construction de graphe composite, voir Graphe composite | Guide du développeur API REST | Développeurs Salesforce.

    Étant donné que l’API Composite Graph est une aptitude Salesforce de base, aucune configuration n’est nécessaire. Cependant, nous introduisons le concept ici, avant de remplir un graphique composite dans l’appel LGK POST, décrit ci-dessous. Dans l’exemple ci-dessous pour POST, l’intégration utilise les champs de niveau en-tête et de niveau ligne mentionnés précédemment dans la section Configuration de Salesforce ci-dessus, avec la possibilité pour les utilisateurs d’ajouter ou de supprimer des champs en fonction de leurs besoins.

    Configuration de Transaction Manager

    Les mappages d’ID de transaction mentionnés dans la section Configuration de Salesforce permettent d’envoyer les bons ID de ligne à Salesforce et de CPQ gérer efficacement les mises à jour, les suppressions et les ajouts. En mappant LGK__TransactionId__c à l’ID de transaction parent, Salesforce peut lier tous les changements au niveau de la ligne à la transaction correcte, garantissant ainsi une association appropriée. Le LGK__ParentTransactionLineId__c recherche une référence de ligne parente ; le cas échéant, il affecte l’ID de ligne correspondant, garantissant que seules les lignes valides sont mises à jour ou supprimées. S’il n’existe aucune référence, la valeur est définie sur null. Le LGK__Product2Id__c mappé à l’ID du partenaire du produit, garantissant que le produit correct est lié à la ligne pour une tarification précise et une application de remise. Ces mappages dynamiques permettent à Salesforce de mettre à jour avec précision les quantités, de supprimer des lignes et d’en ajouter de nouvelles tout en préservant les remises au niveau de la ligne de l’utilisateur en maintenant des associations appropriées avec les données de transaction et de produit.

    Cette transformation d’intégration nécessite l’utilisation de deux champs de ligne personnalisés, lineReferenceId et parentLineReferenceId. Ces champs doivent être configurés pour stocker une variante des txn.line.id champs système et (éventuellement). txn.line.parent.id

    Règles

    L’API Salesforce Composite Graph ne prend pas en charge les traits d’union dans certains identificateurs, ce qui peut entraîner des problèmes lors de l’envoi de données qui incluent des ID avec trait d’union, tels que les ID de ligne LGK. Pour que l’intégration fonctionne, le système supprime les traits d’union présents dans les ID de ligne LGK avant de les envoyer à Salesforce. Cela garantit que les ID sont conformes aux exigences de format de Salesforce et que l’intégration fonctionne correctement sans erreurs liées à des caractères non valides. En supprimant les traits d’union, le système s’assure que tous les identifiants sont acceptés par Salesforce, ce qui permet à l’intégration de traiter les mises à jour et autres opérations en douceur.

    Pour supprimer les tirets à l’aide d’une règle, créez une action de règle de détermination pour rendre les champs d’ID de référence de niveau de ligne compatibles avec Salesforce. Vous pouvez ajouter l’action de détermination lineReferenceId et l’action de détermination parentLineReferenceId en une seule règle.

    Vous trouverez ci-dessous deux scripts de détermination (au niveau de la ligne de transaction) indiquant comment les champs doivent être définis.

    // lineReferenceId Determination Action
    
    var original = txn.line.id;
    var result = "";
    for (var i = 0; i < original.length; i++) {
      if (original.charAt(i) !== "-") {
    	    result += original.charAt(i);
    	  }
    }
    return result;
    // parentLineReferenceId Determination Action
    
    var original = txn.line.parent.id;
    var result = "";
    if (txn.line.parent.id != txn.id) {
      for (var i = 0; i < original.length; i++) {
        if (original.charAt(i) !== "-") {
            result += original.charAt(i);
          }
      }
    }
    return result;

    La règle doit être configurée comme suit, avec deux actions de détermination à gérer txn.line.custom.lineReferenceId et txn.line.custom.parentLineReferenceId:

    Configuration du gestionnaire des transactions

    Configuration du gestionnaire des transactions

    Ajouter une connexion

    La capture d’écran ci-dessous montre la connexion externe en tant que « Salesforce » dans l’intégration POST.

    Si vous souhaitez créer une nouvelle connexion, reportez-vous à la section « Création d’une connexion » dans Gestionnaire de transaction : intégrations.

    Configuration du gestionnaire des transactions

    Pour PUBLIER des données dans Salesforce, vous avez besoin de l’ID de l’enregistrement de transaction Salesforce. Si vous n’avez pas encore configuré l’intégration GET pour extraire l’ID de transaction, reportez-vous à la section Gestionnaire des transactions : intégration : GET.

    Ajouter l'intégration

    1. Accédez à la section Intégrations et créez une intégration.
      • Méthode HTTP : POST
      • Chemin d’accès supplémentaire :/services/data/vXX.X/composite/graphvXX.X se trouve la dernière version du graphique composite. Vous pouvez vérifier la dernière version ici.
      • Détails de l’élément de ligne à inclure : Lignes sélectionnées
      • Connexion : Salesforce

        Configuration du gestionnaire des transactions

    2. Dans la section Transformation de demande, ajoutez cet exemple de transaction JSON (les champs au niveau de l’en-tête et de la ligne peuvent varier selon vos préférences) :
    {
      "graphs": [
        {
          "graphId": "graph0",
          "compositeRequest": [
            {
              "method": "PATCH",
              "url" : "/services/data/v61.0/sobjects/LGK__Transaction__c/LGK__TransactionUUID__c/{{txn.id}}",
              "referenceId": "parentTransaction",
              "body": {
                "LGK__Stage__c": "{{txn.stage}}",
                "LGK__NetTotal__c": "{{txn.pricing.total}}"
              }
            }
            {{#if lines}}
    				{{~#each lines~}}
    				{{#if txn.line.product.partnerId}}
    				,
            {
              "method": "PATCH",
              "url": "/services/data/v61.0/sobjects/LGK__TransactionLine__c/LGK__TransactionLineId__c/{{txn.line.id}}",
              "referenceId": "line_{{txn.line.custom.lineReferenceId}}",
              "body": {
                "LGK__TransactionId__c": "@{parentTransaction.id}",
                "LGK__ParentTransactionLineId__c": {{#if txn.line.custom.parentLineReferenceId}}"@{line_{{txn.line.custom.parentLineReferenceId}}.id}"{{else}}null{{/if}},
                "LGK__Product2Id__c": "{{txn.line.product.partnerId}}",
                "LGK__Quantity__c": "{{txn.line.quantity}}",
                "LGK__ListPrice__c": "{{txn.line.pricing.list}}",
                "LGK__NetPrice__c": "{{txn.line.pricing.net}}",
                "LGK__NetTotal__c": "{{txn.line.pricing.extendedNet}}"
              }
            }
            {{/if}}
    		{{/each}}
    		{{/if}}
          ]
        }
      ]
    }

    Ce modèle de transformation est ajouté à la zone Modèle de transformation de la section Demander une transformation comme suit :

    Configuration du gestionnaire des transactions

    Pour plus d’informations sur la syntaxe Handlebar, reportez-vous à la section Gestionnaire de transactions : intégrations : syntaxe de Handlebars.

    Débogage de l’appel POST

    Pour utiliser l’interface d’administration d’intégration afin de déboguer un appel POST qui ne fonctionne pas comme prévu, procédez comme suit :

    1. Copiez l’ID de transaction pour lequel l’intégration ne fonctionne pas, collez-le dans la petite zone d’ID de transaction, puis cliquez sur Extraire JSON.

      Configuration du gestionnaire des transactions

      L’application remplit la zone JSON d’exemple de transaction.

      Configuration du gestionnaire des transactions

    2. Cliquez sur Exécuter la transformation. Cela traite les informations de transaction contenues dans l’entrée JSON d’exemple de transaction via la logique de transformation et génère un résultat que vous pouvez tester à l’aide de Postman.

      Pour plus d’informations sur la configuration de Postman pour qu’il s’interface avec votre organisation Salesforce, consultez Connecter Postman à Salesforce.

      Configuration du gestionnaire des transactions