Ir para conteúdo
  • Cadastre-se

dev botao

O ACBr já esta preparado p receber pagamento via QrCode ?


Ver Solução Respondido por Juliomar Marchetti,
  • Este tópico foi criado há 1470 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Consultores
Postado
20 minutos atrás, ALA disse:

posta do pessoal da SkyTEF,  tem como fazer como eles estão solicitando ?

Usa a propriedade "Restricoes".

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 1 mês depois ...
Postado

Tem duas formas de chamas a função de transação por carteira digital a forma direta e indireta. A única coisa que acredito que o ACBr não faz é montar o QRCode, mais hoje poucas aplicações exibem o QRCode grande parte dos estabelecimentos utilizam QRCode ''fixos de plaquinha".

A forma direta de chamar é quando você utiliza a função 122 para transação de venda e 123 para transação de estorno. Já a forma indireta é para quem utiliza a função 0 menu genérica que retorna as principais transações e o estorno através do menu genérico função 200, neste caso como é indireto é necessário habilitar no CliSiTef.ini:

 [Geral]                                                                                                                                                                                                                                                                                   TransacoesAdicionaisHabbilitadas=7;8;

O fluxo da transação é o mesmo, com poucas diferencias em alguns retornos de TipoCampo, por exemplo o TipoCampo 132 que é o retorno de bandeiras, em carteira não é retornado. Para identificar a Carteira Digital é necessário receber o TipoCampo 106. Ou o caso da string do QRCode que vem no TipoCampo 584, porém como informado acima é necessário habilitar para que seja devolvido a string do QRCode. 

A grande parte das Carteiras Digitais utilizam o módulo CardSE, na verdade acredito que todas utilizam, sendo assim para simular é necessário instalar o módulo no SiTDemo. Lembrando que a simulação da transação de Carteira Digital não é exatamente como em Produção por causa da leitura do QRCode entre outras coisas.

Pode entrar em contato com a equipe da SKYTEF (11)2175-9500, todas estão preparados para auxiliar da melhor maneira possível. 

  • Curtir 2
  • Obrigado 1
Postado

Pessoal, por padrão grande parte dos cliente utilizam a placa com o QRCode, porém é possível que seja devolvida um string para a aplicação montar ou até mesmo exibida no PinPad.

É padrão para CliSiTef tenta exibir o QRCode no PinPad por isso apresentou o erro acima para parar de exibir o erro, é necessário adicionar o parâmetro  {DevolveStringQRCode=1}. Essa informação deve constar no parâmetro ParamAdic da função IniciaFuncaoSiTefInterativo, e deve ter o valor “1” caso o desejo seja o retorno da string, e não a exibição no PinPad.

Caso alguém quera utilizar a string do QRCode será devolvida no TipoCampo 584. A aplicação caso opte deve gerar e exibir o QRCode para leitura pelo cliente. Caso esse parâmetro esteja ausente, o comportamento é o padrão (exibição no PinPad).

Em ambas as situações acima, seja para exibir no PinPad, ou a Aplicação exibir e ou utilizar a placa com o QRCode. O cliente deverá utilizar seu smartphone para ler o QRCode, por meio do aplicativo do fornecedor da Carteira Digital (que já tem o seu cartão de crédito ou débito cadastrado) para aprovação da transação.

Para que o PinPad possa exibir o QRCode, este deve ter os seguintes requisitos:

- Versão mínima deve ser 2.03 – ABECS

- Deve possuir capacidade para tratamento de arquivos multimídia, especificamente o formato PNG.

  • Curtir 1
  • Obrigado 1
  • 3 semanas depois ...
Postado (editado)

ACBrTEFD.TEFCliSiTef.OperacaoCRT  :=122 // Forma Direita.

 ACBrTEFD.TEFCliSiTef.Restricoes := PChar(('{DevolveStringQRCode=1};{CPFColetado=xxxxxxxxxxx}'))

if ACBrTEFD.CRT( lValorPago , strResp01,  vCupom) then

begin

 Gravar aq o retorno do QRCode.

 

end;

CPF coletado é pro cliente receber notificação push direto no celular.

A minha dúvida é  como pegar esse retorno do Tef para o " Desenho do QrCode. " ja tenho a função para isso. Falta saber como recupero isso do TEF.

 

Editado por Lucas Bonjardim
Postado
Em 20/02/2020 at 10:08, ALA disse:

Bom dia pessoal, após ajustes do pessoal da SkyTEF na dll, consegui prosseguir aqui. Agora eles estão solicitando que eu envio na

função IniciaFuncaoSiTefInterativo o parametro {DevolveStringQRCode=1}, alguem sabe onde devo alterar isso ?

ACBrTEFD.TEFCliSiTef.OperacaoCRT  :=122 // Forma Direita.

 ACBrTEFD.TEFCliSiTef.Restricoes := PChar(('{DevolveStringQRCode=1};{CPFColetado=xxxxxxxxxxx}'))

if ACBrTEFD.CRT( lValorPago , strResp01,  vCupom) then

begin

 Gravar aq o retorno do QRCode.

 

end;

CPF coletado é pro cliente receber notificação push direto no celular.

A minha dúvida é  como pegar esse retorno do Tef para o " Desenho do QrCode. " ja tenho a função para isso. Falta saber como recupero isso do TEF.

  • 5 semanas depois ...
Postado
Em 09/05/2020 at 15:55, Lucas Bonjardim disse:

ACBrTEFD.TEFCliSiTef.OperacaoCRT  :=122 // Forma Direita.

 ACBrTEFD.TEFCliSiTef.Restricoes := PChar(('{DevolveStringQRCode=1};{CPFColetado=xxxxxxxxxxx}'))

if ACBrTEFD.CRT( lValorPago , strResp01,  vCupom) then

begin

 Gravar aq o retorno do QRCode.

 

end;

CPF coletado é pro cliente receber notificação push direto no celular.

A minha dúvida é  como pegar esse retorno do Tef para o " Desenho do QrCode. " ja tenho a função para isso. Falta saber como recupero isso do TEF.

Boa tarde, estou neste mesmo problema. Onde retorna a String do QrCode para que possa exibir na tela.

Já conseguiu resolver?

Postado
22 horas atrás, paulocoli disse:

Boa tarde, estou neste mesmo problema. Onde retorna a String do QrCode para que possa exibir na tela.

Já conseguiu resolver?

ola, acho que é aqui.-> Caso alguém quera utilizar a string do QRCode será devolvida no TipoCampo 584. A aplicação caso opte deve gerar e exibir o QRCode para leitura pelo cliente

  • 2 semanas depois ...
  • Fundadores
Postado

2.2 - Permaneça no assunto - Quando tiver uma dúvida diferente do assunto no tópico, poste em novo tópico. Não use algo equivalente a "aproveitando o gancho... [dúvida não relacionada com o tópico aqui]". Favor leia as regras do fórum.

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado (editado)

Daniel, bom dia. O Assunto e o mesmo, esse pinpad que postei esta preparado para mostrar o QrCode da venda com carteira digital..

Editado por ALA
  • Consultores
Postado
1 hora atrás, ALA disse:

Daniel, bom dia. O Assunto e o mesmo, esse pinpad que postei esta preparado para mostrar o QrCode da venda com carteira digital..

Oi ALA,

   Para esclarecer, não é assim que encaramos o termo "assunto". Se fosse assim, todo o fórum poderia ficar em apenas um tópico "automação comercial".

  Veja que a regra fala sobre "dúvida diferente". A dúvida que abriu o tópico é sobre o ACBrTEF estar preparado para receber pagamento QRCode,  a última que você postou é sobre um equipamento específico. As respostas não tem uma relação. Então pedimos que abra um novo tópico.

   Agradecemos sua compreensão.

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 3 semanas depois ...
Postado

Olá, Bom dia,

Eu fiz uma implementação no CliSiTef para justamente poder operar o QRCode, com o parâmetro {DevolveStringQRCode=1}

Segue a contribuição anexa.

                50 :
                   begin
                     MensagemOperador := 'QRCODE=' + ProcessaMensagemTela( Mensagem );
                     DoExibeMsg( opmExibirMsgOperador, MensagemOperador, (TipoCampo=584) ) ;
                   end;
                 51 :
                   begin
                     DoExibeMsg( opmRemoverMsgOperador, '' ) ;
                   end;

Desta forma, o ACBr transfere para a aplicação os dados para poder gerar e exibir em tela o QRCode e depois solicita a remoção quando não for mais necessário.

Observar que coloquei um prefixo "QRCODE=" que deve ser removido pela aplicação, o conteúdo do QRCode vem após o sinal de igual.

Anexo fonte alterado.

@Daniel Simoes

ACBrTEFDCliSiTef.pas

  • Curtir 1
Postado

Olá @Daniel Simoes

Gostaria de enviar mais uma contribuição, implementei para obter os campos de identificação da carteira digital, que são muito importantes para fazer a identificação da carteira que foi utilizada para o pagamento.

ACBrTEFComum.pas

fpIdCarteiraDigital : String; // Código de identificação da carteira digital
fpNomeCarteiraDigital : String; // Nome da carteira digital
property IdCarteiraDigital: String read fpIdCarteiraDigital;
property NomeCarteiraDigital: String read fpNomeCarteiraDigital;

ACBrTEFCliSiTefComum.pas

106: fpIdCarteiraDigital := LinStr;
107: fpNomeCarteiraDigital := LinStr;

Fontes anexos.

Desta forma a aplicação pode obter a identificação da carteira, no meu caso obtenho conforme exemplo abaixo:

FACBrTEFD.RespostasPendentes[Contador].IdCarteiraDigital

FACBrTEFD.RespostasPendentes[Contador].NomeCarteiraDigital

Já testei o processo todo e funciona perfeitamente, com essas alterações é possível operacionalizar toda a parte do módulo CardSE (carteiras digitais).

 

 

ACBrTEFCliSiTefComum.pas ACBrTEFComum.pas

Postado

@Daniel Simoes

Os campos 106 e 107 estão no manual específico que trata o módulo CardSe (carteira Digital).

Anexo manual, página 19.

Obs: aproveitando, pegamos um problema, ao cancelar um pagamento via carteira digital, a transação de cancelamento está ficando pendente, estamos fazendo algumas modificações pra ver se resolve, caso resolva lhe envio em seguida.

CliSiTef - Interface com a aplicação - Carteiras Digitais - 1.25.pdf

Postado

@Daniel Simoes Boa tarde!

Se possível adicionar a contribuição, para alterar o método de cancelamento "TACBrTEFDCliSiTef.CNC" para respeitar as restrições enviadas, afim de não gerar a mensagem de que o PinPad não suporta QRCode. Ex.: {DevolveStringQRCode=1}

 

function TACBrTEFDCliSiTef.CNC(Rede, NSU: String; DataHoraTransacao: TDateTime;
  Valor: Double): Boolean;
var
   Restr : AnsiString;
   Sts : Integer;
begin
  Respostas.Values['146'] := FormatFloat('0.00',Valor);
  Respostas.Values['147'] := FormatFloat('0.00',Valor);
  Respostas.Values['515'] := FormatDateTime('DDMMYYYY',DataHoraTransacao) ;
  Respostas.Values['516'] := NSU ;

  Restr := fRestricoes;
  if Restr = '' then
     Restr := '[10]';

  Sts := FazerRequisicao( fOperacaoCNC, 'CNC', Valor, '', Restr);

  if Sts = 10000 then
     Sts := ContinuarRequisicao( CACBrTEFCliSiTef_ImprimeGerencialConcomitante ) ;

  Result := ( Sts = 0 ) ;

  if not Result then
     AvaliaErro( Sts )
  else
     if not CACBrTEFCliSiTef_ImprimeGerencialConcomitante then
        ProcessarResposta;
end;

A questão do Valor ali por padrão é 0 quando não informado.

Fonte anexo.

ACBrTEFDCliSiTef.pas

  • Curtir 1
  • Moderadores
Postado
2 horas atrás, hebertwng disse:

@Daniel Simoes Boa tarde!

Se possível adicionar a contribuição, para alterar o método de cancelamento "TACBrTEFDCliSiTef.CNC" para respeitar as restrições enviadas, afim de não gerar a mensagem de que o PinPad não suporta QRCode. Ex.: {DevolveStringQRCode=1}

 


function TACBrTEFDCliSiTef.CNC(Rede, NSU: String; DataHoraTransacao: TDateTime;
  Valor: Double): Boolean;
var
   Restr : AnsiString;
   Sts : Integer;
begin
  Respostas.Values['146'] := FormatFloat('0.00',Valor);
  Respostas.Values['147'] := FormatFloat('0.00',Valor);
  Respostas.Values['515'] := FormatDateTime('DDMMYYYY',DataHoraTransacao) ;
  Respostas.Values['516'] := NSU ;

  Restr := fRestricoes;
  if Restr = '' then
     Restr := '[10]';

  Sts := FazerRequisicao( fOperacaoCNC, 'CNC', Valor, '', Restr);

  if Sts = 10000 then
     Sts := ContinuarRequisicao( CACBrTEFCliSiTef_ImprimeGerencialConcomitante ) ;

  Result := ( Sts = 0 ) ;

  if not Result then
     AvaliaErro( Sts )
  else
     if not CACBrTEFCliSiTef_ImprimeGerencialConcomitante then
        ProcessarResposta;
end;

A questão do Valor ali por padrão é 0 quando não informado.

Fonte anexo.

ACBrTEFDCliSiTef.pas 50 kB · 0 downloads

No SVN a contribuição. Obrigado

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado
Em 15/07/2020 at 13:35, tiagok disse:

Olá @Daniel Simoes

Gostaria de enviar mais uma contribuição, implementei para obter os campos de identificação da carteira digital, que são muito importantes para fazer a identificação da carteira que foi utilizada para o pagamento.

ACBrTEFComum.pas


fpIdCarteiraDigital : String; // Código de identificação da carteira digital
fpNomeCarteiraDigital : String; // Nome da carteira digital

property IdCarteiraDigital: String read fpIdCarteiraDigital;
property NomeCarteiraDigital: String read fpNomeCarteiraDigital;

ACBrTEFCliSiTefComum.pas


106: fpIdCarteiraDigital := LinStr;
107: fpNomeCarteiraDigital := LinStr;

Fontes anexos.

Desta forma a aplicação pode obter a identificação da carteira, no meu caso obtenho conforme exemplo abaixo:

FACBrTEFD.RespostasPendentes[Contador].IdCarteiraDigital

FACBrTEFD.RespostasPendentes[Contador].NomeCarteiraDigital

Já testei o processo todo e funciona perfeitamente, com essas alterações é possível operacionalizar toda a parte do módulo CardSE (carteiras digitais).

 

 

ACBrTEFCliSiTefComum.pas 29 kB · 0 downloads ACBrTEFComum.pas 31 kB · 0 downloads

@Juliomar Marchetti Olá, você poderia adicionar estes dois campos 106 e 107, no SVN ? Acima enviei o Documento da Software Express com a presença destes campos. Já está testado.

  • Curtir 1
  • Moderadores
  • Solution
Postado
19 horas atrás, tiagok disse:

@Juliomar Marchetti Olá, você poderia adicionar estes dois campos 106 e 107, no SVN ? Acima enviei o Documento da Software Express com a presença destes campos. Já está testado.

Está no SVN. Obrigado pela contribuição

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Este tópico foi criado há 1470 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...