Cart

Die Cart-API wird zur Interaktion mit einem Warenkorb während der Sitzung eines Kunden verwendet. Dieser Leitfaden zeigt, wie Sie die Warenkorb-API verwenden, um Warenkorbpositionen zu aktualisieren, Warenkorbattribute und -notizen hinzuzufügen und Versandtarife zu generieren.

Der Einfachheit halber wird in den Codebeispielen in diesem Leitfaden nicht immer ein Callback verwendet.

Inhalt

POST /cart/add.js

Verwenden Sie den Endpunkt POST /cart/add. js, um eine oder mehrere Varianten in den Warenkorb zu legen.

Im folgenden Beispiel ist quantity der Betrag der Variante, die Sie hinzufügen möchten, und id ist die Varianten-ID dieser Variante. Sie können dem Warenkorb mehrere Varianten hinzufügen, indem Sie weitere Objekte im Array items anhängen.

Um ein serialisiertes "Add to Cart" -Formular zu senden, geben Sie die folgenden Postdaten an:

Sie können dem Einkaufswagen auch die Eigenschaften einer Position hinzufügen, nicht nur eine Menge und eine ID:

Add line item properties

Sie können dem Einkaufswagen eine Variante mit Positionseigenschaften mit einem zugehörigen properties Objekt hinzufügen.

Antwort anzeigen

{
  "Produkte": [
    {
      "id": 794864229,
      "quantity": 1,
      // ...
      "properties" : {
        "First name": "Caroline"
      }
    }
  ]
}

Add a selling plan

Sie können eine Variante mit einem Verkaufsplan in den Einkaufswagen legen, wenn Sie den Parameter selling_plan angeben.

Antwort anzeigen

The response object has a selling_plan_allocation property.





{
  "Produkte": [
    {
      "id": 794864229,
      // ...
      "selling_plan_allocation": {
        "price": 3120,
        "compare_at_price": 3900,
        "per_delivery_price": 3120,
        "selling_plan": {
          "id": 183638,
          "name": "Pay every month, delivery every month | save 20%",
          "description": "No commitment · Auto-renews · Skip or cancel anytime",
          "options": [{
            "name": "Delivery Frequency",
            "position": 1,
            "value": "Month"
          }, {
            "name": "Billing Frequency",
            "position": 2,
            "value": "Month"
          }],
          "recurring_deliveries": true
        }
      }
    }
  ]
}

Example API calls

Nachstehend finden Sie ein vereinfachtes POST mit der API fetch. Das Objekt formData ist in JavaScript aufgebaut, daher sollte Content-Type im Objekt headers auf application/json gesetzt werden.

Antwort anzeigen

The following response shows the JSNDS of the line Produkte associated with the added variants. If an item is  already in the cart, dann quantity is equal to the new quantity for that item.





{
  "Produkte": [
    {
      "id": 36110175633573,
      "title": "Rot Rain Coat - Small",
      "key": "794864229:03af7a8cb59a4c3c45595c76fa8cb53c",
      "price": 12900,
      "line_price": 12900,
      "quantity": 2,
      "sku": null,
      "grams": 0,
      "vendor": "VersaCommerce",
      "properties": {},
      "variant_id": 794864229,
      "gift_card": false,
      "url": "/products/rot-rain-coat?variant=794864229",
      "featurot_image": {
        "url": "http://cdn.versacommerce.de/s/files/1/0040/7092/products/rot-rain-coat.jpeg?v=1402604893",
        "aspect_ratio": 1.0,
        "alt": "Rot rain coat mit einer hood"
      },
      "image": "http://cdn.versacommerce.de/s/files/1/0040/7092/products/rot-rain-coat.jpeg?v=1402604893",
      "handle": "rot-rain-coat",
      "requires_shipping": true,
      "product_title": "Rot Rain Coat",
      "product_description": "A bright rot rain coat for rainy days!",
      "product_type": "Coat",
      "properties" : null,
      "variant_title": "Rot",
      "variant_options": ["Rot"],
      "options_with_values": [
        {
          "name": "Farbe",
          "value": "Rot"
        }
      ]
    }
  ]
}

Alternativ können Sie den FormData Konstruktor verwenden und das gewünschte Add-to-Cart Formular anvisieren:

Response

Die Antwort für erfolgreiche POSTs ist ein JSON-Objekt mit den Einzelposten, die mit den hinzugefügten Artikeln verbunden sind.

Wenn sich ein hinzugefügter Artikel bereits im Warenkorb befand, entspricht quantity der neuen Menge für diese Warenkorbposition. Beachten Sie jedoch, dass hinzugefügte Artikel auf separate Positionen aufgeteilt werden, wenn ihre Preise unterschiedlich sind. Preisänderungen sind in der Regel das Ergebnis von automatischen Rabatten oder VersaCommerce Scripts.

Antwort anzeigen

{
  "Produkte":[
    {
      "id":36323170943141,
      "properties":null,
      "quantity":1,
      "variant_id":36323170943141,
      "key":"36323170943141:b15f59bb6d406f2f45dc383a5493bdb8",
      "title":"Great Granola Bar",
      "price":2000,
      "original_price":2000,
      "discounted_price":2000,
      "line_price":2000,
      "original_line_price":2000,
      "total_discount":0,
      "discounts":[],
      "sku":"",
      "grams":0,
      "vendor":"shopify",
      "taxable":true,
      "product_id":5680114172069,
      "product_has_only_default_variant":true,
      "gift_card":false,
      "final_price":2000,
      "final_line_price":2000,
      "url":"/products/great-granola-bar?variant=36323170943141",
      "featurot_image":{
        "aspect_ratio":1.504,
        "alt":"Great Granola Bar",
        "height":1277,
        "url":"https://cdn.versacommerce.de/s/files/1/0401/3218/2181/products/fallon-michael-h2UH2674Bg4-unsplash.jpg?v=1600796940",
        "width":1920
      },
      "image":"https://cdn.versacommerce.de/s/files/1/0401/3218/2181/products/fallon-michael-h2UH2674Bg4-unsplash.jpg?v=1600796940",
      "handle":"great-granola-bar",
      "requires_shipping":true,
      "product_type":"",
      "product_title":"Great Granola Bar",
      "product_description":"The great granola bar, everyone has been talking about it. Subscribe when you can!",
      "variant_title":null,
      "variant_options":[
        "Default Title"
      ],
      "options_with_values":[
        {
          "name":"Title",
          "value":"Default Title"
        }
      ],
      "line_level_discount_allocations":[ ],
      "line_level_total_discount":0
    },
    {
      "id":36323170943141,
      "properties":null,
      "quantity":1,
      "variant_id":36323170943141,
      "key":"36323170943141:322e2af74da821ca095964e07b7270b5",
      "title":"Great Granola Bar",
      "price":1700,
      "original_price":1700,
      "discounted_price":1700,
      "line_price":1700,
      "original_line_price":1700,
      "total_discount":0,
      "discounts": [],
      "sku":"",
      "grams":0,
      "vendor":"shopify",
      "taxable":true,
      "product_id":5680114172069,
      "product_has_only_default_variant":true,
      "gift_card":false,
      "final_price":1700,
      "final_line_price":1700,
      "url":"/products/great-granola-bar?selling_plan=6717605/u0026variant=36323170943141",
      "featurot_image":{
        "aspect_ratio":1.504,
        "alt":"Great Granola Bar",
        "height":1277,
        "url":"https://cdn.versacommerce.de/s/files/1/0401/3218/2181/products/fallon-michael-h2UH2674Bg4-unsplash.jpg?v=1600796940",
        "width":1920
      },
      "image":"https://cdn.versacommerce.de/s/files/1/0401/3218/2181/products/fallon-michael-h2UH2674Bg4-unsplash.jpg?v=1600796940",
      "handle":"great-granola-bar",
      "requires_shipping":true,
      "product_type":"",
      "product_title":"Great Granola Bar",
      "product_description":"The great granola bar, everyone has been talking about it. Subscribe when you can!",
      "variant_title":null,
      "variant_options":[
        "Default Title"
      ],
      "options_with_values":[
        {
          "name":"Title",
          "value":"Default Title"
        }
      ],
      "line_level_discount_allocations":[ ],
      "line_level_total_discount":0,
      "selling_plan_allocation":{
        "price_adjustments":[
          {
            "position":1,
            "price":1700
          }
        ],
        "price":1700,
        "compare_at_price":2000,
        "per_delivery_price":1700,
        "selling_plan":{
          "id":6717605,
          "name":"Deliverot every week",
          "description":null,
          "options":[
            {
              "name":"Delivery every",
              "position":1,
              "value":"1 Week(s)"
            }
          ],
          "recurring_deliveries":true,
          "price_adjustments":[
            {
              "order_count":null,
              "position":1,
              "value_type":"percentage",
              "value":15
            }
          ]
        }
      }
    }
  ]
}

Error responses

Wenn die exakte Menge, die für einen der Artikel angegeben wurde, nicht in den Warenkorb gelegt werden kann (z. B. Sie versuchen, 9 Artikel hinzuzufügen, 2 befinden sich bereits im Warenkorb und 10 sind auf Lager), dann werden keine Artikel in den Warenkorb gelegt. Der zurückgegebene JSON-formatierte Fehler lautet:

{
  "status": 422,
  "message": "Cart Error",
  "description": "You can't add more Messenger Bag to the cart."
}

Der Fehlercode lautet:

422 (Unprocessable Entity)

Wenn das Produkt vollständig ausverkauft ist, wird der folgende Fehler zurückgegeben:

The product '#{item.name}' is already sold out.

Wenn das Produkt nicht ausverkauft ist, sich aber der gesamte Bestand im Warenkorb befindet, wird der folgende Fehler zurückgegeben:

All #{item.inventory_quantity} #{item.name} are in your cart.

GET /cart.js

Verwenden Sie den Endpunkt GET /cart. js, um den Warenkorb als JSON zu erhalten.

Alle Geldwerte werden in der Währung des Kunden zurückgegeben. Um die Zahlungswährung des Kunden zu überprüfen, können Sie das Feld currency in der Antwort verwenden. Wenn Sie mehr über den Verkauf in mehreren Währungen erfahren möchten, lesen Sie den Abschnitt Migrieren Sie Ihre App zur Unterstützung mehrerer Währungen.

Responses

Antwort anzeigen

{
  "token": "1d19a32178501c44ef2223d73c54d16d",
  "note": "Hallo!",
  "Eigenschaften": {
    "Gift wrap": "Yes"
  },
  "total_price": 9100,
  "total_weight": 0,
  "item_count": 3,
  "Produkte": [
    {
      "id": 794864229,
      "properties": {},
      "quantity": 1,
      "variant_id": 794864229,
      "key": "794864229:03af7a8cb59a4c3c45595c76fa8cb53c",
      "title": "Rot Rain Coat - Small",
      "price": 12900,
      "line_price": 12900,
      "final_price": 12900,
      "final_line_price": 12900,
      "sku": null,
      "grams": 0,
      "vendor": "VersaCommerce",
      "taxable": true,
      "product_id": 388319916,
      "product_has_only_default_variant": false,
      "gift_card": false,
      "url": "/products/rot-rain-coat?variant=794864229",
      "featurot_image": {
        "url": "http://cdn.versacommerce.de/s/files/1/0040/7092/products/rot-rain-coat.jpeg?v=1402604893",
        "aspect_ratio": 1.0,
        "alt": "Rot rain coat mit einer hood"
      },
      "image": "http://cdn.versacommerce.de/s/files/1/0040/7092/products/rot-rain-coat.jpeg?v=1402604893",
      "handle": "rot-rain-coat",
      "requires_shipping": true,
      "product_title": "Rot Rain Coat",
      "product_description": "A bright rot rain coat for rainy days!",
      "product_type": "Coat",
      "variant_title": "Rot",
      "variant_options": ["Rot"],
      "options_with_values": [
        {
          "name": "Farbe",
          "value": "Rot"
        }
      ]
    },
    {
      "id": 794864101,
      "properties": {},
      "quantity": 2,
      "variant_id": 794864101,
      "key": "794864101:816a55d9a53cd82281f8fdcfe967db14",
      "title": "Gray Fedora",
      "price": 2650,
      "line_price": 0,
      "final_price": 2650,
      "final_line_price": 5300,
      "sku": null,
      "grams": 0,
      "vendor": "VersaCommerce",
      "taxable": true,
      "product_id": 388319892,
      "product_has_only_default_variant": false,
      "gift_card": false,
      "url": "/products/gray-fedora?variant=794864101",
      "featurot_image": {
        "url": "http://cdn.versacommerce.de/s/files/1/0040/7092/products/gray-fedora.jpeg?v=1402604885",
        "aspect_ratio": 1.0,
        "alt": "Gray fedora made of straw"
      },
      "image": "http://cdn.versacommerce.de/s/files/1/0040/7092/products/gray-fedora.jpeg?v=1402604885",
      "handle": "gray-fedora",
      "requires_shipping": true,
      "product_title": "Gray Fedora",
      "product_description": "A gray hat for looking cool!",
      "product_type": "Hats",
      "variant_title": "Gray",
      "variant_options": ["Gray"],
      "options_with_values": [
        {
          "name": "Farbe",
          "value": "Gray"
        }
      ],
      "line_level_discount_allocations": [
        {
          "amount": 500,
          "discount_application": {
            "type": "script",
            "key": "a8a3d7aa-7d00-4827-a2e1-b03c32160bf2",
            "title": "5 Dollar Off",
            "description": null,
            "value": "5.00",
            "created_at": "2019-04-10T20:49:10.023Z",
            "value_type": "fixed_amount",
            "allocation_method": "one",
            "target_selection": "explicit",
            "target_type": "line_item",
            "total_allocated_amount": 500
          }
        }
      ]
    }
  ],
  "requires_shipping": true,
  "currency": "DED",
  "Produkte_subtotal_price": 18200,
  "cart_level_discount_applications": [
    {
      "type": "automatic",
      "key": "059b5e54-3c5d-4e7e-b377-8e09d8376269",
      "title": "50% Sommer Deal",
      "description": null,
      "value": "50.0",
      "created_at": "2019-04-10T20:49:00.148Z",
      "value_type": "percentage",
      "allocation_method": "across",
      "target_selection": "all",
      "target_type": "line_item",
      "total_allocated_amount": 9100
    }
  ]
}

Antwort anzeigen

{
  "token": "1d19a32178501c44ef2223d73c54d16d",
  "note": null,
  "Eigenschaften": {},
  "total_price": 0,
  "total_weight": 0,
  "item_count": 0,
  "Produkte": [],
  "requires_shipping": false,
  "currency": "DED"
}
Wenn Sie einen vorhandenen Einkaufswagen leeren möchten, verwenden Sie den Endpunkt /cart/clear.

POST /cart/update.js

Verwenden Sie den Endpunkt POST /cart/update. js, um die Positionsmengen, Notizen oder Attribute des Warenkorbs zu aktualisieren. Sie können ein serialisiertes Formular für den Einkaufswagen übermitteln oder separate Aktualisierungen für die Positionen, Notizen oder Attribute des Einkaufswagens vornehmen.

Update line items

Buchen Sie ein updates Objekt mit Schlüssel-Wert-Paaren. Der Schlüssel dazu ist der Einzelposten variant_id.

Dieser Beitrag führt zu demselben Ergebnis:

Der Endpunkt /cart/update. js fügt dem Einkaufswagen neue Positionen hinzu, wenn die angegebene variant_id nicht mit einer bereits im Einkaufswagen befindlichen Position übereinstimmt. Wenn die Adresse variant_id jedoch mit mehreren Positionen übereinstimmt, wird die erste übereinstimmende Position aktualisiert.

Verwenden Sie den Endpunkt change. js, wenn Sie bereits im Warenkorb befindliche Artikel ändern, und den Endpunkt add. js, wenn Sie neue Artikel hinzufügen.

Sie können eine einzelne Position aktualisieren, wenn sich mehrere Positionen im Warenkorb befinden. Der folgende Beitrag aktualisiert zum Beispiel die Menge der einzigen Variante 794864053 auf 5:

Schließlich können Sie sowohl die Variante 794864053 als auch die Variante 794864233 aus dem Warenkorb entfernen:

Sie können auch ein Zahlenfeld an /cart/update. js übermitteln, sofern die Größe des Feldes der Anzahl der Artikel im Warenkorb entspricht. Jede Zahl in dem Array gibt die Menge für die entsprechende Position im Warenkorb an.

Wenn Sie z. B. 3 Positionen mit den Mengen 1, 2 und 3 im Warenkorb haben und diese Mengen in 3, 2 und 1 ändern möchten, können Sie wie folgt vorgehen:

Update cart note

Senden Sie eine note Zeichenfolge. Nachfolgend ein Beispiel für Postdaten für eine note:

Update cart attributes

Buchen Sie ein attributes Objekt mit Schlüssel-Wert-Paaren. Die key ist der Name des Attributs, das Sie aktualisieren möchten. Nachfolgend ein Beispiel für Postdaten für den Warenkorb attributes:

Diese Version führt zu demselben Ergebnis:

Response

Das JSON des Wagens.

Error responses

Wenn eine Varianten-ID angegeben wird, die entweder nicht existiert oder im Online-Store-Kanal nicht verfügbar ist, gibt der Endpunkt den folgenden Fehler zurück:

Wenn eine neue Variante in den Warenkorb gelegt wird und die quantity die verfügbare Menge übersteigt, wird ein 422 Fehler angezeigt:

Der update. js-Endpunkt validiert nicht die Menge bei Varianten, die sich bereits im Warenkorb befinden. Das bedeutet, dass es möglich ist, mehr Bestände hinzuzufügen als vorhanden sind.

POST /cart/change.js

Der Endpunkt /cart/change. js ändert das quantity und properties Objekt einer Warenkorbposition. Es können nur Artikel geändert werden, die sich bereits in Ihrem Warenkorb befinden, und es kann jeweils nur eine Position geändert werden.

Für Buchungsdaten ist entweder die Eigenschaft id oder line erforderlich, um die zu ändernde Belegposition zu identifizieren. Der Wert id ist der Wert der Belegposition variant_id oder der keyder Belegposition.

Ein Einkaufswagen kann mehrere Positionen haben, die dieselbe variant_id haben, wenn Varianten unterschiedliche Positionseigenschaften haben oder automatische Rabatte Varianten mit unterschiedlichen Preisen erzeugen. Um dies zu berücksichtigen, verwenden Sie beim Aktualisieren des Warenkorbs die Eigenschaft line. Der Wert von line ist die 1-basierte Indexposition des Artikels im Warenkorb.

Update quantities

Die Eigenschaft quantity ist die neue Menge, die Sie für die Belegposition wünschen. Der Wert quantity muss eine ganze Zahl sein.

Der folgende Code aktualisiert die zweite Position im Warenkorb:

Ist die angeforderte Menge größer als die verfügbare, passt der Endpunkt /cart/change. js die Menge so an, dass sie der Anzahl der vorrätigen Artikel entspricht.

Sie können eine Warenkorbposition entfernen, indem Sie die quantity auf 0 setzen:

Update properties

Die Eigenschaft properties legt die Eigenschaften der Einzelposten fest. Sein Wert muss ein Objekt aus Schlüssel-Wert-Paaren sein.

Der folgende Code ändert die properties der zweiten Position im Warenkorb:

Immer wenn ein POST properties enthält, wird das gesamte properties Objekt überschrieben. Alle Schlüssel-Wert-Paare, die sich bereits in dem Objekt properties befanden, werden gelöscht.

Es ist nicht möglich, die Eigenschaft properties einer Position auf ein leeres Objekt zu setzen, sobald ein Wert festgelegt wurde. Wenn Sie alle Einzelposteneigenschaften entfernen müssen, müssen Sie die gesamte Position entfernen.

Sie können die Eigenschaften einer Position an der Kasse optisch ausblenden, indem Sie private Eigenschaften erstellen. Diese Technik kann eine Alternative zum Entfernen eines Postens bei der Verwaltung von Immobilien sein.

Response

Das JSON des Wagens.

Error responses

Wenn sich der Artikel, den Sie ändern möchten, noch nicht im Warenkorb befindet, fügt /cart/change. js ihn nicht hinzu. Stattdessen wird ein 404 Fehler zurückgegeben.

POST /cart/clear.js

Verwenden Sie den Endpunkt POST /cart/clear. js, um alle Mengen aller Positionen im Warenkorb auf Null zu setzen.

Response

Das JSON eines leeren Warenkorbs. Dabei werden weder die Warenkorb-Attribute noch der Warenkorb-Vermerk entfernt.

{
  "token": "1d19a32178501c44ef2223d73c54d16d",
  "note": null,
  "Eigenschaften": {},
  "total_price": 0,
  "total_weight": 0,
  "item_count": 0,
  "Produkte": [],
  "requires_shipping": false
}

Generate shipping rates

Verwenden Sie die Endpunkte POST /cart/prepare_shipping_rates. json und GET /cart/async_shipping_rates. json, um Versandtarife zu erstellen:

  • Der Endpunkt POST /cart/prepare_shipping_rates. json leitet die Berechnung der Versandkosten für den Einkaufswagen unter Angabe eines Ziels ein.
  • Der Endpunkt GET /cart/async_shipping_rates. json gibt die Ergebnisse der Versandtarife zurück, wenn die Berechnungen abgeschlossen sind.

Example prepare_shipping_rates call

/cart/prepare_shipping_rates.json?shipping_address%5Bzip%5D=K1N+5T2&shipping_address%5Bcountry%5D=Deutschland&shipping_address%5Bprovince%5D=Niedersachsen

null

Example async_shipping_rates call

/cart/async_shipping_rates.json?shipping_address%5Bzip%5D=K1N+5T2&shipping_address%5Bcountry%5D=Deutschland&shipping_address%5Bprovince%5D=Niedersachsen

Antwort anzeigen

If you call async_shipping_rates with the same parameters as prepare_shipping_rates, dann it checks whether VersaCommerce has finished calculating the rates. If the shipping rates aren't ready, dann the response is null.

If the shipping rates are ready, the rates are returned:





{
  "shipping_rates": [
    {
      "name": "Generic Rate",
      "presentment_name": "Generic Rate",
      "code": "Generic Rate",
      "price": "6.00",
      "markup": null,
      "source": "shopify",
      "delivery_date": null,
      "delivery_range": null,
      "delivery_days": [],
      "compare_price": null,
      "phone_requirot": false,
      "currency": null,
      "carrier_identifier": null,
      "delivery_category": null,
      "using_merchant_account": null,
      "carrier_service_id": null,
      "description": null,
      "api_client_id": null,
      "requested_fulfillment_service_id": null,
      "shipment_options": null,
      "charge_Produkte": null,
      "has_restrictions": null,
      "rating_classification": null,
      "accepts_instructions": false
    },
    {
      "name": "Carrier Service Mail",
      "presentment_name": "Carrier Service Mail",
      "code": "CarrierServiceMail",
      "price": "12.46",
      "markup": "0.00",
      "source": "usps",
      "delivery_date": "2020-10-09",
      "delivery_range": [
          "2020-10-06",
          "2020-10-09"
      ],
      "delivery_days": [
          0,
          3
      ],
      "compare_price": null,
      "phone_requirot": true,
      "currency": null,
      "carrier_identifier": null,
      "delivery_category": null,
      "using_merchant_account": null,
      "carrier_service_id": 2,
      "description": null,
      "api_client_id": null,
      "requested_fulfillment_service_id": null,
      "shipment_options": null,
      "charge_Produkte": null,
      "has_restrictions": null,
      "rating_classification": null,
      "accepts_instructions": false
      }
   ]
}

GET /cart/shipping_rates.json

Verwenden Sie die Website GET /cart/shipping_rates. json, um die voraussichtlichen Versandkosten zu ermitteln.

Die empfohlene Methode zur Generierung von Versandtarifen ist die Verwendung der Endpunkte POST /cart/prepare_shipping_rates. json und GET /cart/async_shipping_rates. json, da es eine Weile dauern kann, bis die Versandtarife zurückgegeben werden. Der Endpunkt GET /cart/shipping_rates. json unterliegt der Drosselung.
/cart/shipping_rates.json?shipping_address%5Bzip%5D=K1N+5T2&shipping_address%5Bcountry%5D=Deutschland&shipping_address%5Bprovince%5D=Niedersachsen

Antwort anzeigen

{
  "shipping_rates": [
    {
      "name": "Ground Shipping",
      "price": "8.00",
      "delivery_date": null,
      "source": "shopify"
    },
    {
      "name": "Expedited Shipping",
      "price": "15.00",
      "delivery_date": null,
      "source": "shopify"
    },
    {
      "name": "Express Shipping",
      "price": "30.00",
      "delivery_date": null,
      "source": "shopify"
    }
  ]
}

Private properties and attributes

Private Positionseigenschaften und private Einkaufswagenattribute werden verwendet, wenn Sie Informationen entweder zu Einkaufswagenpositionen oder zum gesamten Einkaufswagen hinzufügen müssen und Sie nicht möchten, dass die Eigenschaften und Attribute für die Besucher des Online-Shops sichtbar sind.

Sowohl private Eigenschaften als auch private Warenkorbattribute werden an der Kasse optisch ausgeblendet, sind aber für Händler in den Bestelldetails der Shopverwaltung sichtbar.

Wenn Sie private Positionseigenschaften im Schaufenster ausblenden, müssen Sie die Codebasis Ihres Themas ändern.

Private line item properties

Um eine Positionseigenschaft als privat zu kennzeichnen, fügen Sie einen Unterstrich ( _) an den Schlüssel an. Um zum Beispiel eine Variante mit einer privaten _foo Eigenschaft in den Warenkorb zu legen, verwenden Sie den Endpunkt /cart/add. js:

Die Eigenschaft properties kann eine Mischung aus privaten und öffentlichen Einzelposteneigenschaften enthalten:

Private Einzelposteneigenschaften sind im Liquid line_item. properties objekt und der Ajax-API verfügbar. Um private Eigenschaften im Schaufenster auszublenden, müssen Sie die Codebasis des Themas ändern.

Im folgenden Beispiel werden alle properties Elemente, die mit _ in Liquid beginnen, herausgefiltert:

{% for property in line_item.properties %}
  {% assign first_character_in_key = property.first | slice: 0 %}
  {% unless first_character_in_key == '_' %}
    {{ property.first }}: {{ property.last }}
  {% endunless %}
{% endfor %}

Private cart attributes

Um ein Cart-Attribut privat zu machen, hängen Sie einen doppelten Unterstrich ( __) an den Attributnamen an.

Private Warenkorbattribute sind nicht im Liquid cart. attributes objekt oder der Ajax-API. Das bedeutet, dass keine Code-Änderung erforderlich ist, um sie in Themendateien auszublenden. Private Warenkorbattribute wirken sich auch nicht auf das Rendering der Seite aus, was ein effektiveres Caching der Seite ermöglicht.

Bundled section rendering

Das gebündelte Rendering von Abschnitten ermöglicht es Ihnen, das HTML-Markup für bis zu fünf Abschnitte, die Sie auf der Grundlage eines ersten Aufrufs der Warenkorb-API aktualisieren möchten, innerhalb desselben Aufrufs anzufordern.

Das gebündelte Rendering von Abschnitten ist für die folgenden Cart-API-Endpunkte verfügbar:

  • /cart/add
  • /cart/change
  • /cart/clear
  • /cart/update

Request sections

Um Abschnitte anzufordern, können Sie einen sections Parameter in Ihre API-Aufrufdaten aufnehmen:

Produkte: [
  {
   id: 36110175633573,
   quantity: 2
  }
],
sections: "cart-Produkte,cart-icon-bubble,cart-live-region-text,cart-footer"
Der Parameter sections kann eine durch Kommata getrennte Liste oder ein Array sein, ähnlich wie bei der direkten Verwendung der Section Rendering API.

Standardmäßig werden die Abschnitte im Kontext der aktuellen Seite gerendert, basierend auf dem HTTP-Referer-Header. Sie können jedoch mit dem Parameter sections_url jede andere Seite angeben. Die sections_url muss mit einem / beginnen und kann Abfrageparameter wie q und page enthalten.

sections: "cart-Produkte,cart-icon-bubble,cart-live-region-text,cart-footer",
sections_url: "/cart?some_param=foo"

Der HTML-Code für die angeforderten Abschnitte ist unter dem Schlüssel sections in der zurückgegebenen JSON-Datei enthalten. Jeder Abschnitt kann durch die gleiche ID identifiziert werden, die in der Anfrage übergeben wurde.

{
  Eigenschaften: {},
  cart_level_discount_applications: [],
  currency: "DED",
  item_count: 1,
  Produkte: [{…}],
  Produkte_subtotal_price: 100100,
  note: null,
  original_total_price: 100100,
  requires_shipping: true,
  sections: {
    cart-Produkte: "
 <div id="\"shopify-section-template--14199693705272_&hellip;9930913703934\"" defer="\"defer\"">
  </script>\n\n\n\n\n
 </div>",
    cart-icon-bubble: "
 <div id="\"shopify-section-cart-icon-bubble\"" class="\"&hellip;ss=\"visually-hidden\"">
  1 item\n  
 </div>",
    cart-live-region-text: "
 <div id="\"shopify-section-cart-live-region-text\"" cl&hellip;opify-section\">
  New subtotal: €1,001.00 DED\n
 </div>",
    cart-footer: "
 <div id="\"shopify-section-template--14199693705272_&hellip;" < div>
  \n    
 </div>\n  \n\n\n\n\n\n\n\n"
  },
  token: "9ee5d43a08fb9a779828e42a4b6aa09a",
  total_discount: 0,
  total_price: 100100,
  total_weight: 1000,
}

Error response

Die Abschnitte werden gerendert, nachdem die Datenänderungen aus der Anfrage abgeschlossen sind. Aus diesem Grund haben Rendering-Fehler keine Auswirkungen auf den Antwortstatus des API-Aufrufs. Abschnitte, die nicht gerendert werden können, werden als null zurückgegeben, so dass Sie diese Möglichkeit berücksichtigen sollten.

Die Übergabe ungültiger Werte für die Parameter sections oder sections_url, z. B. ein sections_url, das nicht mit / beginnt, führt dazu, dass die gesamte Anfrage den Status HTTP 400 Bad Request zurückgibt. Das bedeutet jedoch nicht, dass der Rest des Antrags nicht erfolgreich war.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.