Point of Sale - SFCC (Salesforce Commerce) Integration

Use the cartridge integration and OCAPI’s to expose Salesforce Commerce's endless aisle functionality. POS integrates with Salesforce Commerce (SFCC) via OCAPI’s interfaces. This approach lets SFCC build and manage the cart (tax, promos). Point of Sale is a Salesforce-certified commerce integrator and is certified for OCAPI 21 integration. There is also a cartridge with default hooks for customization for client needs.

Prerequisites

Refer to POS Access List - URLs and IP Addresses for a list of URLs and IP addresses to allowlist, which turns on necessary communication.

POS Flows

  • Store associate placing a guest order
  • Store associate placing an order on behalf of the customer
  • Pulling commerce order history
  • Store associates can sign up a new customer on commerce
  • Store associate doing clienteling using Commerce customer list

Point of Sale + SFCC via OCAPI - OMNI Use Cases

The items listed before lists the support capabilities of SFCC via OCAPI with Retail Cloud's omnichannel solutions.

  • Real time inventory visibility between POS & E-commerce - Supported
  • Endless Aisle - Supported
  • Mixed Cart - Not Supported
  • Buy Online, Return In-Store (BORIS) - Supported
  • Buy Online, Pickup In-Store (BOPIS) - Not Supported
  • Buy Online, Ship From Store (BOSIS) - Not Supported

Reference Architecture

The architecture of the integration between Point of Sale and the Commerce shop API

POS UI - SFCC Mapping

POS Screens Point of Sale Object APIs
  • Customer Search
  • Clienteling Screen/Customer Profile
  • Create New Customer SignUp
  • Update Customer Profile
  • Customer wishlist
Customer

CustomerLists Resource (Data API)

Customers Resources

  • Checkout
Cart SHOP APIs - Basket Resources
  • Order Search
  • Order Details
Order

Order Search Resources

Order Resources

SFCC Integration Details

Check this Salesforce Commerce documentation here for Authentication.

Salesforce Commerce APIs

Get details of the Salesforce Commerce APIs

Authentication

To access the OCAPI resources we need a client id and the password (Obtain a Client Credentials grant). This client id and password is used to generate the OAuth token. This token can be used to place an order as a guest. If the customer is logging himself and placing an order these credentials will work. In the case of POS apps the store associate will be logging on behalf of the customer so we need alleviated business manager access. (Obtain a Business Manager user grant).

Authorization: This is controlled using the OCAPI settings. In the Point of Sale cartridge there is a copy of required permissions and ocapi settings json file.

For retrieving OCAPI endpoints Point of Sale calls, it can be found by referring API Logs in CMS. Please reach out to your Customer Success Manager for more information.

SHOP APIs - Basket Resources

This table list all the basket resources that are accessed to place an order.

HTTP Method Resource Description
POST /baskets Create a basket
GET /baskets/{basket_id} Get a basket
PATCH /baskets/{basket_id} Updates a basket
DELETE /baskets/{basket_id} Remove a basket
PUT /baskets/{basket_id}/billing_address Sets the billing address of a basket
POST /baskets/{basket_id}/coupons Adds a coupon to an existing basket
DELETE /baskets/{basket_id}/coupons/{coupon_item_id} Removes a coupon from the basket
PUT /baskets/{basket_id}/customer Sets customer information for an existing basket
POST /baskets/{basket_id}/gift_certificate_items Adds a gift certificate item to an existing basket
DELETE /baskets/{basket_id}/gift_certificate_items/{gift_certificate_item_id} Deletes a gift certificate item from an existing basket
PATCH /baskets/{basket_id}/gift_certificate_items/{gift_certificate_item_id} Updates a gift certificate item of an existing basket
POST /baskets/{basket_id}/items Adds new items to a basket
PATCH /baskets/{basket_id}/items/{item_id} Updates an item in a basket
DELETE /baskets/{basket_id}/items/{item_id} Removes a product item from the basket
POST /baskets/{basket_id}/payment_instruments Adds a payment instrument to a basket
PATCH /baskets/{basket_id}/payment_instruments/{payment_instrument_id} Updates a payment instrument of a basket
DELETE /baskets/{basket_id}/payment_instruments/{payment_instrument_id} Removes a payment instrument from a basket
GET /baskets/{basket_id}/payment_methods Gets applicable payment methods for an existing basket considering the open payment amount only
POST /baskets/{basket_id}/price_adjustments Adds a custom manual price adjustment to the basket
DELETE /baskets/{basket_id}/price_adjustments/{price_adjustment_id} Removes a custom manual price adjustment from the basket
PATCH /baskets/{basket_id}/price_adjustments/{price_adjustment_id} Updates a custom manual price adjustment on the basket
POST /baskets/{basket_id}/shipments Creates a new shipment for a basket
PATCH /baskets/{basket_id}/shipments/{shipment_id} Updates a shipment for a basket
DELETE /baskets/{basket_id}/shipments/{shipment_id} Removes a specified shipment
PUT /baskets/{basket_id}/shipments/{shipment_id}/shipping_address Sets a shipping address of a specific shipment of a basket
PUT /baskets/{basket_id}/shipments/{shipment_id}/shipping_method Sets a shipping method to a specific shipment of a basket
GET /baskets/{basket_id}/shipments/{shipment_id}/shipping_methods Gets the applicable shipping methods for a certain shipment of a basket

CustomerLists Resource (Data API)

HTTP Method Resource Description
POST /customer_lists/{customer_list_id}/customer_search Used for Clientelling in Customer Search

Customers Resources

HTTP Method Resource Description
POST /customers Registers a customer
DELETE /customers/auth Invalidates the JWT provided in the header
PATCH /customers/{customer_id} Updates a customer
GET /customers/{customer_id}/addresses Returns a sorted pageable list of all customer addresses in the address book.
POST /customers/{customer_id}/addresses Creates a new address with the given name for the given customer
GET /customers/{customer_id}/addresses/{address_name} Retrieves a customer's address by address name
DELETE /customers/{customer_id}/addresses/{address_name} Deletes a customer's address by address name
PATCH /customers/{customer_id}/addresses/{address_name} Updates a customer's address by address name
POST /customers/{customer_id}/auth Obtains a new agent on behalf of a registered customer
GET /customers/{customer_id}/baskets Get the baskets of a customer
GET /customers/{customer_id}/orders Returns a pageable list of all customer's orders. The default page size is 10
POST /customers/{customer_id}/password_reset Starts a password reset process
POST /customers/{customer_id}/product_lists Creates a customer product list
GET /customers/{customer_id}/product_lists/{list_id} Returns a customer product list of the given customer
GET /customers/{customer_id}/product_lists/{list_id}/items Returns a pageable list of all items of a customer's product list. The default page size is 10.
POST /customers/{customer_id}/product_lists/{list_id}/items Adds an item to the customer's product list
GET /customers/{customer_id}/product_lists/{list_id}/items/{item_id} Returns an item of a customer product list
DELETE /customers/{customer_id}/product_lists/{list_id}/items/{item_id} Removes an item from a customer product list

Order Resources

HTTP Method Resource Description
POST /orders Submits an order based on a prepared basket
GET /orders/{order_no} Get information for an order
PATCH /orders/{order_no} Update an order
PATCH /orders/{order_no}/payment_instruments/{payment_instrument_id} Updates a payment instrument of an order