# 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>
