...
Gerar TrocoPay em troco de vendas.
Validar e usar Voucher no pagamento de vendas.
Gerar TrocoPay em troco das trocas de numerários.
Validar e usar Voucher no pagamento de troca de numerários.
Realizar a conciliação de Vendas com Voucher e TrocoPay.
Liberação do Módulo
Para que a integração seja habilitada, é necessário ter o módulo “PS - Integração Rodobank” habilitado para o cliente em questão. Com ele habilitado será possível seguir para o próximo passo de configuração, habilitando então outros menus na aplicação.
...
URL Servidor: URL Fornecida pela Rodobank para comunicação.
Usuário: Usuário para autenticação no servidor da Rodobank.
Senha: Senha/Token fornecido pela Rodobank para integração.
Usuário Cancelamento: Usuário que será utilizado para autorizar cancelamento das operações.
Senha Cancelamento: Senha do usuário de cancelamento, conforme cadastro na Rodobank.
Outros p/ TrocoPay Bonif: Código de pagamento em outros no qual serão vinculados os lançamentos de bonificação em TrocoPay.
Com essas configurações informadas, o Petroshow irá habilitar alguns menus a mais para que as operações da integração possam ser efetuadas.
...
Telefone: Telefone do contratado, sendo que não permite informar um telefone já vinculado a outro contratado.
Dias p/ Pagamento: Indica quando o pagamento será efetuado. Caso informado zero irá considerar a mesma data da venda/troca de numerários.
E-mail: E-mail do contratado, sendo que não permite informar um e-mail já vinculado a outro contratado.
Tipo do TrocoPay: Campo com opções conforme API da Rodobank, informando qual é o tipo do TrocoPay que será emitido.
⚠️ Os campos Dias O campo “Dias p/ Pagamento e Tipo do TrocoPay não impactam Pagamento” não impacta em nada na operação do Petroshow, sendo apenas enviados enviado para a Rodobank onde serão será submetidos às validações deles.
...
Para isso, na tela de lançamento do TrocoPay podemos definir separadamente esses valores, sendo que o total não pode ultrapassar o “Valor Pendente” apresentado no rodapé da tela.
...
Após fazer a distribuição dos valores, basta clicar em confirmar que o troco será adicionado na venda/troca de numerários. Mas atenção, nesse momento apenas a definição foi feita, sendo que não houve nenhuma comunicação com os servidores da Rodobank.
Ao informar os demais acertos e então finalizar a venda/troca de numerários é que os dados serão transmitidos para a Rodobank. Quando a venda/troca de numerários estiver no processo de finalização, será apresentado uma mensagem ao usuário informando que os dados estão sendo enviados para a Rodobank.
O PDV tem um comportamento de segurança nesse momento, onde antes de iniciar qualquer comunicação com a Rodobank os dados são todos gravados em banco de dados, e somente após a confirmação dessa gravação o processo é iniciado. Dessa forma garantimos que em uma eventual falha de internet, por exemplo, os dados estão devidamente salvos, podendo serem transmitidos para o retaguarda.
Com isso pronto, o PDV irá enviar os dados para a Rodobank. Com o retorno dado pela API, irá atualizar a transação no banco de dados com as informações obtidas na integração. Caso a Rodobank recuse a transação ou ocorra alguma outra falha inesperada no processo, será exibida uma mensagem em tela para que o usuário fique ciente da situação. Isso não impedirá que a venda/troca de numerários seja finalizada, sendo que o sistema orientará o usuário a tentar novamente pela retaguarda.
Se a transação ocorrer sem nenhum problema, nenhuma mensagem será apresentada e a venda/troca de numerários será finalizada com sucesso.
Ao obter o retorno de sucesso da Rodobank, será atualizado o evento de envio no Petroshow adicionando os campos recebidos da API.
Montagem do JSON para Integração do TrocoPay
A API da Rodobank disponibiliza vários campos para integração. O Petroshow envia alguns deles, e abaixo segue de onde as informações são coletadas:
URL: {{baseUrl}}/trocopay
1 - Dados Gerais:
type: Campo “Tipo do TrocoPay” do cadastro do contratado.
payment_date: Caso o campo “Dias p/ Pagamento” do cadastro do contratado seja 0, será enviado null. Caso tenha valor preenchido, será adicionado essa quantidade de dias à data da venda/troca de numerários.
terminal_fiscal_number: CNPJ do estabelecimento.
2 - Objeto “hired”:
fiscal_number: CNPJ do cadastro da pessoa.
mobile_phone: Telefone informado nos dados do contratado.
car_plate: Placa informada na venda/troca de numerários.
name: Razão social social do cadastro da pessoa.
fantasy_name: Nome fantasia do cadastro da pessoa. Quando não existir envia a razão social.
email: E-mail informado nos dados do contratado.
3 - Objeto “driver”:
mobile_phone: Telefone informado no cadastro do motorista.
cpf: CPF informado no cadastro do motorista.
name: Nome informado no cadastro do motorista.
birthdate: Data de nascimento informado no cadastro do motorista.
4 - Objeto “received_payment”:
...
A habilitação desses campos se dá conforme o tipo de TrocoPay definido no cadastro da pessoa, sendo que serão habilitados as seguintes possibilidades conforme cada tipo de trocopay:
0 - Pagamento para o Contratado com Repasse para o Motorista: Poderá informar troco para o contratado e para o motorista, sendo que é obrigatório informar os dois.
1 - Pagamento para o Contratado: Poderá informar apenas troco para o contratado.
2 - Pagamento para o Motorista: Poderá informar apenas troco para o motorista.
3 - Pagamento para o Destinatário Final - Bônus Contratado: Poderá informar apenas troco para o contratado.
4 - Pagamento para o Destinatário Final - Bônus Motorista: Poderá informar apenas troco para o motorista.
Após fazer a distribuição dos valores, basta clicar em confirmar que o troco será adicionado na venda/troca de numerários. Mas atenção, nesse momento apenas a definição foi feita, sendo que não houve nenhuma comunicação com os servidores da Rodobank.
Ao informar os demais acertos e então finalizar a venda/troca de numerários é que os dados serão transmitidos para a Rodobank. Quando a venda/troca de numerários estiver no processo de finalização, será apresentado uma mensagem ao usuário informando que os dados estão sendo enviados para a Rodobank.
O PDV tem um comportamento de segurança nesse momento, onde antes de iniciar qualquer comunicação com a Rodobank os dados são todos gravados em banco de dados, e somente após a confirmação dessa gravação o processo é iniciado. Dessa forma garantimos que em uma eventual falha de internet, por exemplo, os dados estão devidamente salvos, podendo serem transmitidos para o retaguarda.
Com isso pronto, o PDV irá enviar os dados para a Rodobank. Com o retorno dado pela API, irá atualizar a transação no banco de dados com as informações obtidas na integração. Caso a Rodobank recuse a transação ou ocorra alguma outra falha inesperada no processo, será exibida uma mensagem em tela para que o usuário fique ciente da situação. Isso não impedirá que a venda/troca de numerários seja finalizada, sendo que o sistema orientará o usuário a tentar novamente pela retaguarda.
Se a transação ocorrer sem nenhum problema, nenhuma mensagem será apresentada e a venda/troca de numerários será finalizada com sucesso.
Ao obter o retorno de sucesso da Rodobank, será atualizado o evento de envio no Petroshow adicionando os campos recebidos da API.
Podem ocorrer casos em que a transação seja registrada com sucesso na Rodobank mas que o TrocoPay não tenha sido concluído, como por exemplo quando configurado dias para pagamento ou então que caia em alguma regra da Rodobank que necessite de alteração pelo portal. Nesses casos será apresentada uma mensagem informando da situação.
Montagem do JSON para Integração do TrocoPay
A API da Rodobank disponibiliza vários campos para integração. O Petroshow envia alguns deles, e abaixo segue de onde as informações são coletadas:
URL: {{baseUrl}}/trocopay
1 - Dados Gerais:
type: Campo “Tipo do TrocoPay” do cadastro do contratado.
payment_date: Caso o campo “Dias p/ Pagamento” do cadastro do contratado seja 0, será enviado null. Caso tenha valor preenchido, será adicionado essa quantidade de dias à data da venda/troca de numerários.
terminal_fiscal_number: CNPJ do estabelecimento.
2 - Objeto “hired”:
fiscal_number: CNPJ do cadastro da pessoa.
mobile_phone: Telefone informado nos dados do contratado.
car_plate: Placa informada na venda/troca de numerários.
issuer: Fará as validações na seguinte ordem:
Se pagamento em Carta Frete: CNPJ da transportadora.
Se pagamento em Cheque: CNPJ do emitente do cheque.
Se pagamento em Cartão: CNPJ da administradora do cartão, conforme cadastro no PSFinanceiro.
Se existir motorista: CPF do motorista.
Senão: CNPJ conforme cadastro da pessoa.
number: “TV” + Estab + PDV + COO + Seq. Troco. Ex: “TV|1000|5|159332|2”
type: Dinheiro, Cheque, Cartão de Crédito, Cartão de Débito, Carta Frete, Vale/Outros, Conta Pessoal, Duplicata, PIX, Carteira Digital, Bonificação, Brinde ou Nenhum
transaction: Identificação interna da venda/troca de numerários no PDV
Se pagamento em Dinheiro: “DIN” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Cheque: “CHE” fantasy_name: Nome fantasia do cadastro da pessoa. Quando não existir envia a razão social.
email: E-mail informado nos dados do contratado.
name: Razão social social do cadastro da pessoa.
3 - Objeto “driver”:
mobile_phone: Telefone informado no cadastro do motorista.
cpf: CPF informado no cadastro do motorista.
name: Nome informado no cadastro do motorista.
birthdate: Data de nascimento informado no cadastro do motorista.
4 - Objeto “received_payment”:
⚠️Quando citado informações sobre “Pagamento”, será considerado o pagamento de maior valor existente na venda/troca de numerários.
issuer: Fará as validações na seguinte ordem:
Se pagamento em Carta Frete: CNPJ da transportadora.
Se pagamento em Cheque: CNPJ do emitente do cheque.
Se pagamento em Cartão: CNPJ da administradora do cartão, conforme cadastro no PSFinanceiro.
Se existir motorista: CPF do motorista.
Senão: CNPJ conforme cadastro da pessoa.
number: “TV” + Estab + PDV + COO + Seq
. Pag. + Série do Cheque + Número do Cheque.Se pagamento em Cartão de Crédito: “CRE” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Cartão de Débito: “DEB” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Carta Frete: “CTF” + Estab + PDV + COO + Seq. Pag + Número da Carta Frete
Se pagamento em Vale/Outros: “OUT” + Estab + PDV + COO + Seq. Pag.+ Identificação do Vale/Outros.
Se pagamento em Conta Pessoal: “CMV” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Duplicata: “DUP” + Estab + PDV + COO + Seq. Pag. + Número da Duplicata.
Se pagamento em PIX: “PIX” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Carteira Digital: “CDG” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Bonificação: “BON” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Brinde: “BRI” + Estab + PDV + COO + Seq. Pag.
Senão: “NIF” + Estab + PDV + COO + Seq. Pag.
amount: Soma de todos os pagamentos da venda/troca de numerários.
card_discount: Caso o campo “Cobrar Cartão?” do cadastro do motorista seja “Sim”, envia true, senão envia false.
5 - Objeto “payment_split”:
...
driver_card_identifier: Código de ativação do cartão do cadastro do motorista.
...
hired_change: Valor informado para troco ao contratado.
...
driver_change: Valor informado para troco ao motorista.
...
cash: Soma de todos os outros trocos da venda/troca de numerários que não foram em TrocoPay.
⚠️ Os demais campos e objetos não citados serão enviados com null.
Cancelamento de TrocoPay
Ao cancelar uma venda ou troca de numerários que teve TrocoPay, a operação também será cancelada na Rodobank.
Esse processo é automático, não dependendo de nenhuma ação do usuário. Após concluir o cancelamento no Petroshow, o sistema irá levantar as informações dos acertos e, caso identificado que houve TrocoPay na operação, fará o cancelamento. Ao realizar estorno de vendas no PDV esse processo também é feito.
O procedimento de segurança adotado é o mesmo que no envio do TrocoPay, ou seja, primeiro grava os dados em banco para só depois comunicar com a Rodobank, e então obter os devidos retornos.
Caso ocorram falhas no processo, a operação não será bloqueada, sendo que apenas será apresentada mensagem ao usuário solicitando que tente novamente pela retaguarda.
Ao obter o retorno de sucesso da Rodobank, será atualizado o evento de cancelamento no Petroshow adicionando os campos recebidos da API.
⚠️ O cancelamento só será transmitido para a Rodobank caso a transação de envio do TrocoPay esteja com o status de sucesso, pois é necessário o trocopay_id retornado para realizar o cancelamento.
Montagem do JSON para Cancelamento do TrocoPay
URL: {{baseUrl}}/trocopay/cancel
O JSON de cancelamento do TrocoPay é mais simples, onde enviamos as seguintes informações:
trocopay_id: Código do TrocoPay recebido no momento do envio.
is_total: Sempre será enviado True.
cancelled_by: Operador que solicitou o cancelamento.
login: Usuário de cancelamento definido nas configurações do PDV.
password: Senha de cancelamento definido nas configurações do PDV.
Validação de Voucher/Token do Motorista
Em alguns casos, será possível que o motorista gere um voucher pelo aplicativo para efetuar um pagamento no posto, descontando o saldo da conta dele.
Essa operação também será feita com Vale/Outros. Para isso, na tela de pagamentos do PDV, ao informar um Vale/Outros que integra com a Rodobank, o PDV terá o seguinte comportamento:
Será zerado e bloqueado o campo “Valor”, pois será utilizado o valor retornado pela Rodobank.
Será valorizado com 1 e bloqueado o campo “Qtd. Parcelas”.
O campo “Identificação” passará a se chamar “Voucher”, e será de preenchimento obrigatório.
Será habilitado um botão chamado “Validar Voucher”.
...
Ao clicar em “Validar Voucher” o sistema irá chamar a API da Rodobank para validar se o voucher é válido e também obter o valor, atualizando o campo “Valor”. Depois de validar não será possível alterar o número do voucher, pois é ele quem identifica a operação e justifica o valor informado.
Feito isso, pode ser adicionado o pagamento na venda, mas neste momento ele ainda não foi descontado da conta do motorista.
Montagem do JSON para Validação do Voucher
URL: {{baseUrl}}/GetVoucher
token_code: Voucher informado na tela de pagamento, gerado pelo motorista.
Geração de Vendas com Voucher
Ao finalizar vendas/trocas de numerários onde for identificado o pagamento em voucher da Rodobank, será feita a comunicação com a API da Rodobank nos mesmos moldes da geração do TrocoPay, onde será enviado o Voucher para que seja de fato descontado do motorista.
Como mencionado para outras transações, esse ponto também conta com controles de segurança e registro de todas as operações em banco de dados para posterior consulta e manutenção.
Montagem do JSON para Registro de Venda na Rodobank.
URL: {{baseUrl}}/NewSale
token_code: Voucher informado na tela de pagamento, gerado pelo motorista.
total_products_amount: Total dos produtos da venda ou total dos pagamentos da troca de numerários.
cash_change_amount: Total de troco em dinheiro
terminal_fiscal_number: CNPJ do estabelecimento.
Sincronização e Manutenção na Retaguarda
Toda operação de integração realizada no PDV é sincronizada para o retaguarda.
A estrutura conta com duas tabelas principais, onde uma armazena todas as informações necessárias para a montagem dos JSON’s de integração, e a outra armazena eventos de cada comunicação/falha com a API da Rodobank. Para manutenção desses dados, foi criado no PSGerencial o menu “Cadastros Específicos » Transações Rodobank”.
Ao abrir a tela é apresentado a possibilidade de alguns filtros, e na sequência um grid com as principais informações. Abrindo o cadastro, serão apresentadas todas as informações utilizadas para a integração, bem como todos os eventos de comunicação com a rodobank.
Quando a transação for de TrocoPay, serão habilitadas as abas com informações do Contratado, Motorista, Recebimentos, e também informações sobre o próprio TrocoPay. No caso de operações de pagamento com Voucher, apenas a aba de Eventos e “Vendas (Voucher)” serão apresentadas.
...
. Troco. Ex: “TV|1000|5|159332|2”
type: Dinheiro, Cheque, Cartão de Crédito, Cartão de Débito, Carta Frete, Vale/Outros, Conta Pessoal, Duplicata, PIX, Carteira Digital, Bonificação, Brinde ou Nenhum
transaction: Identificação interna da venda/troca de numerários no PDV
Se pagamento em Dinheiro: “DIN” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Cheque: “CHE” + Estab + PDV + COO + Seq. Pag. + Série do Cheque + Número do Cheque.
Se pagamento em Cartão de Crédito: “CRE” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Cartão de Débito: “DEB” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Carta Frete: “CTF” + Estab + PDV + COO + Seq. Pag + Número da Carta Frete
Se pagamento em Vale/Outros: “OUT” + Estab + PDV + COO + Seq. Pag.+ Identificação do Vale/Outros.
Se pagamento em Conta Pessoal: “CMV” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Duplicata: “DUP” + Estab + PDV + COO + Seq. Pag. + Número da Duplicata.
Se pagamento em PIX: “PIX” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Carteira Digital: “CDG” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Bonificação: “BON” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Brinde: “BRI” + Estab + PDV + COO + Seq. Pag.
Senão: “NIF” + Estab + PDV + COO + Seq. Pag.
amount: Soma de todos os pagamentos da venda/troca de numerários.
card_discount: Caso o campo “Cobrar Cartão?” do cadastro do motorista seja “Sim”, envia true, senão envia false.
5 - Objeto “payment_split”:
driver_card_identifier: Código de ativação do cartão do cadastro do motorista.
amount_spent: Total dos produtos da venda, ou valor total dos pagamentos datroca de numerários.
hired_change: Valor informado para troco ao contratado.
driver_change: Valor informado para troco ao motorista.
cash: Soma de todos os outros trocos da venda/troca de numerários que não foram em TrocoPay.
⚠️ Os demais campos e objetos não citados serão enviados com null ou zerados.
TrocoPay de Bonificação
Quando existe a integração com a Rodobank, ao finalizar vendas que geraram pontos em bonificação, estes serão convertidos para o valor conforme configurado na retaguarda, e então será apresentado em uma tela para que o usuário possa informar o motorista que receberá o TrocoPay.
Nessa operação, somente é possível dar troco ao motorista.
Ao confirmar os dados, as informações serão armazenadas para posterior envio para a Rodobank. Além disso, o sistema irá zerar os pontos de bonificação da venda, para que esses pontos não somem no processo de bonificação do Petroshow, pois já foram pagos via TrocoPay. Caso o usuário cancele a operação, aí sim continuará no fluxo de bonificação do Petroshow.
Esses dados serão sincronizados para a Retaguarda gerando um acerto em outros, com o código de outros definido nas configurações do PDV.
Montagem do JSON para Integração do TrocoPay de Bonificação
A API da Rodobank disponibiliza vários campos para integração. O Petroshow envia alguns deles, e abaixo segue de onde as informações são coletadas:
URL: {{baseUrl}}/trocopay
1 - Dados Gerais:
type: Para bonificação, sempre é enviado o type 4 - Pagamento para o Destinatário Final - Bônus Motorista
payment_date: Caso o campo “Dias p/ Pagamento” do cadastro do contratado seja 0, será enviado null. Caso tenha valor preenchido, será adicionado essa quantidade de dias à data da venda/troca de numerários.
terminal_fiscal_number: CNPJ do estabelecimento.
2 - Objeto “hired”:
fiscal_number: CNPJ do cadastro da pessoa.
mobile_phone: Telefone informado nos dados do contratado.
car_plate: Placa informada na venda/troca de numerários.
name: Razão social social do cadastro da pessoa.
fantasy_name: Nome fantasia do cadastro da pessoa. Quando não existir envia a razão social.
email: E-mail informado nos dados do contratado.
3 - Objeto “driver”:
mobile_phone: Telefone informado no cadastro do motorista.
cpf: CPF informado no cadastro do motorista.
name: Nome informado no cadastro do motorista.
birthdate: Data de nascimento informado no cadastro do motorista.
4 - Objeto “received_payment”:
⚠️Quando citado informações sobre “Pagamento”, será considerado o pagamento de maior valor existente na venda/troca de numerários.
issuer: Fará as validações na seguinte ordem:
Se pagamento em Carta Frete: CNPJ da transportadora.
Se pagamento em Cheque: CNPJ do emitente do cheque.
Se pagamento em Cartão: CNPJ da administradora do cartão, conforme cadastro no PSFinanceiro.
Se existir motorista: CPF do motorista.
Senão: CNPJ conforme cadastro da pessoa.
number: “BO” + Estab + PDV + COO. Ex: “BO|1000|5|159332”
type: Dinheiro, Cheque, Cartão de Crédito, Cartão de Débito, Carta Frete, Vale/Outros, Conta Pessoal, Duplicata, PIX, Carteira Digital, Bonificação, Brinde ou Nenhum
transaction: Identificação interna da venda/troca de numerários no PDV
Se pagamento em Dinheiro: “BO|DIN” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Cheque: “BO|CHE” + Estab + PDV + COO + Seq. Pag. + Série do Cheque + Número do Cheque.
Se pagamento em Cartão de Crédito: “BO|CRE” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Cartão de Débito: “BO|DEB” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Carta Frete: “BO|CTF” + Estab + PDV + COO + Seq. Pag + Número da Carta Frete
Se pagamento em Vale/Outros: “BO|OUT” + Estab + PDV + COO + Seq. Pag.+ Identificação do Vale/Outros.
Se pagamento em Conta Pessoal: “BO|CMV” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Duplicata: “BO|DUP” + Estab + PDV + COO + Seq. Pag. + Número da Duplicata.
Se pagamento em PIX: “BO|PIX” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Carteira Digital: “BO|CDG” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Bonificação: “BO|BON” + Estab + PDV + COO + Seq. Pag.
Se pagamento em Brinde: “BO|BRI” + Estab + PDV + COO + Seq. Pag.
Senão: “BO|NIF” + Estab + PDV + COO + Seq. Pag.
amount: No TrocoPay de bonificação, sempre será enviado 0.
card_discount: Caso o campo “Cobrar Cartão?” do cadastro do motorista seja “Sim”, envia true, senão envia false.
5 - Objeto “payment_split”:
driver_card_identifier: Código de ativação do cartão do cadastro do motorista.
amount_spent: No TrocoPay de bonificação, sempre será enviado 0.
hired_change: No TrocoPay de bonificação, sempre será enviado 0.
driver_change: No TrocoPay de bonificação, sempre será enviado 0.
cash: No TrocoPay de bonificação, sempre será enviado 0.
coupon: Valor de bonificação que será enviado para o motorista.
⚠️ Os demais campos e objetos não citados serão enviados com null ou zerados.
Cancelamento de TrocoPay
Ao cancelar uma venda ou troca de numerários que teve TrocoPay, a operação também será cancelada na Rodobank.
Esse processo é automático, não dependendo de nenhuma ação do usuário. Após concluir o cancelamento no Petroshow, o sistema irá levantar as informações dos acertos e, caso identificado que houve TrocoPay na operação, fará o cancelamento. Ao realizar estorno de vendas no PDV esse processo também é feito.
O procedimento de segurança adotado é o mesmo que no envio do TrocoPay, ou seja, primeiro grava os dados em banco para só depois comunicar com a Rodobank, e então obter os devidos retornos.
Caso ocorram falhas no processo, a operação não será bloqueada, sendo que apenas será apresentada mensagem ao usuário solicitando que tente novamente pela retaguarda.
Ao obter o retorno de sucesso da Rodobank, será atualizado o evento de cancelamento no Petroshow adicionando os campos recebidos da API.
O PDV sempre tentará fazer o cancelamento total do TrocoPay. Caso não seja possível, poderá ser sincronizado para a retaguarda e por lá fazer o cancelamento Parcial.
⚠️ O cancelamento só será transmitido para a Rodobank caso a transação de envio do TrocoPay esteja com o status de sucesso, pois é necessário o trocopay_id retornado para realizar o cancelamento.
Montagem do JSON para Cancelamento do TrocoPay
URL: {{baseUrl}}/trocopay/cancel
O JSON de cancelamento do TrocoPay é mais simples, onde enviamos as seguintes informações:
trocopay_id: Código do TrocoPay recebido no momento do envio.
is_total: Sempre será enviado True no PDV. Na retaguarda há como definir.
cancelled_by: Operador que solicitou o cancelamento.
login: Usuário de cancelamento definido nas configurações do PDV.
password: Senha de cancelamento definido nas configurações do PDV.
Validação de Voucher/Token do Motorista
Em alguns casos, será possível que o motorista gere um voucher pelo aplicativo para efetuar um pagamento no posto, descontando o saldo da conta dele.
Essa operação também será feita com Vale/Outros. Para isso, na tela de pagamentos do PDV, ao informar um Vale/Outros que integra com a Rodobank, o PDV terá o seguinte comportamento:
Será zerado e bloqueado o campo “Valor”, pois será utilizado o valor retornado pela Rodobank.
Será valorizado com 1 e bloqueado o campo “Qtd. Parcelas”.
O campo “Identificação” passará a se chamar “Voucher”, e será de preenchimento obrigatório.
Será habilitado um botão chamado “Validar Voucher”.
...
Ao clicar em “Validar Voucher” o sistema irá chamar a API da Rodobank para validar se o voucher é válido e também obter o valor, atualizando o campo “Valor”. Depois de validar não será possível alterar o número do voucher, pois é ele quem identifica a operação e justifica o valor informado.
Feito isso, pode ser adicionado o pagamento na venda, mas neste momento ele ainda não foi descontado da conta do motorista.
Montagem do JSON para Validação do Voucher
URL: {{baseUrl}}/GetVoucher
token_code: Voucher informado na tela de pagamento, gerado pelo motorista.
Geração de Vendas com Voucher
Ao finalizar vendas/trocas de numerários onde for identificado o pagamento em voucher da Rodobank, será feita a comunicação com a API da Rodobank nos mesmos moldes da geração do TrocoPay, onde será enviado o Voucher para que seja de fato descontado do motorista.
Como mencionado para outras transações, esse ponto também conta com controles de segurança e registro de todas as operações em banco de dados para posterior consulta e manutenção.
Montagem do JSON para Registro de Venda na Rodobank.
URL: {{baseUrl}}/NewSale
token_code: Voucher informado na tela de pagamento, gerado pelo motorista.
total_products_amount: Total dos produtos da venda ou total dos pagamentos da troca de numerários.
cash_change_amount: Total de troco em dinheiro
terminal_fiscal_number: CNPJ do estabelecimento.
Cancelamento de Venda com Voucher
Atualmente podemos efetuar pagamentos de vendas com voucher, como mencionado anteriormente. Assim, ao finalizar a venda enviamos a informação para a Rodobank de que aquele voucher foi utilizado, e isso fará com que o valor saia da conta do motorista/contratado e passe para a conta do cliente.
Ao cancelar essa venda, esse processo não é feito de forma automático, pois a Rodobank não disponibiliza forma de integração para essa operação. Diante disso, ao realizar um cancelamento de venda que tenha sido paga com voucher, o sistema apenas irá apresentar uma mensagem informando que o estorno deve ser feito pelo portal da Rodobank.
Sincronização e Manutenção na Retaguarda
Toda operação de integração realizada no PDV é sincronizada para o retaguarda.
A estrutura conta com duas tabelas principais, onde uma armazena todas as informações necessárias para a montagem dos JSON’s de integração, e a outra armazena eventos de cada comunicação/falha com a API da Rodobank. Para manutenção desses dados, foi criado no PSGerencial o menu “Cadastros Específicos » Transações Rodobank”.
Ao abrir a tela é apresentado a possibilidade de alguns filtros, e na sequência um grid com as principais informações. Abrindo o cadastro, serão apresentadas todas as informações utilizadas para a integração, bem como todos os eventos de comunicação com a rodobank.
Quando a transação for de TrocoPay, serão habilitadas as abas com informações do Contratado, Motorista, Recebimentos, e também informações sobre o próprio TrocoPay. No caso de operações de pagamento com Voucher, apenas a aba de Eventos e “Vendas (Voucher)” serão apresentadas.
Nessa rotina, além de consultar os dados é possível realizar operações de envio e cancelamento, de acordo com cada operação. Diante disso, em casos de falha nas operações do PDV, através desse cadastro é possível ajustar o que está faltando e fazer o novo envio.
...
Conciliação e Baixa dos Lançamentos
Para confrontar os dados registrados no Petroshow com os capturados pela Rodobank, foi desenvolvido uma rotina no PSFinanceiro, no menu “Caixa/Bancos » Cartão/Outros » Conciliação Rodobank”.
Essa rotina possibilita comparar os dados das transações nos dois softwares (Petroshow e Rodobank), e também dá a possibilidade de baixar os acertos para que os portadores sejam corretamente movimentados. Por baixo dos panos ela aciona as mesmas funcionalidades que a rotina de manutenção de vales/outros. É possível também aplicar acréscimos/descontos, bem como alterar portadores e datas de baixa.
...
A chave de comparação é o IDTrocoPay, ou no caso das vendas com voucher, o ID da venda. Essas informações são apresentadas nas colunas “ID Rodobank“ do grid.
Quando selecionada a opção de Vendas/Voucher, é possível considerar ou não vendas estornadas. Para o TrocoPay, vendas canceladas nem são retornadas pela Rodobank, mas no caso do pagamento com voucher é retornada com o status “ESTORNADO“.
...
Consulta das Informações no PDV
Para que o usuário do PDV tenha noção de como está a transação na Retaguarda, foi disponibilizada uma opção no menu de consultas chamado “Consultar Transações da Rodobank“.
Essa tela é um espelho das transações no retaguarda, ou seja, ao autorizar uma transação pela retaguarda, essa tela irá apresentar todos os dados por lá resgatados.
...
⚠️ É importante salientar que os dados vem da retaguarda, então é necessário que a sincronização esteja feita para que eles possam ser listados.
⚠️ Além disso, a rotina apresenta as informações conforme estão registradas no Petroshow. Existem casos onde são é necessário realizar operações direto no portal da Rodobank, e essas informações não são retornadas para o Petroshow. Diante disso, esses dados adicionais não serão listados nem no PDV nem na Retaguarda.
Outras Informações Importantes
No PDV, cada comunicação feita com os servidores da Rodobank vão gravar logs de envio e retorno. Para não gerar muitos arquivos, o PDV criará uma pasta chamada “Rodobank” dentro da pasta de log padrão, a LogPDV. Dentro dela, criará um arquivo por dia contendo as transações realizadas, gravando dados de qual URL foi chamada, o que foi enviado e o que foi retornado.
...
dados de qual URL foi chamada, o que foi enviado e o que foi retornado.
...
Ao cancelar vendas no PDV e no Retaguarda, caso identificado que os acertos de outros integrados com a Rodobank já estejam baixados, não será possível executar o processo, da mesma maneira que já é validado hoje uma tentativa de cancelamento com duplicata baixada, por exemplo.
Para mais informações, consulte as tarefas envolvidas no processo:
Epic PS-5600 - Integração com a Rodobank
PS-5607 - Rodobank - Criação de Estrutura para Integração
PS-5609 - Rodobank - Campos no Retaguarda para Configurações da Integração
PS-5613 - Rodobank - Realizar a Integração de Troco em Outros
PS-5614 - Rodobank - Realizar a Integração de Acerto em Outros
PS-5615 - Rodobank - Habilitar Troco em Outros na Troca de Numerários
PS-5616 - Rodobank - Realizar a Integração de Pontos de Bonificação/Cashback
PS-5617 - Rodobank - Rotina para Conciliação dos Lançamentos
PS-5618 - Rodobank - Rotina para Monitoramento e Ações sobre Transações
PS-5971 - Rodobank - Melhorias de Usabilidade Identificadas na Homologação