[OMS] Prateleira Infinita

[OMS] Prateleira Infinita

Essa base visa informar como ocorre o funcionamento da prateleira infinita ao nível técnico.

Utilidade da prateleira infinita

A Prateleira Infinita, ou venda digital, tem como objetivo integrar o aplicativo Wake U às vendas físicas, conectando o ambiente digital ao ponto de venda. Dessa forma, é possível realizar pedidos online diretamente da loja física, complementando a compra do cliente com produtos que não estão disponíveis no momento, mas podem ser adquiridos digitalmente pelo aplicativo.

Funcionamento

No aplicativo, ocorrem comunicações com as APIs do SinOMS (sessão de prateleira infinita) que comunicam com as APIs de Storefront da Wake plataforma, onde é utilizado GraphQL.

Toda informação que é consultada, são utilizadas as queries e toda alteração de dados é utilizado alguma mutation.

Fluxograma das chamadas

Fluxo APP - Wake Sales.jpg

Explicação do fluxo de pagamento

O aplicativo vai ser responsável por criar o pedido na Wake plataforma assim que encerra o processo de pagamento do pedido, onde é utilizado a API prateleirainfinita/checkout-finalizar do SinOMS no qual o SinOMS chama a API CheckoutComplete da Wake plataforma em seu GraphQL do StoreFront.

Após esse processo nos é devolvido que o pedido foi criado na plataforma, onde aguardamos um código de transação para poder seguir nas próximas etapas.

O código de transação é necessário para podermos mudar um pedido para o status de pago na Wake plataforma, e fica gravado na tabela PRATELEIRA_INFINITA_PEDIDOS na coluna PLATAFORMA_PAGAMENTO_CHAVE_TRANSACAO.

Caso essa parte não ocorra o processo é interrompido com erro.

Nos próximos passos, é enviado uma solicitação de pagamento para a Pagar.me/Adyen através do SinOMS com as APIs da plataforma de pagamento de forma assíncrona esperando um retorno que a transação foi de fato efetuada.

Para isso é configurado um webhook na plataforma de pagamento para poder nos devolver as informações, chamando nossas APIs quando o processo estiver correto.

Nessa etapa é alimentado a tabela PRATELEIRA_INFINITA_PEDIDOS_TRANSACOES_FINANCEIRAS quando o pedido é criado na plataforma de pagamento populando principalmente a coluna ID_PEDIDO_GATEWAY e quando a transação é confirmado populamos a coluna ID_PAGAMENTO_GATEWAY, confirmando que houve a notificação de cobrança.

image-20250605-184518.png

Enquanto o pagamento não é aprovado, o sistema permanece em looping buscando o id da transação, e aguardando que o cliente confirme,efetue o pagamento.

Após essa etapa, o processo é colocado na fila do Sincron para podermos informar para a plataforma através do SinHUB que o pedido foi pago com sucesso, alterando o status de pagamento pendente para pago na Wake.

Em paralelo, mesmo após a plataforma receber os dados de pagamento, existem rotinas do sistema para marcar os campos da tabela PRATELEIRA_INFINITA_PEDIDOS_TRANSACOES_FINANCEIRAS nas colunas TRANSACAO_CANCELADA, TRANSACAO_CAPTURADA e TRANSACAO_PEDIDO_FECHADO, para assim termos o controle de quais etapas foram realizadas com êxito nos pedidos, e se alguma etapa não foi finalizada.

image-20250605-184719.png

Também existe a coluna de TRANSACAO_ATUAL na tabela de PRATELEIRA_INFINITA_PEDIDOS_TRANSACOES_FINANCEIRAS.

 

Através dela, é possível visualizar as informações mais recentes das transações de pagamento válidas para o cliente. Isso porque um mesmo pedido pode ter várias tentativas de pagamento, gerando uma nova linha a cada tentativa. Quando a transação não é concluída, ela recebe o valor TRANSACAO_ATUAL = 0. Já se for aprovada com sucesso, essa linha é marcada com TRANSACAO_ATUAL = 1.

image-20250611-131215.png

 

Autor(a): Carlos Sousa e Ana Carolina.

@2024 Síntese, uma empresa LWSA