# Carrinho de Compra

Através da API de Carrinho de compra é possível incluir e remover produtos e resgatar as informações para exibição ao cliente.

| Endereço para Integração |                                                              |
| ------------------------ | ------------------------------------------------------------ |
| URL de Acesso            | https\://{sualojavirtual}.commercesuite.com.br/web\_api/cart |
| Protocolo                | Rest/HTTP                                                    |

### Sessão do Usuário <a href="#ir-para-sessao-do-usuario" id="ir-para-sessao-do-usuario"></a>

Na API de Carrinho de Compra também será necessário resgatar a informação da sessão do usuário no carrinho. Esta informação poderá ser capturada através de um código javascript.

Apesar da sessão do usuário já existir no dataLayer, algumas páginas possuem cache e poderão trazer as informações de forma incorreta. Para evitar este problema, caso seja necessário, disponibilizamos a sessão também no código fonte das páginas do sistema para que possa ser recuperado.

Abaixo apresentamos um código exemplo para que seja feita a captura da sessão:

```html
<script type="text/javascript">  
    var dataSession =  $("html").attr("data-session");
</script>
```

### Consultar Informações do Carrinho de Compra <a href="#ir-para-consultar-informacoes-do-carrinho-de-compra" id="ir-para-consultar-informacoes-do-carrinho-de-compra"></a>

Para retornar as informações do Carrinho de Compra, basta realizar uma requisição via GET, enviando na URL o código da sessão do carrinho.

Para a integração com esta API, deverá ser realizada uma requisição via GET, concatenando o código da sessão do usuário no final da URL.

Veja abaixo uma chamada de exemplo para consultar informações do carrinho de compra:

```html
<script type="text/javascript">  
    var dataSession =  $("html").attr("data-session");
    $.ajax({
        method: "GET",
        url: "/web_api/cart/"+dataSession
    }).done(function( response, textStatus, jqXHR ) {
        console.log(response);
    }).fail(function( jqXHR, status, errorThrown ){
        var response = $.parseJSON( jqXHR.responseText );
        console.log(response);
    });
</script>
```

A consulta de informações do carrinho de compra retorna uma resposta em JSON.

Abaixo um detalhamento de cada nó do JSON de resposta:

| JSON de Resposta                      | Descrição                         |
| ------------------------------------- | --------------------------------- |
| `Cart`                                | Nó principal da resposta          |
| `Cart.session_id`                     | Código da Sessão do Carrinho      |
| `Cart.product_id`                     | Código do Produto                 |
| `Cart.product_name`                   | Nome do Produto                   |
| `Cart.quantity`                       | Quantidade                        |
| `Cart.price`                          | Preço do Produto                  |
| `Cart.weight`                         | Peso do Produto                   |
| `Cart.date`                           | Data                              |
| `Cart.variant_id`                     | Código da Variação                |
| `Cart.user_id`                        | ID do usuário                     |
| `Cart.user_cod`                       | Código do Usuário                 |
| `Cart.hour`                           | Hora                              |
| `Cart.product_url`                    | Objeto com as URLs do Produto     |
| `Cart.product_url.http`               | URL Simples do Produto            |
| `Cart.product_url.https`              | URL Segura do Produto             |
| `Cart.product_image`                  | Objeto com as imagens do Produto  |
| `Cart.product_image.http`             | URL Simples da Imagem do produto  |
| `Cart.product_image.https`            | URL Segura da Imagem do produto   |
| `Cart.product_image.thumbs`           | Miniatura da Imagem do Produto    |
| `Cart.product_image.thumbs.30`        | Miniatura de Tamanho 30px         |
| `Cart.product_image.thumbs.30.http`   | URL Simples da Miniatura de 30px  |
| `Cart.product_image.thumbs.30.https`  | URL Segura da Miniatura de 30px   |
| `Cart.product_image.thumbs.90`        | Miniatura de Tamanho 90px         |
| `Cart.product_image.thumbs.90.http`   | URL Simples da Miniatura de 90px  |
| `Cart.product_image.thumbs.90.https`  | URL Segura da Miniatura de 90px   |
| `Cart.product_image.thumbs.180`       | Miniatura de Tamanho 180px        |
| `Cart.product_image.thumbs.180.http`  | URL Simples da Miniatura de 180px |
| `Cart.product_image.thumbs.180.https` | URL Segura da Miniatura de 180px  |
| `Cart.email`                          | Email do Usuário                  |
| `Cart.additional_information`         | Informações Adicionais            |

Exemplo de resposta com sucesso baseando no envio do exemplo acima:

```json
[
  {
    "Cart": {
      "email": "",
      "session_id": "pfhqg4ekivc5hqrdh3me2e8dp4",
      "product_id": "6",
      "product_name": "Nome do Produto",
      "quantity": "1",
      "price": "50.00",
      "weight": "100",
      "date": "2016-09-30",
      "variant_id": "0",
      "additional_information": "",
      "user_id": "0",
      "customer_id": "0",
      "user_cod": "0",
      "hour": "13:55:43",
      "product_url": {
        "http": "http://urldaloja.commercesuite.com.br/acessorios/sleeves-protetores/dragon-shield-fusion",
        "https": "https://urldaloja.commercesuite.com.br/acessorios/sleeves-protetores/dragon-shield-fusion"
      },
      "product_image": {
        "http": "http://images2.tcdn.com.br/img/img_prod/888/6_1_20141201121139.jpg",
        "https": "https://images2.tcdn.com.br/img/img_prod/888/6_1_20141201121139.jpg",
        "thumbs": {
          "30": {
            "http": "http://images1.tcdn.com.br/img/img_prod/888/30_6_1_20141201121139.jpg",
            "https": "https://images1.tcdn.com.br/img/img_prod/888/30_6_1_20141201121139.jpg"
          },
          "90": {
            "http": "http://images3.tcdn.com.br/img/img_prod/888/90_6_1_20141201121139.jpg",
            "https": "https://images.tcdn.com.br/img/img_prod/888/90_6_1_20141201121139.jpg"
          },
          "180": {
            "http": "http://images2.tcdn.com.br/img/img_prod/888/180_6_1_20141201121139.jpg",
            "https": "https://images2.tcdn.com.br/img/img_prod/888/180_6_1_20141201121139.jpg"
          }
        }
      }
    }
  }
```

### Attrs <a href="#ir-para-attrs" id="ir-para-attrs"></a>

Caso deseje exibir apenas alguns atributos da API, pode-se utilizar o parâmetro `attrs`

O parâmetro Attrs deve ser passado pela url da requisição da API, nela você deve passar os atributos da qual deseja exibir separados por (,).

**Exemplo:**

```
https://{URL_LOJA}/web_api/cart/dataSession?attrs=Cart.product_name
```

Terá como resposta o conteúdo abaixo:

```json
 "Cart": {
    "id": "660",
    "product_name": "Camisa basica<br /><strong>Cor</strong> Vermelho"
  }
```

Abaixo um exemplo de utilização desse parâmetro:

```javascript
var dataSession =  $("html").attr("data-session");
var params = {};

params["attrs"] = "Cart.product_name,Cart.product_id";

$.ajax({
  method: "GET",
  url: "/web_api/cart/"+dataSession,
  data: params
}).done(function( response, textStatus, jqXHR ) {
  console.log(response);
}).fail(function( jqXHR, status, errorThrown ){
  var response = $.parseJSON( jqXHR.responseText );
  console.log(response);
});
```

### Incluir Produto no Carrinho de Compra <a href="#ir-para-incluir-produto-no-carrinho-de-compra" id="ir-para-incluir-produto-no-carrinho-de-compra"></a>

Para incluir produtos no carrinho de compra, basta realizar uma requisição via POST, enviando os parâmetros com informações do produto.

A requisição para a integração será via POST, onde segue abaixo os dados necessários para envio:

<table><thead><tr><th>Dados de Entrada</th><th width="150">Obrig.</th><th width="174">Formato / Tam. Max</th><th>Descrição</th></tr></thead><tbody><tr><td><code>Cart</code></td><td>Sim</td><td>Objeto</td><td>Nó principal da resposta</td></tr><tr><td><code>Cart.session_id</code></td><td>Sim</td><td>Texto / 32</td><td>Código da Sessão</td></tr><tr><td><code>Cart.product_id</code></td><td>Sim</td><td>Número</td><td>Código do Produto</td></tr><tr><td><code>Cart.quantity</code></td><td>Sim</td><td>Número</td><td>Quantidade</td></tr><tr><td><code>Cart.variant_id</code></td><td>Não</td><td>Número</td><td>Código da Variação</td></tr></tbody></table>

Exemplo de um JSON de envio baseando nos dados de envio acima:

```json
{
    "Cart": {
        "session_id": "rkqeli8b00a697r4q9jnbi6il6",
        "product_id": "100",
        "quantity": "2",
        "variant_id": "0"
    }
}
```

Veja abaixo uma chamada de exemplo para incluir produtos no carrinho de compra:

```html
<script type="text/javascript">  
    var dataSession =  $("html").attr("data-session");
        
        $.ajax({
        method: "POST",
        url: "/web_api/cart/",
        contentType: "application/json; charset=utf-8",
        data: '{"Cart":{"session_id":"'+dataSession+'","product_id":"100","quantity":"2","variant_id":"0"}}'
    }).done(function( response, textStatus, jqXHRH ) {
        console.log(response);
    }).fail(function( jqXHR, status, errorThrown ){
        var response = $.parseJSON( jqXHR.responseText );
        console.log(response);
    });
</script>
```

Ao incluir produtos do carrinho de compra, é retornada uma resposta em JSON.

Abaixo um detalhamento de cada nó do JSON de resposta:

| JSON de Resposta |                              |
| ---------------- | ---------------------------- |
| `message`        | Mensagem de Retorno          |
| `id`             | Código do Carrinho           |
| `session_id`     | Código da Sessão do Carrinho |
| `cart_url`       | URL do Carrinho              |
| `code`           | HTTP Code de Resposta        |

Exemplo de resposta com sucesso baseando no envio do exemplo acima:

```json
{
    'message': 'Created',
    'id': '615440',
    'session_id': 'rkqeli8b00a697r4q9jnbi6il6',
    'cart_url': 'https://sualojavirtual.commercesuite.com.br/loja/carrinho.php?loja=12&transID=rkqeli8b00a697r4q9jnbi6il6,
    'code': '201'
}
```

### Excluir Produto do Carrinho de Compra <a href="#ir-para-excluir-produto-do-carrinho-de-compra" id="ir-para-excluir-produto-do-carrinho-de-compra"></a>

Para excluir um produto especifico no carrinho de compra, basta realizar uma requisição utilizando o método DELETE, passando na url o `session_id` e o `product_id` do produto.

Esta requisição exclui um produto inteiro do carrinho. Caso ele tenha uma ou mais variações, todas serão excluídas do carrinho.

| Endereço para Integração |                                                                                           |
| ------------------------ | ----------------------------------------------------------------------------------------- |
| URL de Acesso            | https\://{sualojavirtual}.commercesuite.com.br/web\_api/carts/{session\_id}/{product\_id} |
| Protocolo                | Rest/HTTP                                                                                 |

Veja abaixo uma chamada de exemplo para excluir produtos no carrinho de compra:

```html
<script type="text/javascript">
  var dataSession =  $("html").attr("data-session");
  var productID = 6
  $.ajax({
    method: "DELETE",
    url: "/web_api/carts/"+dataSession+"/"+productID
  }).done(function( response, textStatus, jqXHR ) {
    console.log(response);
  }).fail(function( jqXHR, status, errorThrown ){
    var response = $.parseJSON( jqXHR.responseText );
    console.log(response);
  });
</script>
```

Ao excluir produtos do carrinho de compra, é retornada uma resposta em JSON.

Abaixo um detalhamento de cada nó do JSON de resposta:

| JSON de Resposta | Descrição                    |
| ---------------- | ---------------------------- |
| `message`        | Mensagem de Retorno          |
| `id`             | Código do Carrinho           |
| `session_id`     | Código da Sessão do Carrinho |
| `cart_url`       | URL do Carrinho              |
| `code`           | HTTP Code de Resposta        |

&#x20;Exemplo de resposta com sucesso baseando no envio do exemplo acima:

```
{
   'message': 'Deleted',
   'id': '615440',
   'session_id': 'rkqeli8b00a697r4q9jnbi6il6',
   'cart_url': 'https://sualojavirtual.commercesuite.com.br/loja/carrinho.php?loja=12&transID=rkqeli8b00a697r4q9jnbi6il6,
   'code': '201'
}
```

### Excluir Variação de um Produto no Carrinho de Compra <a href="#ir-para-excluir-variacao-de-um-produto-no-carrinho-de-compra" id="ir-para-excluir-variacao-de-um-produto-no-carrinho-de-compra"></a>

Para excluir uma variação especifica do produto no carrinho de compra, basta realizar uma requisição utilizando o método DELETE, passando na url o `session_id` e o `product_id` e o `variant_id` do produto.

Esta requisição exclui uma variação específica do carrinho.<br>

| Endereço para Integração |                                                                                                         |
| ------------------------ | ------------------------------------------------------------------------------------------------------- |
| URL de Acesso            | https\://{sualojavirtual}.commercesuite.com.br/web\_api/carts/{session\_id}/{product\_id}/{variant\_id} |
| Protocolo                | Rest/HTTP                                                                                               |

Veja abaixo uma chamada de exemplo para excluir produtos no carrinho de compra:

```html
<script type="text/javascript">  
    var dataSession =  $("html").attr("data-session");
    var productID = 6;	
    var variantID = 122;
    $.ajax({
        method: "DELETE",
        url: "/web_api/carts/"+dataSession+"/"+productID+"/"+variantID,
        contentType: "application/json; charset=utf-8",
    }).done(function( response, textStatus, jqXHR ) {
        console.log(response);
    }).fail(function( jqXHR, status, errorThrown ){
        var response = $.parseJSON( jqXHR.responseText );
        console.log(response);
    });
</script>
```

Ao excluir uma variação do carrinho de compra, é retornada uma resposta em JSON.

Abaixo um detalhamento de cada nó do JSON de resposta:

| JSON de Resposta | Descrição                    |
| ---------------- | ---------------------------- |
| `message`        | Mensagem de Retorno          |
| `id`             | Código do Carrinho           |
| `session_id`     | Código da Sessão do Carrinho |
| `cart_url`       | URL do Carrinho              |
| `code`           | HTTP Code de Resposta        |

Exemplo de resposta com sucesso baseando no envio do exemplo acima:

```json
{
    'message': 'Deleted',
    'id': '615440',
    'session_id': 'rkqeli8b00a697r4q9jnbi6il6',
    'cart_url': 'https://sualojavirtual.commercesuite.com.br/loja/carrinho.php?loja=12&transID=rkqeli8b00a697r4q9jnbi6il6,
    'code': '201'
}
```

### Excluir Carrinho de Compra <a href="#ir-para-excluir-sessao-do-carrinho-de-compra" id="ir-para-excluir-sessao-do-carrinho-de-compra"></a>

Para excluir o carrinho de compra, basta realizar uma requisição utilizando o método DELETE.

Esta requisição exclui o carrinho com id passado por parâmetro. A exclusão só será feita caso o id tenha a sessão também passada.

| Endereço para Integração |                                                                             |
| ------------------------ | --------------------------------------------------------------------------- |
| URL de Acesso            | https\://{sualojavirtual}.commercesuite.com.br/web\_api/carts/{session\_id} |
| Protocolo                | Rest/HTTP                                                                   |

Veja abaixo uma chamada de exemplo para excluir produtos no carrinho de compra:

```html
<script type="text/javascript">
  var dataSession =  $("html").attr("data-session");

  $.ajax({
    method: "DELETE",
    url: "/web_api/carts/"+dataSession
  }).done(function( response, textStatus, jqXHR ) {
    console.log(response);
  }).fail(function( jqXHR, status, errorThrown ){
    var response = $.parseJSON( jqXHR.responseText );
    console.log(response);
  });
</script>
```

Ao excluir o carrinho de compra, é retornada uma resposta em JSON.

Abaixo um detalhamento de cada nó do JSON de resposta:

| JSON de Resposta | Descrição                    |
| ---------------- | ---------------------------- |
| `message`        | Mensagem de Retorno          |
| `session_id`     | Código da Sessão do Carrinho |
| `cart_url`       | URL do Carrinho              |
| `code`           | HTTP Code de Resposta        |

&#x20;Exemplo de resposta com sucesso baseando no envio do exemplo acima:

```json
{
    'message': 'Deleted',
    'session_id': 'rkqeli8b00a697r4q9jnbi6il6',
    'cart_url': 'https://sualojavirtual.commercesuite.com.br/loja/carrinho.php?loja=12&transID=rkqeli8b00a697r4q9jnbi6il6,
    'code': '200'
}
```

Para mais detalhes sobre as APIs de carrinho de compra acesse o link da documentação <https://developers.tray.com.br/#apis-de-carrinho-de-compra>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://partners.tray.com.br/themes/construindo-seu-template/apis-disponiveis/carrinho-de-compra.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
