Ir para conteúdo
  • Cadastre-se

dev botao

ACBrTEFD VSPague Saque


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

Recommended Posts

  • Moderadores

Boa tarde

pessoal estou com a seguinte situação

efetuando os testes com o vspague (tefloja que é da ACDL de SC)

ao efetuar o teste 14.6 do manual onde pede que o saque esteja junto com o valor do cupom

assim gerando troco, efetuo a busca do valor do saque mas ele sempre me retorna zero

fiz o seguinte teste, ao buscar os retornos que gerar o txt com os parametros e seus valores ele não vem

mas se verifico o trace do vspague está lá o transacao_valor_saque

o modo é background

se alguém teve essa situação favor reportar como corrigiu

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
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Infelizmente eu nunca trabalhei com VSPague.

Mas a primeira coisa que eu verificaria é se o arquivo de retorno está com os dados corretos (Se é que existe arquivo de retorno...)

[]'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.
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa tarde

Fiquei hoje a tarde toda tetando achar o problema

O que acontece e o seguinte:

na unit ACBrTEFDVeSPague.pas temos o trecho a seguir


           For I := 0 to RespVS.Params.Count-1 do

           begin

              Chave := RespVS.Params.Names[I] ;

              if (Chave <> '') and (pos(Chave, 'retorno,sequencial,servico') = 0) then

              begin

                 {$IFDEF COMPILER7_UP}

                  Valor := RespVS.Params.ValueFromIndex[I];

                 {$ELSE}

                  Valor := RespVS.Params.Values[Chave];

                 {$ENDIF}

                 TACBrTEFDRespVeSPague( Self.Resp ).GravaInformacao( Chave, Valor ) ;

              end ;

           end ;

ao utilizar a linha TACBrTEFDRespVeSPague( Self.Resp ).GravaInformacao( Chave, Valor ) ; ele vai gravar os dados no conteudo correto assim ele vai executar a seguinte função

procedure TACBrTEFDArquivo.GravaInformacao(const Chave, Informacao : AnsiString) ;

var

  I, IndChave : Integer ;

begin

  IndChave := -1 ;

  I        := 0 ;

  while (IndChave < 0) and (I < fStringList.Count) do

  begin

     if copy(fStringList[I],1,Length(Chave)) = Chave then

        IndChave := I

     else

        Inc( I ) ;

  end;


  if IndChave >= 0 then

     fStringList.Delete(I);  // Remove o Antigo


  if Informacao <> '' then

     fStringList.Add( Chave + ' = '+ Informacao )

end ;

acontece que ao pesquisar ele procura parcialmente a chave e no caso do vspague

ele possui várias com o nome parcial igual a outras linhas, assim ele achando a primeira linha parcial ele substitui a linha toda

vou postar um exemplo abaixo

transacao_valor_taxa_servico = 0

transacao_valor_saque = 20

transacao_valor = 120

teria que verificar essa função para ele pesquisar toda a string ou outra forma que achei foi modificar o for

colocando ele downto para que ele faça o contrario assim não substitui a parte parcial

vou esperar mais pessoas se manifestar

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
 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Juliomar,

Experimente modificar para:


procedure TACBrTEFDArquivo.GravaInformacao(const Chave, Informacao : AnsiString) ;
var
I, IndChave : Integer ;
begin
IndChave := -1 ;
I := 0 ;
while (IndChave begin
if copy(fStringList[I],1,Length(Chave)+3) = Chave + ' = ' then
IndChave := I
else
Inc( I ) ;
end;

if IndChave >= 0 then
fStringList.Delete(I); // Remove o Antigo

if Informacao '' then
fStringList.Add( Chave + ' = '+ Informacao )
end ;
....
....

function TACBrTEFDArquivo.AchaLinha(const Identificacao : Integer;
const Sequencia : Integer = 0 ) : Integer;
Var
Campo : String;
I : Integer;
begin
Campo := NomeCampo(Identificacao, Sequencia);

Result := -1 ;
I := 0 ;
while (Result begin
if copy(fStringList[I],1,Length(Campo)+3) = Campo + ' = ' then
Result := I;
Inc( I ) ;
end;
end;
[/code]

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

Devo subir essa alteração até o fim do dia... (espero que essa mudança não cause incompatibilidade em outras classes)

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

  • Este tópico foi criado há 4595 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.