Ir para conteúdo
  • Cadastre-se

dev botao

PAYGOWEB - Problema parâmetro indevido CNC (PWOPER_SALEVOID)


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

Recommended Posts

Boa tarde pessoal tudo bem?

Eu estava com um problema ao utiliza o método CNC (ACBrTEFDPayGoWeb), para fazer um cancelamento de TEF, eu não  estava enviando o parâmetro REDE, pois na doc da paygo nao consta como obrigatório, e acontecia que não encontrava a transação para cancelar.

Entrei em contato com o pessoal da paygo, e descobrimos que o que estava causando esse problema é o parâmetro TRNORIGDATETIME  que é enviado nesse método (anexo1).

Segundo a documentação, esse parâmetro não é necessário para a operação(anexo2), e causa esse problema.

Estou abrindo esse tópico, para verificação e se possível, remover o parâmetro.

Abraços

printacbr1.PNG

printacbr2.PNG

Link para o comentário
Compartilhar em outros sites

  • Moderadores

por isso dizemos pra não fixar os dados e deixar para o usuário interagir com os dados e menu do tef.

isso dai é bom exemplo de problema que incomoda até achar

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não tenho relato de outros usuários com problemas na chamada do método CNC..

Será que você está realmente passando os parâmetros corretos ?

Não creio que o problema, seja o parâmetro relatado... uma vez que ele é opcional..

Consegue reproduzir o problema, usando o TEFDemoNF ?

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.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Se você comentar a linha abaixo, o cancelamento Funciona ?

function TACBrTEFDPayGoWeb.CNC(Rede, NSU: String; DataHoraTransacao: TDateTime;
  Valor: Double; CodigoAutorizacaoTransacao: String): Boolean;
var
  PA: TACBrTEFPGWebAPIParametros;

  procedure CopiarValorDaUltimaResposta(AInfo: Integer);
  var
    AStr: String;
  begin
    AStr := Resp.LeInformacao(AInfo).AsString;
    if (Trim(AStr) <> '') then
      PA.ValueInfo[AInfo] := AStr;
  end;

begin
  PA := TACBrTEFPGWebAPIParametros.Create;
  try
    PA.ValueInfo[PWINFO_AUTHSYST] := Rede;
    PA.ValueInfo[PWINFO_TRNORIGNSU] := NSU;                                            // Mandatorio
    PA.ValueInfo[PWINFO_TRNORIGDATE] := FormatDateTime('DDMMYY', DataHoraTransacao);   // Mandatorio
    PA.ValueInfo[PWINFO_TRNORIGTIME] := FormatDateTime('hhnnss', DataHoraTransacao);   // Mandatorio
    //PA.ValueInfo[PWINFO_TRNORIGDATETIME] := FormatDateTime('YYYYMMDDhhnnss', DataHoraTransacao);   //   <---------- AQUI -----------
    PA.ValueInfo[PWINFO_TRNORIGAMNT] :=  IntToStr(Trunc(RoundTo(Valor * 100,-2)));     // Mandatorio
    if (CodigoAutorizacaoTransacao <> '') then
    begin
      PA.ValueInfo[PWINFO_TRNORIGAUTH] := CodigoAutorizacaoTransacao;                  // Mandatorio
      PA.ValueInfo[PWINFO_TRNORIGAUTHCODE] := CodigoAutorizacaoTransacao;
    end;

    // Se a transação em memória for a mesma que estamos tentando cancelar, vamos copiar mais dados dela...
    if (Resp.Rede = Rede) and (Resp.NSU = NSU) and
       (Resp.ValorTotal = Valor) and (Resp.DataHoraTransacaoLocal = DataHoraTransacao) then
    begin
      PA.ValueInfo[PWINFO_TRNORIGLOCREF] := Resp.Finalizacao;
      PA.ValueInfo[PWINFO_TRNORIGREQNUM] := IntToStr(Resp.NumeroLoteTransacao);
      CopiarValorDaUltimaResposta(PWINFO_MERCHCNPJCPF);
      CopiarValorDaUltimaResposta(PWINFO_CARDTYPE);
      CopiarValorDaUltimaResposta(PWINFO_VIRTMERCH);
      CopiarValorDaUltimaResposta(PWINFO_AUTMERCHID);
      CopiarValorDaUltimaResposta(PWINFO_FINTYPE);
    end;

    FazerRequisicao(fOperacaoCNC, 'CNC', Valor, '', 0, PA);
  finally
    PA.Free;
  end;

  Result := ContinuarRequisicao;
  if Result then
    ProcessarResposta;
end;       

 

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.

Link para o comentário
Compartilhar em outros sites

Em 09/07/2021 at 13:04, Daniel Simoes disse:

Se você comentar a linha abaixo, o cancelamento Funciona ?

function TACBrTEFDPayGoWeb.CNC(Rede, NSU: String; DataHoraTransacao: TDateTime;
  Valor: Double; CodigoAutorizacaoTransacao: String): Boolean;
var
  PA: TACBrTEFPGWebAPIParametros;

  procedure CopiarValorDaUltimaResposta(AInfo: Integer);
  var
    AStr: String;
  begin
    AStr := Resp.LeInformacao(AInfo).AsString;
    if (Trim(AStr) <> '') then
      PA.ValueInfo[AInfo] := AStr;
  end;

begin
  PA := TACBrTEFPGWebAPIParametros.Create;
  try
    PA.ValueInfo[PWINFO_AUTHSYST] := Rede;
    PA.ValueInfo[PWINFO_TRNORIGNSU] := NSU;                                            // Mandatorio
    PA.ValueInfo[PWINFO_TRNORIGDATE] := FormatDateTime('DDMMYY', DataHoraTransacao);   // Mandatorio
    PA.ValueInfo[PWINFO_TRNORIGTIME] := FormatDateTime('hhnnss', DataHoraTransacao);   // Mandatorio
    //PA.ValueInfo[PWINFO_TRNORIGDATETIME] := FormatDateTime('YYYYMMDDhhnnss', DataHoraTransacao);   //   <---------- AQUI -----------
    PA.ValueInfo[PWINFO_TRNORIGAMNT] :=  IntToStr(Trunc(RoundTo(Valor * 100,-2)));     // Mandatorio
    if (CodigoAutorizacaoTransacao <> '') then
    begin
      PA.ValueInfo[PWINFO_TRNORIGAUTH] := CodigoAutorizacaoTransacao;                  // Mandatorio
      PA.ValueInfo[PWINFO_TRNORIGAUTHCODE] := CodigoAutorizacaoTransacao;
    end;

    // Se a transação em memória for a mesma que estamos tentando cancelar, vamos copiar mais dados dela...
    if (Resp.Rede = Rede) and (Resp.NSU = NSU) and
       (Resp.ValorTotal = Valor) and (Resp.DataHoraTransacaoLocal = DataHoraTransacao) then
    begin
      PA.ValueInfo[PWINFO_TRNORIGLOCREF] := Resp.Finalizacao;
      PA.ValueInfo[PWINFO_TRNORIGREQNUM] := IntToStr(Resp.NumeroLoteTransacao);
      CopiarValorDaUltimaResposta(PWINFO_MERCHCNPJCPF);
      CopiarValorDaUltimaResposta(PWINFO_CARDTYPE);
      CopiarValorDaUltimaResposta(PWINFO_VIRTMERCH);
      CopiarValorDaUltimaResposta(PWINFO_AUTMERCHID);
      CopiarValorDaUltimaResposta(PWINFO_FINTYPE);
    end;

    FazerRequisicao(fOperacaoCNC, 'CNC', Valor, '', 0, PA);
  finally
    PA.Free;
  end;

  Result := ContinuarRequisicao;
  if Result then
    ProcessarResposta;
end;       

 

Bom dia, exatamente, se comento essa linha, funciona normalmente.

Segue anexo do log simulando o erro

2021_07_12.txt

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 990 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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...