CartJS - Dans le champ d’application

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 9 minutes de lecture
  • L’API CartJS fournit des méthodes qui vous permettent d’accéder au panier d’achat d’un utilisateur.

    Cette API s’exécute dans l’espace de noms sn_sc . Le module d’extension Service Catalog Scoped API (ID : com.glideapp.servicecatalog.scoped.api), qui est activé par défaut, est requis pour accéder à l’API CartJS .

    CartJS : CartJS(String cartName)

    Crée une instance de la classe CartJS avec le nom d’un panier défini pour l’utilisateur actuellement connecté.

    Tableau 1. Paramètres
    Nom Type Description
    nom du panier Chaîne Facultatif. Nom d’un panier défini pour l’utilisateur actuellement connecté.
    var cart = new sn_sc.CartJS(cart1);

    CartJS : addToCart(demande de carte)

    Ajoute la demande d’un élément de catalogue au panier actuel.

    Tableau 2. Paramètres
    Nom Type Description
    request Carte Un objet JSON qui contient les détails de l’élément de catalogue à ajouter au panier.

    La structure de l’objet de la demande est la suivante :

    {
    'sysparm_id': item_id,
    'sysparm_quantity': item_quantity,
    'variables':{
    'var_name': 'var_value',
    ...
    }
    }
    • item_id : sys_id de l’élément à ajouter au panier
    • item_quantity : nombre d’éléments à ajouter. La valeur par défaut est 1.
    • var_name : Nom de la question.
    • var_value : valeur de la réponse (pas la valeur d’affichage).
    Tableau 3. Renvoie
    Type Description
    JSON Structure du panier actuel.
    {
    'subtotal': value,
    'items':[
    {
    itemName:'',
    quantity:'', 
    price:'', 
    recurring_price:''
    } ...]
    }

    Cet exemple montre comment ajouter plusieurs éléments au panier. Notez que var cart = new sn_sc. CartJS() ; se trouve à l’intérieur de la boucle. Vous devez appeler sn_sc. CartJS() plusieurs fois pour pouvoir ajouter plusieurs articles au panier.

    for (i = 0; i < 2; i++) { 
    var cart = new sn_sc.CartJS();
    var item =
    {
    'sysparm_id': '0d08837237153000158bbfc8bcbe5d02',
    'sysparm_quantity': '1',
    'variables':{
    'carrier': 'at_and_t_mobility',
    'data_plan': '500MB',
    'duration': 'eighteen_months',
    'color': 'slate',
    'storage': 'sixtyfour' 
    }};
    var cartDetails = cart.addToCart(item);
    gs.info(JSON.stringify(cartDetails));
    }

    Sortie

    //The cart after the first item is added
    {
      "cart_id": "c0f5828a1b476010593876a61a4bcb71",
      "subtotal": "$599.99",
      "items": [
        {
          "catalog_item_id": "0d08837237153000158bbfc8bcbe5d02",
          "quantity": "1",
          "localized_price": "$599.99",
          "price": "$599.99",
          "recurring_frequency": "Monthly",
          "localized_recurring_price": "$30.00",
          "recurring_price": "$29.00",
          "item_name": "Apple iPhone 5",
          "cart_item_id": "40f5828a1b476010593876a61a4bcb72"
        }
      ]
    }
    
    //The cart after the second item is added
    {
      "cart_id": "c0f5828a1b476010593876a61a4bcb71",
      "subtotal": "$1,199.98",
      "items": [
        {
          "catalog_item_id": "0d08837237153000158bbfc8bcbe5d02",
          "quantity": "1",
          "localized_price": "$599.99",
          "price": "$599.99",
          "recurring_frequency": "Monthly",
          "localized_recurring_price": "$30.00",
          "recurring_price": "$29.00",
          "item_name": "Apple iPhone 5",
          "cart_item_id": "40f5828a1b476010593876a61a4bcb72"
        },
        {
          "catalog_item_id": "0d08837237153000158bbfc8bcbe5d02",
          "quantity": "1",
          "localized_price": "$599.99",
          "price": "$599.99",
          "recurring_frequency": "Monthly",
          "localized_recurring_price": "$30.00",
          "recurring_price": "$29.00",
          "item_name": "Apple iPhone 5",
          "cart_item_id": "98f5828a1b476010593876a61a4bcb75"
        }
      ]
    }

    CartJS : canViewRF()

    Spécifie si l’utilisateur actuel a le rôle requis pour modifier le champ Demande pour .

    Tableau 4. Paramètres
    Nom Type Description
    Aucun
    Tableau 5. Renvoie
    Type Description
    Booléen Marqueur indiquant si l’utilisateur dispose du rôle requis pour modifier le champ demandé pour.

    Valeurs possibles :

    • true : l’utilisateur a le rôle requis.
    • faux : l’utilisateur ne possède pas le rôle requis.

    Type de données : booléennes

    Cet exemple de code de script en arrière-plan montre comment vérifier si l’utilisateur actuel dispose du rôle nécessaire pour modifier le champ demandé pour.

    gs.log(sn_sc.CartJS.canViewRF());

    Réponse :

    true

    CartJS : checkoutCart()

    Effectue la validation du panier. Si la validation en deux étapes est activée, renvoie le récapitulatif de la commande. Si la validation en deux étapes est désactivée, le panier est envoyé et les détails de la demande générée sont renvoyés.

    Tableau 6. Paramètres
    Nom Type Description
    Aucun
    Tableau 7. Renvoie
    Type Description
    JSON Si la validation en deux étapes est activée, le récapitulatif des éléments dans le panier est renvoyé.
    { "subtotal_price":"",
      "subtotal_recurring_frequency":"",
      "delivery_address":"",
      "special_instructions":"",
      "total_title":"",
      "requested_for_user":"System Administrator",
      "requested_for":"6816f79cc0a8016401c5a33be04be441",
      "daily": ["frequency_subtotal":"", "items":[{}, {}, ...], …],
      "monthly":["frequency_subtotal":"", "items":[{}, {}, ...], …],
      "annually":["frequency_subtotal":"", "items":[{}, {}, ...], …],
      "none":["frequency_subtotal":"", "items":[{}, {}, ...], …],
    }
    Si la validation en deux étapes est désactivée :
    {
      'request_id' : "sys_id of the generated request",
      "request_number" : "Number of the generated request"
    }
    var cart = new sn_sc.CartJS();
    var checkoutInfo = cart.checkoutCart();
    gs.info(checkoutInfo);
    

    Sortie

    If two step checkout enabled:
    {"subtotal_price":"$2,748.49","subtotal_recurring_frequency":"","delivery_address":"","special_instructions":"","total_title":"Total","requested_for_user":"System Administrator","requested_for":"6816f79cc0a8016401c5a33be04be441","weekly":{"subtotal_price":"$399.50","subtotal_recurring_frequency":"Weekly","subtotal_recurring_price":"$0.00","total_title":"Total","items":[{"catalog_item_id":"e90a0f7237153000158bbfc8bcbe5d7f","variables":{},"quantity":"1","localized_price":"$399.50","price":"$399.50","recurring_frequency":"Weekly","localized_recurring_price":"$0.00","recurring_price":"$0.00","item_name":"Brother Network-Ready Color Laser Printer","cart_item_id":"f3f5c9b3c322320076173b0ac3d3ae00","delivery_time":"2 Days"}],"show_subtotal_price":"true","subtotal_title":"Subtotal"},"show_subtotal_price":"true","cart_id":"251c0562c326320076173b0ac3d3aeb4","subtotal_recurring_price":"$131.00","monthly":{"subtotal_price":"$849.99","subtotal_recurring_frequency":"Monthly","subtotal_recurring_price":"$31.00","total_title":"Total","items":[{"catalog_item_id":"d82ea08510247200964f77ffeec6c4ee","variables":{"Monthly data allowance":"500MB","Storage":"64GB","Color":"Space Gray","Is this a replacement for a lost or broken iPhone?":"No","What was the original phone number?":""},"quantity":"1","localized_price":"$799.99","price":"$849.99","recurring_frequency":"Monthly","localized_recurring_price":"$30.00","recurring_price":"$31.00","item_name":"Apple iPhone 6s Plus","cart_item_id":"18c509b3c322320076173b0ac3d3aef4","delivery_time":"2 Days"}],"show_subtotal_price":"true","subtotal_title":"Subtotal"},"yearly":{"subtotal_price":"$1,499.00","subtotal_recurring_frequency":"Annually","subtotal_recurring_price":"$100.00","total_title":"Total","items":[{"catalog_item_id":"774906834fbb4200086eeed18110c737","variables":{"Adobe Photoshop":"false","Adobe Acrobat":"false","Optional Software":"","Additional software requirements":"","Eclipse IDE":"true"},"quantity":"1","localized_price":"$1,499.00","price":"$1,499.00","recurring_frequency":"Annually","localized_recurring_price":"$100.00","recurring_price":"$100.00","item_name":"Developer Laptop (Mac)","cart_item_id":"6306c9b3c322320076173b0ac3d3ae89","delivery_time":"5 Days"}],"show_subtotal_price":"true","subtotal_title":"Subtotal"},"subtotal_title":"Subtotal"}
    If two step checkout disabled:
    {"request_number":"REQ0010001","request_id":"2f2789f3c322320076173b0ac3d3ae62"}
    

    CartJS - empty()

    Supprime le panier actuel.

    Tableau 8. Paramètres
    Nom Type Description
    Aucun
    Tableau 9. Renvoie
    Type Description
    nul
    var cart = new sn_sc.CartJS();
          cart.empty();

    CartJS : getCartDetails()

    Renvoie les détails du panier.

    Tableau 10. Paramètres
    Nom Type Description
    Aucun
    Tableau 11. Renvoie
    Type Description
    Objet Objet pointant vers les détails du panier actuel.

    Exemple :

    var cart=new sn_sc.CartJS();
    	console.log (cart.getCartDetails());

    Sortie :

    delivery_address : "Brasilia,Brasil" 
            name : "DEFAULT" 
            requested_for : "62826bf03710200044e0bfc8bcbe5df1" 
            requested_for_display_name : "Abel Tuter" 
            special_instructions : "" 
            sys_id : "c2ac090087150300318d05a888cb0bd7" 
    

    CartJS : getCartID()

    Renvoie l’ID du panier actuel.

    Tableau 12. Paramètres
    Nom Type Description
    Aucun
    Tableau 13. Renvoie
    Type Description
    Chaîne Sys_id du panier actuel.

    Renvoie l’sys_id du panier actuel.

    var cart = new sn_sc.CartJS();
    var cartId = cart.getCartID();
    gs.info(cartId);

    Sortie

    039c516237b1300054b6a3549dbe5dfc

    CartJS : getCartItems()

    Renvoie un objet GlideRecord contenant des enregistrements pour les éléments du panier actuel.

    Tableau 14. Paramètres
    Nom Type Description
    Aucun
    Tableau 15. Renvoie
    Type Description
    GlideRecord Objet GlideRecord incluant les enregistrements et les champs de la table Élément [sc_cart_item] qui décrivent un élément dans le panier actuel.

    Renvoie les valeurs du champ Quantité et Élément de catalogue pour les éléments du panier actuel.

    var cart = new sn_sc.CartJS();
    
    var cartItems = cart.getCartItems();
    while (cartItems.next()) {
      gs.info(cartItems.getElement('quantity').getDisplayValue()
      + " x "
      + cartItems.getElement('cat_item').getDisplayValue());
    }

    Sortie

    
    1 x Apple iPhone 6s Plus
    1 x Apple iPhone 6s
    1 x Apple MacBook Pro 15"

    CartJS : getDeliveryAddress()

    Renvoie l’adresse de livraison du panier actuel.

    Tableau 16. Paramètres
    Nom Type Description
    Aucun
    Tableau 17. Renvoie
    Type Description
    Chaîne Adresse de livraison du panier actuel.

    Définit, puis renvoie l’adresse de livraison du panier actuel.

    var cart = new sn_sc.CartJS();
    cart.setDeliveryAddress("Brasilia, Brasil");
    var deliveryAddress = cart.getDeliveryAddress();
    gs.info(deliveryAddress);

    Sortie

    Brasilia, Brasil

    CartJS : getRequestedFor()

    Renvoie le sys_id de l’utilisateur pour lequel le panier est demandé.

    Tableau 18. Paramètres
    Nom Type Description
    Aucun
    Tableau 19. Renvoie
    Type Description
    Chaîne Sys_id de la fiche utilisateur pour laquelle le panier est demandé ; situé dans la table Utilisateur [sys_user].

    Renvoie l’utilisateur sys_id associé au panier.

    var cart = new sn_sc.CartJS();
    cart.setRequestedFor("039c516237b1300054b6a3549dbe5dfc")
    var userId = cart.getRequestedFor();
    gs.info(userId);

    Sortie

    039c516237b1300054b6a3549dbe5dfc

    CartJS : getRequestedForDisplayName()

    Renvoie le nom de l’utilisateur pour lequel le panier actuel est demandé.

    Tableau 20. Paramètres
    Nom Type Description
    Aucun
    Tableau 21. Renvoie
    Type Description
    Chaîne Nom de l’utilisateur pour lequel le panier actuel est demandé ; situé dans la table Utilisateur [sys_user].

    Renvoie le nom de l’utilisateur associé au panier.

    var cart = new sn_sc.CartJS();
    var userName = cart.getRequestedForDisplayName();
    gs.info(userName);

    Sortie

    Abel Tuter

    CartJS : getSpecialInstructions()

    Renvoie les instructions spéciales pour le panier actuel.

    Tableau 22. Paramètres
    Nom Type Description
    Aucun
    Tableau 23. Renvoie
    Type Description
    Chaîne Instructions spéciales pour le panier actuel.

    Cet exemple montre comment définir et récupérer les instructions spéciales pour le panier actuel.

    var cart = new sn_sc.CartJS();
    cart.setSpecialInstructions("Delivery before 8 AM.");
    var specInstruction = cart.getSpecialInstructions();
    gs.info(specInstruction);

    Sortie

    Delivery before 8 AM.

    CartJS : orderNow (demande de carte)

    Commande un seul élément. Si la validation en deux étapes est activée, la méthode ajoute l’élément spécifié au panier et renvoie la sys_id du panier. Si la validation en deux étapes est désactivée, la méthode finalise l’achat de l’élément spécifié et renvoie le sys_id de la demande générée.

    Tableau 24. Paramètres
    Nom Type Description
    request Carte Objet JSON contenant les détails de l’élément de catalogue à commander.
    request.delivery_address Chaîne Adresse à laquelle livrer les éléments.

    Par défaut : adresse de l’utilisateur

    request.sysparm_id Chaîne Requis. La sys_id de l’élément à acheter.
    request.special_instructions Chaîne Instructions à suivre lors du traitement de la commande.
    request.sysparm_quantity Chaîne Quantité de l’élément spécifié à acheter.

    Valeur par défaut : 1

    request.sysparm_requested_for Chaîne sys_id de l’utilisateur pour lequel l’élément est demandé.

    Par défaut : utilisateur de la session

    demande.variables Tableau Questions et réponses du client associées à l’élément.
    request.variables.var_name Chaîne Nom de la question.
    request.variables.var_value Chaîne Réponse du client à la question associée.
    Tableau 25. Renvoie
    Type Description
    Paires clé/valeur JSON Sortie si la validation en deux étapes est activée :
    {
      'cart_id' : '<sys_id of the cart to which the items were added>'
    }

    Sortie si la validation en deux étapes est désactivée :

    {
      'request_id' : '<sys_id of the generated request>',
      'request_number' : '<Number of the generated request>'
    }
    
    var cart = new sn_sc.CartJS();
    var request =
    {
      'sysparm_id': '0d08837237153000158bbfc8bcbe5d02',
      'sysparm_quantity': '1',
      'variables':{
        'carrier': 'at_and_t_mobility',
        'data_plan': '500MB',
        'duration': 'eighteen_months',
        'color': 'slate',
        'storage': 'sixtyfour'
      }
    }
    var cartDetails = cart.orderNow(request);
    gs.info(cartDetails);

    Sortie

    
    // If two-step checkout is enabled:
    {"cart_id":"55384df3c322320076173b0ac3d3aec5"}
    
    // If two-step checkout is disabled:
    {"request_id":"4c690137c322320076173b0ac3d3ae03", "request_number": "REQ0010003"}

    CartJS : setDeliveryAddress(String address)

    Définit l’adresse de livraison du panier actuel.

    Tableau 26. Paramètres
    Nom Type Description
    adresse Chaîne Adresse de livraison du panier actuel.
    Tableau 27. Renvoie
    Type Description
    nul
    
          var cart = new sn_sc.CartJS();
          cart.setDeliveryAddress("Brasilia, Brasil"); 
          

    CartJS : setRequestedFor(utilisateur de chaîne)

    Définit le sys_id dans l’enregistrement de sys_user de l’utilisateur pour lequel le panier est demandé.

    Tableau 28. Paramètres
    Nom Type Description
    utilisateur Chaîne sys_id à définir dans l’enregistrement sys_user de l’utilisateur pour lequel le panier est demandé.
    Tableau 29. Renvoie
    Type Description
    nul
    
    var cart = new sn_sc.CartJS();
    cart.setRequestedFor("039c516237b1300054b6a3549dbe5dfc")
    

    CartJS - setSpecialInstructions(String specialInstructions)

    Définit les instructions spéciales pour le panier actuel.

    Tableau 30. Paramètres
    Nom Type Description
    Instructions spéciales Chaîne Instructions spéciales pour le panier actuel.
    Tableau 31. Renvoie
    Type Description
    nul
    
          var cart = new sn_sc.CartJS();
          cart.setSpecialInstructions("Delivery before 8 AM."); 
       

    CartJS : submitOrder(demande de carte)

    Met à jour les instructions spéciales, la demande et l’adresse request de livraison à partir du paramètre et vérifie le panier. Utilisez cette API pour modifier les paramètres mentionnés du panier et effectuer le paiement simultanément. Les paramètres manquants dans l’objet request auront leur valeur par défaut.

    Tableau 32. Paramètres
    Nom Type Description
    request Carte Objet JSON qui contient les détails du panier à soumettre.
    {
      'special_instructions': "String",
      'requested_for': '"String",
      'delivery_address': "String"
    }
    request.special_instructions Chaîne Instructions spéciales à inclure dans la commande.
    request.requested_for Chaîne Sys_id de l’utilisateur pour lequel la commande est demandée. Situé dans la table Utilisateur [sys_user].

    Par défaut : l’utilisateur actuel.

    request.delivery_address Chaîne Adresse de livraison de la commande.
    Tableau 33. Renvoie
    Type Description
    JSON Structure du panier.
    {
      'request_id' : 'sys_id of the generated Request',
      'request_number' : 'Number of the generated Request'
    }

    Exemple :

    var cart = new sn_sc.CartJS();
    var request =
    {
      'special_instructions' : 'Delivery only in working hours',
      'requested_for' : '62826bf03710200044e0bfc8bcbe5df1',
      'delivery_address' : "Brasilia, Brasil",
    };
    var requestDetails = cart.submitOrder(request);
    gs.info(JSON.stringify(requestDetails));

    Sortie :

    {"request_id":"6eed229047801200e0ef563dbb9a71c2", "request_number": "REQ0000001"}

    CartJS : updateItem(demande de carte, chaîne cart_item_id)

    Met à jour un élément dans le panier.

    Tableau 34. Paramètres
    Nom Type Description
    request Carte Objet JSON contenant les détails de l’élément de catalogue à mettre à jour.

    La structure de l’objet de la demande est la suivante :

    {
        'sysparm_quantity' : item_quantity,
      'sysparm_requested_for' : requested_for,
      'variables' : {
        'var_name' : 'var_value',
        ...
      }
    }
    • item_quantity : nombre d’éléments à ajouter. La valeur par défaut est 1.
    • var_name : Nom de la question.
    • var_value : valeur de la réponse (pas la valeur d’affichage).
    cart_item_id Chaîne sys_id de l’élément du panier à modifier.
    Tableau 35. Renvoie
    Type Description
    JSON Détails du panier.
    {
      'subtotal': value,
      'items':[
        {
        itemName:'',
        quantity:'',
        price:'',
        recurring_price:''
        }
        ...],
      ...
    }
    var cart = new sn_sc.CartJS();
    var request =
    {
      'sysparm_quantity': '1',
      'variables':{
        'carrier': 'at_and_t_mobility',
        'data_plan': '500MB',
        'duration': 'eighteen_months',
        'color': 'slate',
        'storage': 'sixtyfour'
      }
    };
    var cart_item_id = "4d69b672c322320076173b0ac3d3ae79";
    var cartDetails = cart.updateItem(request, cart_item_id);
    gs.info(cartDetails);
    

    Sortie

    
    { "cart_id":"35ec9e8947a13200e0ef563dbb9a7109", "items":[ { "cart_item_id":"35ec9e8947a13200e0ef563dbb9a710a", "catalog_item_id":"0d08837237153000158bbfc8bcbe5d02", "item_name":"Apple iPhone 5", "localized_price":"$799.99", "localized_recurring_price":"$30.00", "price":"$799.99", "quantity":"1", "recurring_frequency":"Monthly", "recurring_price":"$29.00" } ] "subtotal":"$799.99" }