(16) 981791110 contato@policast.studio

Introdução

Criar um sistema de rastreamento de pedidos pode ser uma tarefa desafiadora, especialmente se o objetivo é integrar serviços de terceiros para obter informações de rastreamento em tempo real. Neste artigo, mostraremos como usar o Symfony para criar um sistema de rastreamento de pedidos que possa ser integrado com serviços de terceiros para acompanhar o status de entrega de pedidos em tempo real.

Passo 1: Criar um modelo de pedidos

O primeiro passo para criar um sistema de rastreamento de pedidos é criar um modelo de pedidos que possa ser persistido em um banco de dados. Podemos criar um modelo de pedidos simples com os seguintes atributos:

– ID do pedido
– Nome do cliente
– Endereço de entrega
– Código de rastreamento
– Status do pedido

Podemos usar o Doctrine para criar esse modelo. Veja o exemplo abaixo:


// src/Entity/Order.php

namespace AppEntity;

use DoctrineORMMapping as ORM;

/**
* @ORMEntity(repositoryClass="AppRepositoryOrderRepository")
*/
class Order
{
/**
* @ORMId()
* @ORMGeneratedValue()
* @ORMColumn(type="integer")
*/
private $id;

/**
* @ORMColumn(type="string", length=255)
*/
private $customerName;

/**
* @ORMColumn(type="string", length=255)
*/
private $deliveryAddress;

/**
* @ORMColumn(type="string", length=255, nullable=true)
*/
private $trackingCode;

/**
* @ORMColumn(type="string", length=50)
*/
private $status;

// getters e setters
}

Passo 2: Integrar serviço de rastreamento de terceiros

Agora que temos um modelo de pedidos, podemos integrar um serviço de rastreamento de terceiros para obter informações de rastreamento em tempo real. Para fins de exemplo, usaremos o serviço de rastreamento de encomendas dos Correios. Podemos integrar esse serviço usando a API de rastreamento dos Correios. Veja o exemplo abaixo:


// src/Service/CorreiosTracking.php

namespace AppService;

use GuzzleHttpClient;

class CorreiosTracking
{
private $client;

public function __construct(Client $client)
{
$this->client = $client;
}

public function getTrackingInfo($trackingCode)
{
$url = 'https://webservice.correios.com.br/service/rest/rastro/rastroMobile';

$response = $this->client->request('POST', $url, [
'form_params' => [
'objetos' => $trackingCode,
]
]);

if ($response->getStatusCode() === 200) {
$xml = simplexml_load_string($response->getBody()->getContents());
$status = $xml->evento->status->__toString();
$data = $xml->evento->data->__toString();
$hora = $xml->evento->hora->__toString();
return sprintf("%s em %s às %s.", $status, $data, $hora);
} else {
throw new Exception('Erro ao obter informações de rastreamento.');
}
}
}

Nesse exemplo, usamos o Guzzle para enviar uma solicitação POST para a API de rastreamento dos Correios e obter as informações de rastreamento em formato XML. Em seguida, convertemos as informações em uma string formatada e as retornamos para serem exibidas no sistema de rastreamento de pedidos.

Passo 3: Criar uma página de rastreamento de pedidos

Agora que temos um modelo de pedidos e um serviço de rastreamento de terceiros integrado, podemos criar uma página de rastreamento de pedidos para que os clientes possam acompanhar o status de entrega de seus pedidos em tempo real. Podemos criar uma página simples com um formulário para que os clientes insiram seus códigos de rastreamento e visualizem as informações de rastreamento.

Veja o exemplo abaixo:


// src/Controller/OrderController.php

namespace AppController;

use AppEntityOrder;
use AppServiceCorreiosTracking;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;

class OrderController extends AbstractController
{
public function trackOrder(Request $request, CorreiosTracking $correiosTracking)
{
$form = $this->createFormBuilder()
->add('trackingCode', null, [
'required' => true,
'label' => 'Código de rastreamento',
'attr' => [
'placeholder' => 'Insira seu código de rastreamento',
],
])
->getForm();

$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
$trackingCode = $form->getData()['trackingCode'];

// busca informações de rastreamento do código informado
$trackingInfo = $correiosTracking->getTrackingInfo($trackingCode);

return $this->render('order/tracking.html.twig', [
'trackingCode' => $trackingCode,
'trackingInfo' => $trackingInfo,
]);
}

return $this->render('order/trackOrder.html.twig', [
'form' => $form->createView(),
]);
}
}

Nesse exemplo, usamos o Symfony para criar um formulário de rastreamento de pedidos e exibir as informações de rastreamento em uma página de rastreamento de pedidos. Quando um cliente envia uma solicitação para rastrear um pedido, usamos o serviço de rastreamento de terceiros para obter as informações de rastreamento e exibimos as informações na página de rastreamento de pedidos.

Conclusão

Neste artigo, mostramos como usar o Symfony para criar um sistema de rastreamento de pedidos que pode ser integrado com serviços de terceiros para acompanhar o status de entrega de pedidos em tempo real. Para fazer isso, criamos um modelo de pedidos, integramos um serviço de rastreamento de terceiros e criamos uma página de rastreamento de pedidos. Com essas ferramentas, podemos fornecer aos clientes informações de rastreamento em tempo real, melhorando a experiência do cliente e aumentando a eficiência das operações de negócios.