commerce-sdk-isomorphic
The Salesforce Commerce SDK (Isomorphic) allows easy interaction with the B2C Commerce platform’s Shopper APIs on the Node.js runtime and works both in browsers and Node applications. For a Node-based SDK that can access the Admin APIs in addition to the Shopper APIs, see the main Commerce SDK.
Getting Started
Requirements
- Node
^12.x
, ^14.x
, ^16.x
, ^18.x
or ^20.x
Installation
npm install commerce-sdk-isomorphic
Usage
Note: These are required parameters.
Parameter | Description |
---|
clientId | ID of the client account created with Salesforce Commerce. |
organizationId | The unique identifier for your Salesforce identity. |
shortCode | Region-specific merchant ID. |
siteId | Name of the site to access data from, for example, RefArch or SiteGenesis. |
Configure the Isomorphic SDK
import {helpers, ShopperLogin, ShopperSearch} from 'commerce-sdk-isomorphic';
const config = {
proxy: 'https://localhost:3000',
headers: {},
parameters: {
clientId: '<your-client-id>',
organizationId: '<your-org-id>',
shortCode: '<your-short-code>',
siteId: '<your-site-id>',
},
throwOnBadResponse: true,
};
const shopperLogin = new ShopperLogin(config);
const {access_token, refresh_token} = await helpers.loginGuestUser(
shopperLogin,
{redirectURI: `${config.proxy}/callback`}
);
const shopperSearch = new ShopperSearch({
...config,
headers: {authorization: `Bearer ${access_token}`},
});
const searchResult = await shopperSearch.productSearch({
parameters: {q: 'shirt'},
});
CORS
The Salesforce Commerce API (SCAPI) does not support CORS, so a proxy must be used to be able to use the SDK.
Advanced Options
Commerce SDK Isomorphic supports Fetch API options for node-fetch on server and whatwg-fetch on browser with a simple configuration.
This sample code shows how to configure HTTP timeout and agent options.
const https = require('https');
const config = {
proxy: 'https://localhost:3000',
headers: {},
parameters: {
clientId: '<your-client-id>',
organizationId: '<your-org-id>',
shortCode: '<your-short-code>',
siteId: '<your-site-id>',
},
fetchOptions: {
timeout: 2000,
agent: new https.agent({
keepAlive: true,
}),
},
};
Additional Config Settings
headers: A collection of key/value string pairs representing additional headers to include with API requests.
throwOnBadResponse: Default value is false. When set to true, the SDK throws an Error on responses with statuses that are not 2xx or 304.
Public/Private Client Shopper Login (SLAS) helpers
A collection of helper functions are available in this SDK to simplify Public/Private Client Shopper Login OAuth flows. See sample code above for guest login.
⚠️ WARNING ⚠️
Users should be extremely cautious about using the SLAS private client helper functions in the browser as it can expose your client secret. Ensure that your client secret is secured before running the function client side.
Custom Query Parameters
With the introduction of hooks for Commerce APIs, customers can pass custom query parameters through the SDK to be used in their custom hook. Custom query parameters must begin with c_
:
const searchResult = await shopperSearch.productSearch({
parameters: {
q: 'shirt',
c_paramkey: '<param-value>'
},
});
Invalid query parameters that are not a part of the API and do not follow the c_
custom query parameter convention will be filtered from the request and a warning will be displayed.
License Information
The Commerce SDK Isomorphic is licensed under BSD-3-Clause license. See the license for details.