Webhook de Trocas & Devoluções

Consigo receber atualizações das minhas reversas e reembolsos via webhook?

Sim, o Trocas & Devoluções possui um webhook que dispara informações de reversas e/ou reembolsos para um endereço pré-determinado do cliente, sempre que ocorre uma atualização de status, no reembolso ou na reversa, que tenha sido indicado como gatilho de envio pelo cliente.

 

Como configurar o webhook?

Siga estes passos:

1 - Envie um e-mail para suporte@after.sale com o assunto [nome_do_seu_e-commerce] Configuração de Webhook - T&D. No conteúdo do e-mail indique:

 a - O endereço (URL) que receberá os envios;

 b - O token/senha de acesso que a Aftersale deve utilizar para acessar este endereço;

 c - Liste os status de Reversa e/ou status de Reembolso, a partir dos quais deseja receber atualizações (veja quais são eles abaixo);

 d - Dois números de pedidos que poderão ser usados para testar os envios.

2 - Aguarde o retorno do time Aftersale, informando da configuração realizada e solicitando a confirmação dos envios de teste.

3 - Confirme a recepção dos arquivos enviados.

4 - E pronto! Agora você deve mapear as informações dos arquivos enviados respeitando os padrões descritos abaixo.

 

Quais são os status de Reversa disponíveis como gatilho?

ID

Evento

Status ADMIN

29

reverse.status.changed.received

Recebido

30

reverse.status.changed.pending

Em análise

31

reverse.status.changed.divergent_received

Recebimento divergente

33

reverse.status.changed.approved

Aprovado

34

reverse.status.changed.processing

Processando

35

reverse.status.changed.awaiting

Aguardando envio

36

reverse.status.changed.shipped

Em trânsito

37

reverse.status.changed.delivered

Entrega realizada

38

reverse.status.changed.canceled

Cancelado

39

reverse.status.changed.shipping_failed

Problemas no transporte

46

reverse.status.changed.invoice_pending

Nota fiscal pendente

47

reverse.status.changed.awaiting_payment

Aguardando pagamento

48

reverse.status.changed.almost_done

Parcialmente resolvido

49

reverse.status.changed.done

Resolvido

50

reverse.status.changed.partially_approved

Parcialmente aprovado

51

reverse.status.changed.refused

Recusado

55

reverse.status.changed.courier_correction_letter_attached

carta de correção anexada

57

reverse.status.changed.courier_swaped

troca de transportadora

58

reverse.status.changed.returned_invoice_refused

Nota fiscal de devolução recusada

58

reverse.status.changed.awaiting_invoice_conference

Aguardando conferência fiscal

 

Quais são os status de Reembolso disponíveis como gatilho?

ID

Evento

Status Admin

40

refund.status.changed.refund_requested

Solicitado

41

refund.status.changed.refund_approved

Aprovado

42

refund.status.changed.refund_paid

Pago

43

refund.status.changed.refund_failed

Falha de pagamento

44

refund.status.changed.refund_canceled

Cancelado

45

refund.status.changed.refund_processing

Processando

52

refund.status.changed.refund_awaiting_approval

Aguardando aprovação

53

refund.status.changed.refund_awaiting_hr_cancelation

Aguardando confirmação de cancelamento

54

refund.status.changed.refund_awaiting_cancellation_invoice

Pendência Fiscal

56

refund.status.changed.refund_review

Em avaliação

59

refund.status.changed.refund_approval_failed

Falha de aprovação

60

refund.status.changed.refund_awaiting_bank_details

Aguardando dados bancários

 

Qual o padrão de arquivo de Atualização de Reversa enviado?

{
    "event_name": "reverse.status.changed.shipping_failed",
    "event_date": "2020-10-20 18:07:26",
    "signature": "abcd1234",
    "data": {
        "reverse": {
            "id": 9,
            "reverse_type": "courier",
            "courier_collect": false,
            "ecommerce_order_id": 9,
            "store_id": null,
            "dot_id": null,
            "order_id": null,
            "courier_contract_id": 9,
            "total_amount": null,
            "invoice": null,
            "courier_data": null,
            "destination_data": {
                "seller_info": "N\u00e3o informado no produto",
                "return_to_seller": false,
                "seller_id": null
            },
            "store_expire_date": null,
            "skip_process_step": 0,
            "freight_by_customer": false,
            "tracking_error": null,
            "created_at": "2020-10-20 18:07:26",
            "updated_at": "2020-10-20 18:07:26",
            "deleted_at": null,
            "status_id": 39,
            "products": [],
            "tracking": null,
            "status": {
                "id": 39,
                "service_code": "reverses",
                "name": "shipping_failed",
                "description": "problemas no transporte"
            },
            "status_histories": [
                {
                    "id": 9,
                    "reverse_id": 9,
                    "status_id": 39,
                    "user_id": null,
                    "customer_id": null,
                    "date": "2020-10-20 18:07:26",
                    "comments": null,
                    "status": {
                        "id": 39,
                        "service_code": "reverses",
                        "name": "shipping_failed",
                        "description": "problemas no transporte"
                    },
                    "user": null
                }
            ],
            "refunds": [],
            "ecommerce_order": {
                "id": 9,
                "order_id": null,
                "invoice_number": null,
                "uuid": null,
                "shipping_value": null,
                "ordered_at": null,
                "value": null,
                "currency": null,
                "payment_methods": null,
                "ecommerce_id": 9,
                "customer_id": 893,
                "is_online": true,
                "is_marketplace": null,
                "marketplace_name": null,
                "options": null,
                "updated_at": "2020-10-20 18:07:26",
                "deleted_at": null
            },
            "must_treat_refund": false,
            "external_order_url": null,
            "returned_invoice": null,
            "reverse_type_name": "correios",
            "can_generate_voucher": false,
            "could_cancel": true,
            "available_swap_couriers": [],
            "can_send_correction_letter": false,
            "correction_letter_link": null
        },
        "customer": {
            "id": 893,
            "first_name": "Demetris",
            "last_name": "Lebsack",
            "email": "penelope.rosenbaum@example.com",
            "contact_email": null,
            "document": "12345678911",
            "phone": "+5541123416512",
            "address_id": 18,
            "shipping_address_id": 17,
            "address": {
                "id": 18,
                "zip_code": "69475000",
                "address": "Rua Francisco Derosso",
                "complement": "Apartamento 1 Torre 1",
                "number": "77144828",
                "neighborhood": "Xaxim",
                "city": "Curitiba",
                "state": "PR",
                "lat": "83.455368",
                "long": "-25.326949",
                "updated_at": "2020-10-20 18:07:26",
                "deleted_at": null
            },
            "shipping_address": {
                "id": 17,
                "zip_code": "69475000",
                "address": "Rua Francisco Derosso",
                "complement": "Apartamento 1 Torre 1",
                "number": "74045",
                "neighborhood": "Xaxim",
                "city": "Curitiba",
                "state": "PR",
                "lat": "-4.795581",
                "long": "-28.582266",
                "updated_at": "2020-10-20 18:07:26",
                "deleted_at": null
            }
        },
        "ecommerce_order": null,
        "tracking_history": []
    }
}

 

Qual o padrão de arquivo de Atualização de Reembolso enviado?

{
    "event_name": "refund.status.changed",
    "signature": "signature",
    "data": {
      "id": 0,
      "type": "string",
      "action": "string",
      "bonus_amount": 0,
      "bonus_amount_percent": 0,
      "requested_amount": 0,
      "requested_total_amount": 0,
      "received_amount": 0,
      "received_raw_amount": 0,
      "total_amount": 0,
      "free_shipping": "string",
      "created_at": "string",
      "updated_at": "string",
      "customer": {
        "id": 0,
        "first_name": "string",
        "last_name": "string",
        "email": "string"
      },
      "status": {
        "id": 0,
        "name": "string",
        "description": "string"
      },
      "status_histories": [
        {
          "id": 0,
          "reverse_id": 0,
          "status_id": 0,
          "user_id": 0,
          "customer_id": 0,
          "date": "string",
          "comments": "string",
          "status": {
            "id": 0,
            "service_code": "string",
            "name": "string",
            "description": "string"
          },
          "user": {
            "id": 0,
            "name": "string",
            "first_name": "string",
            "last_name": "string",
            "email": "string",
            "mobile_phone": "string",
            "phone": "string",
            "document": "string",
            "wallet": "string"
          }
        }
      ],
      "total_amount_histories": [
        {
          "id": 0,
          "user": {
            "id": 0,
            "first_name": "string",
            "last_name": "string"
          },
          "total_amount": "string",
          "date": "string",
          "type": {
            "id": 0,
            "name": "string",
            "description": "string"
          }
        }
      ],
      "cashback_account": "string",
      "voucher": {
        "redemption_code": "string",
        "giftcard_id": "string",
        "expiring_date": "string"
      },
      "should_ask_voucher_code": true,
      "order_payment_methods": "string",
      "order_transactions": [{}],
      "refund_product_requests": [{}],
      "reverse": {
        "status": {
          "id": 0,
          "service_code": "string",
          "name": "string",
          "description": "string"
        },
        "id": 0,
        "created_at": "string",
        "ecommerceOrder": {
          "id": 0,
          "order_id": "string"
        }
      },
      "products": [
        {
          "id": 0,
          "reverse_id": 0,
          "motive_id": 0,
          "reason": {
            "id": 0,
            "ecommerce_id": 0,
            "description": "string",
            "reason_category_id": "string",
            "action": "string",
            "should_approve": true,
            "upload_image": "string",
            "show_product_grid": true,
            "ord": "string",
            "created_at": "string",
            "updated_at": "string",
            "deleted_at": "string"
          },
          "ecommerce_order_product_id": 0,
          "refund_id": 0,
          "qty": 0,
          "requested_qty": 0,
          "received_qty": 0,
          "product_received_comment": 0,
          "comments": "string",
          "reverse_action": "string",
          "customer_retention_method_id": "string",
          "protocol": "string",
          "images": [
            {
              "id": 0,
              "product_id": "string",
              "image_path": "string",
              "image_url": "string"
            }
          ],
          "refund_product_requests": [{}],
          "product_id": "string",
          "hash": "string",
          "name": "string",
          "sku": "string",
          "price": "string",
          "selling_price": "string",
          "weight": "string",
          "returned_invoice": "string",
          "invoice": "string",
          "order_id": 0,
          "image_url": ["string"]
        }
      ],
      "can_edit_wire_transfer": true,
      "has_wire_transfer_account": true,
      "customer_retention_method_id": "string",
      "external_order_url": "string"
    }
};

 

Dicionário de dados dentro do payload Reversa

Campos mais relevantes.

Reversa ou Reembolso

O que é

"event_name"

reembolso

Nome do status do reembolso

"id"

reembolso/data

Id do reembolso

"type"

reembolso/data

Tipo do reembolso.exchange, return (string).

"action"

reembolso/data

Ação do reembolso, voucher, estorno ou tranferência (string).

"free_shipping"??

reembolso/data

Envio grátis.

"created_at"

reembolso/data

Data da criação do reembolso.

"updated_at"

reembolso/data

Data de atualização do reembolso.

"id"

reembolso/data/customer

Id do consumidor.

"first_name"

reembolso/data/customer

Nome do consumidor

"last_name"

reembolso/data/customer

Sobrenome do consumidor.

"email"

reembolso/data/customer

E-mail do consumidor.

"id"

reembolso/data/status

Id do status do reembolso.

"name"

reembolso/data/status

Nome do status do reembolso.

"description"

reembolso/data/status

Descrição do status do reembolso.

"status_histories"

reembolso/data/status_histories

Histórico de status do reembolso.

"user"

reembolso/data/status_histories/user

Alterações de status feitas pelo usuário do admin.

"total_amount_histories"

reembolso/data/total_amount_histories

Se refere a alterações de reembolso feitas pelo operador.

"expiring_date"

reembolso/data/voucher

Data de expiração do voucher.

"order_transactions"

reembolso/data/

Número das transações financeiras (serve apenas para a Vtex).

"show_product_grid"

reembolso/data/products

Grade de produtos para troca.

"received_qty"

reembolso/data/products

Quantos produtos o operador recebeu.

"id"

reversa/data/reverse

Id da reversa (string).

"reverse_type"

reversa/data/reverse

Tipo da reversa. Por transportadora ou seller/loja física (string).

"order_id"

reversa/data/reverse

Número do pedido (string).

"courier_collect"

reversa/data/reverse

Se é coleta ou não (boolean).

"courier_contract_id"

reversa/data/reverse

Id do contrato de transportadora vinculado ao e-commerce no Admin.

"seller_info"

reversa/data/reverse

Se tem um seller cadastrado, ele será mostrado.

"skip_process_step"

reversa/data/reverse

(number)0 = gerou coleta/postagem

"freight_by_customer"

reversa/data/reverse

Frete pago pelo consumidor (boolean).

"order_id"

reversa/data/reverse/refunds/ecommerce_order

Id do pedido.

"invoice_number"

reversa/data/reverse/refunds/ecommerce_order

Número da nota fiscal (string).

"uuid"

reversa/data/reverse/refunds/ecommerce_order

Dado da transação financeira.

"ordered_at

reversa/data/reverse/refunds/ecommerce_order

Data de entrega.

"payment_methods"

reversa/data/reverse/refunds/ecommerce_order

Métodos de pagamento. Ex: "creditCard" (string).

"ecommerce_id"

reversa/data/reverse/refunds/ecommerce_order

Id do e-commerce.

"customer_id"

reversa/data/reverse/refunds/ecommerce_order

Id do consumidor.

"customer"

reversa/data/reverse/refunds/customer

Informações a respeito do consumidor e endereço.