CartJS - Scoped
On this page
CartJS- Scoped
The CartJS API provides methods that enable you to access a user’s shopping cart.
This API runs in the sn_sc namespace. The Service Catalog Scoped API plugin (ID: com.glideapp.servicecatalog.scoped.api) that is enabled by default is required to access the CartJS API.
Parent Topic:Server API reference
CartJS - CartJS(String cartName)
Creates an instance of the CartJS class with the name of a defined cart for the user who is currently logged in.
Name Type Description cartName String Optional. Name of a defined cart for the user who is currently logged in.var cart = new sn_sc.CartJS(cart1);
CartJS - addToCart(Map request)
Adds the request for a catalog item to the current cart.
<table id=“table_ecz_zjy_5z” class=“parameters”><thead><tr><th>
Name
</th><th>
Type
</th><th>
Description
</th></tr></thead><tbody><tr><td>
request
</td><td>
Map
</td><td>
A JSON object that contains the details of the catalog item to be added to the cart.The structure of the request object is:
{ 'sysparm_id': item_id, 'sysparm_quantity': item_quantity, 'variables':{ 'var_name': 'var_value', ... } }
-
item_id: sys_id of the item to be added to the cart
-
item_quantity: Number of items to be added. Default value is 1.
-
var_name: Name of the question.
-
var_value: Value of the answer (Not the display value).
</td></tr></tbody> </table><table id=“table_fcz_zjy_5z” class=“returns”><thead><tr><th>
Type
</th><th>
Description
</th></tr></thead><tbody><tr><td>
JSON
</td><td>
Structure of the current cart. { 'subtotal': value, 'items':[ { itemName:'', quantity:'', price:'', recurring_price:'' } ...] }
</td></tr></tbody> </table>This example shows how you can add multiple items to the cart. Note that var cart = new sn_sc.CartJS(); is inside the loop. You must call sn_sc.CartJS() multiple times to be able to add multiple items to the cart.
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));
}
Output
//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()
Specifies if the current user has the required role to edit the Request for field.
Name Type Description None<table id=“table_ky1_pzt_qbb” class=“returns”><thead><tr><th>
Type
</th><th>
Description
</th></tr></thead><tbody><tr><td>
Boolean
</td><td>
Flag that indicates whether the user has the required role to edit the requested for field.Possible values:
-
true: User has the required role.
-
false: User does not have the required role.
Data type: Boolean
</td></tr></tbody> </table>This background script code example shows how to check if the current user has the role needed to edit the requested for field.
gs.log(sn_sc.CartJS.canViewRF());
Response:
true
CartJS - checkoutCart()
Performs the cart checkout. If the two-step checkout is enabled, returns the order summary. If the two-step checkout is disabled, the cart is submitted and details of the generated request are returned.
Name Type Description None<table id=“table_wqd_hsd_zz” class=“returns”><thead><tr><th>
Type
</th><th>
Description
</th></tr></thead><tbody><tr><td>
JSON
</td><td>
If the two-step checkout is enabled, the summary of the items in the cart is returned. { "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":[{}, {}, ...], …], }
If the two-step checkout is disabled:
{
'request_id' : "sys_id of the generated request",
"request_number" : "Number of the generated request"
}
</td></tr></tbody> </table>“‘ var cart = new sn_sc.CartJS(); var checkoutInfo = cart.checkoutCart(); gs.info(checkoutInfo);
Output
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\(\) Deletes the current cart. |Name|Type|Description| |----|----|-----------| |None| | | |Type|Description| |----|-----------| |void| |
var cart = new sn_sc.CartJS(); cart.empty();
## CartJS - getCartDetails\(\) Returns the cart details. |Name|Type|Description| |----|----|-----------| |None| | | |Type|Description| |----|-----------| |Object|Object pointing to the current cart details.| Example:
var cart=new sn_sc.CartJS(); console.log (cart.getCartDetails());
Output:
delivery_address : “Brasilia,Brasil” name : “DEFAULT” requested_for : “62826bf03710200044e0bfc8bcbe5df1” requested_for_display_name : “Abel Tuter” special_instructions : “” sys_id : “c2ac090087150300318d05a888cb0bd7”
## CartJS - getCartID\(\) Returns the ID of the current cart. |Name|Type|Description| |----|----|-----------| |None| | | |Type|Description| |----|-----------| |String|Sys\_id for the current cart.| Returns the sys\_id of the current cart.
var cart = new sn_sc.CartJS(); var cartId = cart.getCartID(); gs.info(cartId);
Output
039c516237b1300054b6a3549dbe5dfc
## CartJS - getCartItems\(\) Returns a GlideRecord object containing records for items in the current cart. |Name|Type|Description| |----|----|-----------| |None| | | |Type|Description| |----|-----------| |GlideRecord|GlideRecord object including records and fields from the Item \[sc\_cart\_item\] table that describe an item in the current cart.| Returns quantity and Catalog Item field values for items in the current cart.
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()); }
Output
1 x Apple iPhone 6s Plus 1 x Apple iPhone 6s 1 x Apple MacBook Pro 15“
## CartJS - getDeliveryAddress\(\) Returns the delivery address for the current cart. |Name|Type|Description| |----|----|-----------| |None| | | |Type|Description| |----|-----------| |String|Delivery address for the current cart.| Sets and then returns the delivery address for the current cart.
var cart = new sn_sc.CartJS(); cart.setDeliveryAddress(“Brasilia, Brasil”); var deliveryAddress = cart.getDeliveryAddress(); gs.info(deliveryAddress);
Output
Brasilia, Brasil
## CartJS - getRequestedFor\(\) Returns the sys\_id of the user for whom the cart is requested. |Name|Type|Description| |----|----|-----------| |None| | | <table id="table_xds_4ly_5z" class="returns"><thead><tr><th> Type </th><th> Description </th></tr></thead><tbody><tr><td> String </td><td> Sys\_id of the user record for whom the cart is requested.Table: User \[sys\_user\] </td></tr></tbody> </table>Returns the user sys\_id associated with the cart.
var cart = new sn_sc.CartJS(); cart.setRequestedFor(“039c516237b1300054b6a3549dbe5dfc”) var userId = cart.getRequestedFor(); gs.info(userId);
Output:
039c516237b1300054b6a3549dbe5dfc
## CartJS - getRequestedForDisplayName\(\) Returns the name of the user for whom the current cart is requested. |Name|Type|Description| |----|----|-----------| |None| | | <table id="table_z4j_dmy_5z" class="returns"><thead><tr><th> Type </th><th> Description </th></tr></thead><tbody><tr><td> String </td><td> Name of the user for whom the current cart is requested.Table: User \[sys\_user\] </td></tr></tbody> </table>Returns the name of the user associated with the cart.
var cart = new sn_sc.CartJS(); var userName = cart.getRequestedForDisplayName(); gs.info(userName);
Output:
Abel Tuter
## CartJS - getSpecialInstructions\(\) Returns the special instructions for the current cart. |Name|Type|Description| |----|----|-----------| |None| | | |Type|Description| |----|-----------| |String|Special instructions for the current cart.| This example shows how to set and retrieve the special instructions for the current cart.
var cart = new sn_sc.CartJS(); cart.setSpecialInstructions(“Delivery before 8 AM.”); var specInstruction = cart.getSpecialInstructions(); gs.info(specInstruction);
Output
Delivery before 8 AM.
## CartJS - orderNow\(Map request\) Orders a single item. If two-step checkout is enabled, the method adds the specified item to the cart and returns the sys\_id of the cart. If two-step checkout is disabled, the method completes the purchase of the specified item and returns the sys\_id of the generated request. <table id="table_n4w_b4d_zz" class="parameters"><thead><tr><th> Name </th><th> Type </th><th> Description </th></tr></thead><tbody><tr><td> request </td><td> Map </td><td> JSON object that contains details of the catalog item to order. </td></tr><tr><td> request.delivery\_address </td><td> String </td><td> Address to which to deliver the items.Default: Address of user </td></tr><tr><td> request.sysparm\_id </td><td> String </td><td> Required. The sys\_id of the item to purchase. </td></tr><tr><td> request.special\_instructions </td><td> String </td><td> Instructions to follow when processing the order. </td></tr><tr><td> request.sysparm\_quantity </td><td> String </td><td> Quantity of the specified item to purchase.Default: 1 </td></tr><tr><td> request.sysparm\_requested\_for </td><td> String </td><td> The sys\_id of the user for whom the item is requested.Default: Session user </td></tr><tr><td> request.variables </td><td> Array </td><td> Questions and customer answers associated with the item. </td></tr><tr><td> request.variables.var\_name </td><td> String </td><td> Name of the question. </td></tr><tr><td> request.variables.var\_value </td><td> String </td><td> Customer's response to the associated question. </td></tr></tbody> </table><table id="table_o4w_b4d_zz" class="returns"><thead><tr><th> Type </th><th> Description </th></tr></thead><tbody><tr><td> JSON key/value pairs </td><td> Output if two-step checkout is enabled:
{ ‘cart_id’ : ‘<sys_id of the cart to which the items were added>’ }
Output if two-step checkout is disabled:
{ ‘request_id’ : ‘<sys_id of the generated request>’, ‘request_number’ : ‘<Number of the generated request>’ }
</td></tr></tbody> </table>
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);
Output
// 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\) Sets the delivery address for the current cart. |Name|Type|Description| |----|----|-----------| |address|String|Delivery address for the current cart.| |Type|Description| |----|-----------| |void| |
var cart = new sn_sc.CartJS();
cart.setDeliveryAddress("Brasilia, Brasil");
## CartJS - setRequestedFor\(String user\) Sets the sys\_id in the sys\_user record of the user for whom the cart is requested. |Name|Type|Description| |----|----|-----------| |user|String|sys\_id to be set in the sys\_user record of the user for whom the cart is requested.| |Type|Description| |----|-----------| |void| |
var cart = new sn_sc.CartJS(); cart.setRequestedFor(“039c516237b1300054b6a3549dbe5dfc”)
## CartJS - setSpecialInstructions\(String specialInstructions\) Sets the special instructions for the current cart. |Name|Type|Description| |----|----|-----------| |specialInstructions|String|Special instructions for the current cart.| |Type|Description| |----|-----------| |void| |
var cart = new sn_sc.CartJS();
cart.setSpecialInstructions("Delivery before 8 AM.");
## CartJS - submitOrder\(Map request\) Updates special instructions, requested for, and delivery address from the **request** parameter and performs the cart checkout. Use this API to modify the mentioned parameters of the cart and perform the cart checkout simultaneously. Missing parameters in the **request** object will have their default value. <table id="table_ymx_brd_zz" class="parameters"><thead><tr><th> Name </th><th> Type </th><th> Description </th></tr></thead><tbody><tr><td> request </td><td> Map </td><td> JSON object that contains details of the cart to be submitted.
{ ‘special_instructions’: “String”, ‘requested_for’: ‘“String”, ’delivery_address’: “String” }
</td></tr><tr><td> request.special\_instructions </td><td> String </td><td> Special instructions to include with the order. </td></tr><tr><td> request.requested\_for </td><td> String </td><td> Sys\_id of the user who the order is requested for.Default: The current user. Table: User \[sys\_user\] </td></tr><tr><td> request.delivery\_address </td><td> String </td><td> Delivery address for the order. </td></tr></tbody> </table><table id="table_zmx_brd_zz" class="returns"><thead><tr><th> Type </th><th> Description </th></tr></thead><tbody><tr><td> JSON </td><td> Structure of the cart.
{ ‘request_id’ : ‘sys_id of the generated Request’, ‘request_number’ : ‘Number of the generated Request’ }
</td></tr></tbody> </table>The following code example shows how to call this method.
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));
Output:
{“request_id”:“6eed229047801200e0ef563dbb9a71c2”, “request_number”: “REQ0000001”}
## CartJS - updateItem\(Map request, String cart\_item\_id\) Updates an item in the cart. <table id="table_zvx_npd_zz" class="parameters"><thead><tr><th> Name </th><th> Type </th><th> Description </th></tr></thead><tbody><tr><td> request </td><td> Map </td><td> A JSON object that contains details of the catalog item to be updated.The structure of the request object is:
{ ‘sysparm_quantity’ : item_quantity, ‘sysparm_requested_for’ : requested_for, ‘variables’ : { ‘var_name’ : ‘var_value’, … } }
- item\_quantity: Number of items to be added. Default value is 1. - var\_name: Name of the question. - var\_value: Value of the answer \(Not the display value\). </td></tr><tr><td> cart\_item\_id </td><td> String </td><td> sys\_id of the cart item to be modified. </td></tr></tbody> </table><table id="table_awx_npd_zz" class="returns"><thead><tr><th> Type </th><th> Description </th></tr></thead><tbody><tr><td> JSON </td><td> Details of the cart.
{ ‘subtotal’: value, ‘items’:[ { itemName:”, quantity:”, price:”, recurring_price:” } …], … }
</td></tr></tbody> </table>
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);
Output
{ “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” }
“‘
Keep exploring.
Find another answer, or bring this documentation into your own tools.