Carrinho de Compra

O TrayCheckout fornece uma ferramenta poderosa para sites que não possuem um carrinho de compras e querem oferecer a possibilidade de visitantes escolherem produtos e finalizarem uma compra.

Esta ferramenta exclusiva também permite que seja possível o seu uso em um ambiente multi-vendedor, onde o site/marketplace pode fornecer um carrinho de compras para todas as lojas simultaneamente, fazendo com que o comprador tenha uma experiência única de compra com o TrayCheckout.

É possível inclusive utilizar um calculador de fretes baseando-se nos Correios ou em uma API própria de cada vendedor.

Para esta integração, deverá ser feito uso da API a seguir:

Endereço para Integração
Ambiente de Testes https://api.sandbox.traycheckout.com.br/edge/tmp_transactions/create
Ambiente de Produção https://api.traycheckout.com.br/edge/tmp_transactions/create
Protocolo Rest/HTTP

Os dados que podem ser enviados nessa API são:

Dados de Entrada Obrig. Formato / Tam. Max Descrição
token_account Sim Texto /15 Token de identificação do vendedor
transaction_product[][code] Sim Texto /20 Código do produto 1
transaction_product[][description] Sim Texto /150 Descrição do produto
transaction_product[][quantity] Sim Decimal / 11 Quantidade do produto
transaction_product[][price_unit] Sim Decimal / 11 Valor do produto
transaction_product[][extra]   Texto /45 Informações extras do produto
transaction_product[][url_img]   Texto /255 URL da imagem do produto
transaction_product[][sku_code]   Texto /20 0 Código SKU do produto
transaction_product[][weight]   Inteiro / 11 Peso do produto em gramas
order_number   Texto /32 Número do pedido 2
token_transaction   Texto /32 Token da transação 3
url_seller   Texto /255 URL do botão Voltar a Loja
url_notification   Texto /255 Url de Notificação Automática de Status
price_discount   Decimal / 11 Valor do desconto da transação
postal_code_seller Sim Texto /8 Cep de origem
sub_store   Texto /20 Sub-Loja
url_css   Texto /255 URL do CSS customizado 4

1 Note que nas informações acima que alguns dados possuem uma característica diferente, tendo um elemento [] dentro de sua formatação. Isso ocorre justamente para permitir que sejam enviados diversos itens na mesma requisição.

2 O número do pedido representa um número de controle da plataforma ou marketplace, possibilitando incluir diversos vendedores no carrinho de compra.

3 Token da Transação será a forma de identificar um carrinho de compras. Assim, quando ele não for enviado, será criado um novo carrinho. Para que o produto enviado seja adicionado a um carrinho existe, basta enviar o token_transaction desse carrinho criado anteriormente.

4 É possível informar uma url para customizar a página do carrinho, alterando as cores e posicionamentos através de css.

Exemplo da inserção de 1 produto no carrinho de compras:

    
    <?php
        /* Token da Conta do Lojista */
        $params['token_account'] = '### Token do Cliente ###';
        
        /* Dados do Produto 1 - Notebook Preto */
        $params['transaction_product[][code]'] = '1';
        $params['transaction_product[][description]'] = 'Notebook Preto';
        $params['transaction_product[][quantity]'] = '1';
        $params['transaction_product[][price_unit]'] = '321.99';
        $params['transaction_product[][extra]'] = 'Dados extra do Notebook Preto';
        $params['transaction_product[][url_img]'] = '0001';
        $params['transaction_product[][sku_code]'] = '0001';
        $params['transaction_product[][weight]'] = '0001';

        /* Dados do Carrinho */
        $params['postal_code_seller'] = '04001001';
        $params['token_transaction'] = '9a436512fde231bcd3421acbd';
        $params['url_seller'] = 'http://www.loja.com.br/retorno/';
        $params['url_notification'] = 'http://www.loja.com.br/notificacao/';
        $params['price_discount'] = '5.00';
        $params['sub_store'] = 'Loja1';
        $params['url_css'] = 'http://www.loja.com.br/style.css';

        $urlPost = "https://api.sandbox.traycheckout.com.br/v2/tmp_transactions/create";

        ob_start();

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $urlPost);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_exec($ch);

        /* XML de retorno */ 
        $resposta = simplexml_load_string(ob_get_contents());

        ob_end_clean();
        curl_close($ch);

        if($resposta->message_response->message == "success"){
            //Tratamento dos dados de resposta da consulta.
        }else{
            //Tratamento das mensagens de erro
        }
    ?>
    

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

XML de Resposta
<tmp_transaction> Nó principal da resposta
<tmp_transaction>
    <message_response>
Nó que contém o resultado da resposta
<tmp_transaction>
    <message_response>
        <message>
Resposta sobre a solicitação
Em caso de sucesso: success
Em caso de erro: error
<tmp_transaction>
    <data_response>
Nó que contém os dados da resposta
<tmp_transaction>
    <data_response>
        <token_transaction>
Token da transação. Veja NOTA 1
<tmp_transaction>
    <data_response>
        <url_car>
Url para o comprador finalizar a compra com os produtos do carrinho
<tmp_transaction>
    <data_response>
        <transaction_products type="array">
Nó contendo os produtos que estão no carrinho
<tmp_transaction>
    <data_response>
        <transaction_products type="array">
            <transaction_product>
Nó contendo os detalhes de um produto
<tmp_transaction>
    <data_response>
        <transaction_products type="array">
            <transaction_product>
                <code>
Código do produto
<tmp_transaction>
    <data_response>
        <transaction_products type="array">
            <transaction_product>
                <sku_code nil="true"/>
Código do Sku
<tmp_transaction>
    <data_response>
        <transaction_products type="array">
            <transaction_product>
                <description>
Descrição do produto
<tmp_transaction>
    <data_response>
        <transaction_products type="array">
            <transaction_product>
                <extra>
Informação extra do produto
<tmp_transaction>
    <data_response>
        <transaction_products type="array">
            <transaction_product>
                <price_unit type="decimal">
Preço. Formato 0.00
<tmp_transaction>
    <data_response>
        <transaction_products type="array">
            <transaction_product>
                <quantity type="decimal">
Quantidade. Formato 0.00
<tmp_transaction>
    <data_response>
        <transaction_products type="array">
            <transaction_product>
                <weight nil="true"/>
Peso do produto.

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

    
    <tmp_transaction>
<message_response>
<message>success</message>
</message_response>
<data_response>
<token_transaction>b93b787058cb5cd6b80b6139cbca5342</token_transaction>
<url_car>https://app.traycheckout.com.br/payment/car/v2/</url_car>
<transaction_products type="array">
<transaction_product>
<code>1</code>
<img nil="true"/>
<sku_code nil="true"/>
<description>Notebook Preto</description>
<extra>HD 500 GB</extra>
<price_unit type="decimal">3.5</price_unit>
<quantity type="decimal">1.0</quantity>
<weight nil="true"/>
</transaction_product>
</transaction_products>
</data_response>
</tmp_transaction>

Mensagens de Erro

No caso de erro, a API retorna uma mensagem de erro. Assim é possível identificar o erro ocorrido e realizar o tratamento através do código e/ou mensagem retornada.

Abaixo segue os detalhes de cada nó do XML de resposta:

XML de Resposta
<response> Nó principal da resposta
<response>
    <message_response>
Nó que contém o resultado da resposta
<response>
    <message_response>
        <message>
Resposta sobre a solicitação
Em caso de sucesso: success
Em caso de erro: error
<response>
    <error_response>
Nó que contém os erros encontrados
<response>
    <error_response>
        <general_errors>
Nó que contém os erros encontrados
<response>
    <error_response>
        <general_errors>
            <general_error>
Nó que contém o detalhamento de um erro
<response>
    <error_response>
        <general_errors>
            <general_error>
                <code>
Código do erro
<response>
    <error_response>
        <general_errors>
            <general_error>
                <message>
Mensagem do erro

Exemplo de um retorno com erro:

    
    <response>
<message_response>
<message>success</message>
</message_response>
<error_response>
<general_errors type="array">
<general_error>
<code>001001</code>
<message>Token inválido ou não encontrado</message>
</general_error>
</general_errors>
</error_response>
</response>

As mensagens de erros retornados pela API estão listadas na tabela abaixo:

CódigoMensagem
001001 Token inválido ou não encontrado
003003 Forma de Pagamento Inválido
003004 Número da Parcela Inválido
003010 Forma de pagamento inválida
003011 Numero do cartão inválido
003012 Nome do cartão em branco
003014 Código de segurança inválido
003015 Mês de vencimento do cartão inválido
003016 Número de parcelas inválido
003020 Ano de vencimento do cartão inválido
003021 O vendedor não pode ser igual ao comprador
003029 Código de segurança inválido
003039 Vendedor inválido ou não encontrado
003065 Valor menor que mínimo permitido
009006 Número da parcela maior que o permitido
058001 Revendedor inválido.