Magento 2 add configurable, downloadable, bundle and virtual products to cart using GraphQL
In this article, We will learn about how to add configurable products to the cart using Graphql in Magento 2.
In the previous blog, We learned about how to add simple products to cart using GraphQl How to add simple products to cart using GraphQl
Follow the below step to add configurable products to the cart using Graphql in Magento 2.
GraphQL Endpoint: BASE_URL/graphql
Example: http://example.com/graphql
First off, we need to create an empty cart to add products in Magento 2.
We have created an empty cart for the guest user using the following mutation, token is not required for the guest user.
Add a configurable product.
Use the addConfigurableProductsToCart mutation to add configurable products to the shopping cart.
In the following example add one product with configuration options color is red.
Request:
mutation {
addConfigurableProductsToCart(
input: {
cart_id: "SPBJroclB7zT45lgY0stDJmpPnvcsGx2"
cart_items: [{
parent_sku: "configurable"
data: {
quantity: 1,
sku: "configurable-red"
}
}]
}
) {
cart {
items {
id
product {
name
sku
options_container
}
quantity
... on ConfigurableCartItem{
configurable_options{
id
option_label
value_label
value_id
}
}
}
}
}
}
Response:
Execute the mutation through your GraphQL client, and the configurable product will be added to the cart.
{
"data": {
"addConfigurableProductsToCart": {
"cart": {
"items": [
{
"id": "732",
"product": {
"name": "configurable",
"sku": "configurable",
"options_container": "container2"
},
"quantity": 1,
"configurable_options": [
{
"id": 93,
"option_label": "Color",
"value_label": "red",
"value_id": 4
}
]
}
]
}
}
}
}
Add a downloadable product to a cart
Use the addDownloadableProductsToCart mutation to add downloadable products to the shopping cart.
A downloadable product can be anything that you can download as a file, such as an eBook, music or video.
Request:
mutation {
addDownloadableProductsToCart(
input: {
cart_id: "SPBJroclB7zT45lgY0stDJmpPnvcsGx2"
cart_items: {
data: {
sku: "downlodableProdc"
quantity: 1
}
downloadable_product_links: [
{
link_id: 2
}
{
link_id: 5
}
]
}
}
) {
cart {
items {
product {
id
sku
name
}
quantity
... on DownloadableCartItem {
links {
title
price
}
samples {
title
sample_url
}
}
}
}
}
}
Response:
Execute the mutation through your GraphQL client, and the downloadable product will be added to the cart.
{
"data": {
"addDownloadableProductsToCart": {
"cart": {
"items": [
{
"product": {
"id": 76,
"sku": "downlodableProdc",
"name": "downlodableProdc"
},
"quantity": 1,
"links": [
{
"title": "sampleAudio",
"price": 21
},
{
"title": "Sample 2",
"price": 32
}
],
"samples": [
{
"title": "tre",
"sample_url": "https://example.com/downloadable/download/sample/sample_id/1/"
}
]
}
]
}
}
}
}
Add a bundle product to a cart
Use the addBundleProductsToCart mutation to add bundle products to the shopping cart.
This example adds one bundle product to the shopping cart. The SKU of this product bundleProduct
Request:
mutation {
addBundleProductsToCart(
input: {
cart_id: "SPBJroclB7zT45lgY0stDJmpPnvcsGx2"
cart_items: [
{
data: {
sku: "bundleProduct"
quantity: 1
}
bundle_options: [
{
id: 2
quantity: 1
value: [
"4"
]
}
]
},
]
}) {
cart {
items {
id
quantity
product {
sku
name
}
... on BundleCartItem {
bundle_options {
id
label
type
values {
id
label
price
quantity
}
}
}
}
}
}
}
Response:
Execute the mutation through your GraphQL client, and the bundle product will be added to the cart.
{
"data": {
"addBundleProductsToCart": {
"cart": {
"items": [
{
"id": "114",
"quantity": 1,
"product": {
"sku": "bundleProduct",
"name": "bundleProduct"
},
"bundle_options": [
{
"id": 2,
"label": "Simple",
"type": "select",
"values": [
{
"id": 4,
"label": "simple",
"price": 10,
"quantity": 1
}
]
}
]
}
]
}
}
}
}
Add VirtualProduct to a cart
Use the addVirtualProductsToCart mutation to add virtual products to the shopping cart.
A virtual product represents a saleable item that is not physical, such as a membership, service, warranty, or subscription. Virtual products do not need to be shipped or downloaded, nor do they require stock management.
Request:
mutation {
addVirtualProductsToCart(
input: {
cart_id: "pIRMnP9PtmZ7lu3b22mb7niTMnFhu0Nw",
cart_items: [
{
data: {
quantity: 1
sku: "virtualProduct"
}
}
]
}
) {
cart {
items {
product {
name
}
quantity
}
prices {
grand_total {
value
currency
}
}
}
}
}
Response:
Execute the mutation through your GraphQL client, and the virtual product will be added to the cart.
{
"data": {
"addVirtualProductsToCart": {
"cart": {
"items": [
{
"product": {
"name": "virtualProduct"
},
"quantity": 1
}
],
"prices": {
"grand_total": {
"value": 100,
"currency": "USD"
}
}
}
}
}
}
Hope this will help you.
Thanks 🙂
You can check the following blogs related to GraphQl:
How to add simple products to cart using GraphQL