Dedicated to the Hydrogen framework, headless commerce, and building custom storefronts using the Storefront API.
I'm using version 2021-10 (release candidate) of the api to create a shopping cart. The cart is created, but it's always empty. If I intentionally set the merchandiseId to an invalid value, it correctly reports a user error for an invalid merchandiseId. When I use a valid merchandiseId, the cart is created but contains an empty lines array.
My query:
mutation ($id: ID!, $auth: String!, $email: String!) {
cartCreate(input: {
lines: [
{
merchandiseId: $id,
quantity: 1,
attributes: [
{
key: "AuthenticationCode",
value: $auth
}
]
}
],
buyerIdentity: {
email: $email
}
})
{
cart {
id
checkoutUrl
lines(first: 5) {
edges {
node {
id
merchandise {
... on ProductVariant {
id
}
}
}
}
}
}
userErrors {
code
field
message
}
}
}
And the query variables:
{
"id":"<variantId>",
"auth":"F54596DE5C661DBDB8A4",
"email":"[email protected]"
}
I get the response:
{
"data": {
"cartCreate": {
"cart": {
"id": "Z2lkOi8vc2hvcGlmeS9DYXJ0L2RiNmJiNGFhZjYyZDg1YjMxZTJkYmY2YTgxZTY4MDJj",
"checkoutUrl": "https:\/\/fs-recurring-billing-sandbox.myshopify.com\/cart\/c\/db6bb4aaf62d85b31e2dbf6a81e6802c",
"lines": {
"edges": []
}
},
"userErrors": []
}
}
}
Can anyone see a problem with this? I've tried everything I can think of.
Solved! Go to the solution
This is an accepted solution.
The item I was adding to the cart was a subscription-only variant. As such, it was required to include a sellingPlanId with the line item as below.
cartCreate(input: {
lines: [
{
merchandiseId: $id,
quantity: 1,
attributes: [
{
key: "AuthenticationCode",
value: $auth
}
],
sellingPlanId: $sellingPlanId
}
],
buyerIdentity: {
email: $email
}
})
All possible sellingPlans can be found with a product query:
{
products(first: 4, query: "title:'My subscription Product'") {
edges {
node {
title
handle
id
variants(first: 5) {
edges {
node {
title
id
priceV2 {
amount
}
sku
sellingPlanAllocations(first: 5) {
edges {
node {
sellingPlan {
id
name
options {
name
value
}
}
}
}
}
}
}
}
}
}
pageInfo {
hasNextPage
}
}
}
I decided to check for an empty cart after creation, and if it is empty, then use a cartLinesAdd mutation to add the line item. Same result. The query succeeds, but the cart is still empty.
This is an accepted solution.
The item I was adding to the cart was a subscription-only variant. As such, it was required to include a sellingPlanId with the line item as below.
cartCreate(input: {
lines: [
{
merchandiseId: $id,
quantity: 1,
attributes: [
{
key: "AuthenticationCode",
value: $auth
}
],
sellingPlanId: $sellingPlanId
}
],
buyerIdentity: {
email: $email
}
})
All possible sellingPlans can be found with a product query:
{
products(first: 4, query: "title:'My subscription Product'") {
edges {
node {
title
handle
id
variants(first: 5) {
edges {
node {
title
id
priceV2 {
amount
}
sku
sellingPlanAllocations(first: 5) {
edges {
node {
sellingPlan {
id
name
options {
name
value
}
}
}
}
}
}
}
}
}
}
pageInfo {
hasNextPage
}
}
}