Coupons, Gift Certificates, and Bonus Products

This topic covers less common use cases for working with baskets.

Add a Coupon to a Basket

  1. Configure coupons using the information in Using Coupons as Promotion Qualifiers for B2C Commerce.
  2. Get a guest token.
  3. Create a basket.
  4. Add a coupon to the basket using the addCouponToBasket endpoint.
echo '--> Create basket...'
curl "$BASE_BASKET/baskets?siteId=$SITE" \
 -sSfH "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
"productItems": [{ "quantity": 1, "productId": "750518699585M"}],
"couponItems": [{ "code": "menssuits" }]
}' | jq -r '.couponItems'

For additional code examples, see addCouponToBasket.

Gift Certificates

For gift certificate overview information and how to create a gift certificate, see Gift Certificates.

Use the Shopper Baskets addGiftCertificateItemToBasket endpoint to add a gift certificate to a basket, as shown in the following example:

curl "$BASE_BASKETS/$BASKET_ID/gift-certificate-items?siteId=$SITE" \
   -sS --fail-with-body \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
  -d '{
  "amount": 1,
  "recipientEmail": "miller@salesforce-test.com",
  "shipmentId": "me"
}'

Create a Basket and Add Bonus Products With Choice

  1. Configure the bonus product in Business Manager.
  2. Get a guest token.
  3. Create a basket.
  4. Add one or more products that are associated with a bonus product choice promotion using the createBasket or addItemToBasket endpoint.
  5. After a product is added to the basket, applicable bonus items become available. The basket response includes a property called bonusDiscountLineItems, which is a set of bonus products from which a customer can choose.
  6. Copy the productId and the bonusDiscountLineItemId from the response and use it to select the bonus product using the addItemToBasket endpoint. Quantity is a compulsory field and cannot exceed the number of bonus products allowed in the promotion. In this case, it is 1.
echo '--> Create basket...'
RESPONSE=$(
    curl "$BASE_BASKET/baskets?siteId=$SITE" \
        -sS --fail-with-body \
        -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type: application/json" \
        -d '{"productItems": [{ "quantity": 1, "productId": "750518894553M"}]}'
)
BASKET=$(echo $RESPONSE | jq -r '.basketId')
echo $RESPONSE | jq -r '.bonusDiscountLineItems'
BONUS=$(echo $RESPONSE | jq -r '.bonusDiscountLineItems[0].id')

echo '--> Add the bonus product...'
curl "$BASE_BASKET/baskets/$BASKET/items?siteId=$SITE" \
    -sS --fail-with-body \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d '[{ "quantity": 1, "productId": "793775370033M", "bonusDiscountLineItemId": "'$BONUS'"}]' \
 | jq '.productItems'

The previous script adds a product with bonus products to the basket. The first bonus product available in the bonusDiscountLineItems array is added to the basket.