Integração com TEF Pay&Go via DLL (Enviar Array de Record para DLL).

19/11/2018

0

Olá galera. Gostaria de um Helps se possível.
Estou implementando uma integração com o sistema de TEF da Pay&Go (NTK), através da DLL diponibilizada pela empresa, porém, estou tendo muita dificuldade com a chamada de um dos métodos desta DLL, e que pro meu azar é o método principal, que gerencia o fluxo da transação.

O Método em questão é o PW_iExecTransac;
Conforme a documentação da DLL: http://www.paygo.com.br/wp-content/uploads/2018/06/PayGo-Dedicado-Windows.zip
Este método tem a seguinte assinatura:

Int16 PW_iExecTransac (PW_GetData *pvstParam, Int16 *piNumParam);

e o PW_GetData é um Array de uma Struct.
Essa seria a definição dessa Struct em um aplicativo de exemplo da Pay&Go em C;
typedef struct{
   Word     wIdentificador; 
   Byte     bTipoDeDado;
   char     szPrompt[84];
   Byte     bNumOpcoesMenu;
   char     vszTextoMenu[PWMENU_MAXINTENS][41];
   char     vszValorMenu[PWMENU_MAXINTENS][256];
   char     szMascaraDeCaptura[41];
   Byte     bTiposEntradaPermitidos;
   Byte     bTamanhoMinimo;
   Byte     bTamanhoMaximo;
   Uint32   ulValorMinimo;
   Uint32   ulValorMaximo;
   Byte     bOcultarDadosDigitados;
   Byte     bValidacaoDado;
   Byte     bAceitaNulo;
   char     szValorInicial[41];
   Byte     bTeclasDeAtalho;
   char     szMsgValidacao[84];
   char     szMsgConfirmacao[84];
   char     szMsgDadoMaior[84];
   char     szMsgDadoMenor[84];
   Byte     bCapturarDataVencCartao;
   Uint32   ulTipoEntradaCartao;
   Byte     bItemInicial;
   Byte     bNumeroCapturas;
   char     szMsgPrevia[84];
   Byte     bTipoEntradaCodigoBarras;
   Byte     bOmiteMsgAlerta;
   Byte     bIniciaPelaEsquerda;
   Byte     bNotificarCancelamento;
   Byte     bAlinhaPelaDireita;
} PW_GetData; 


E esta é a estrutura que repliquei pro Delphi em um Record
TPW_GetData = record
      wIdentificador : int16;
      bTipoDeDado : byte;
      szPrompt: Array[0..85] of char;
      bNumOpcoesMenu: byte;
      vszTextoMenu: Array[0..39] of Array[0..40] of char;
      vszValorMenu: Array[0..39] of Array[0..255] of char;
      szMascaraDeCaptura: Array[0..40] of char;
      bTiposEntradaPermitidos: byte;
      bTamanhoMinimo: byte;
      bTamanhoMaximo: byte;
      ulValorMinimo : byte;
      ulValorMaximo : byte;
      bOcultarDadosDigitados: byte;
      bValidacaoDado: byte;
      bAceitaNulo: byte;
      szValorInicial: Array[0..40] of char;
      bTeclasDeAtalho: byte;
      szMsgValidacao: Array[0..85] of char;
      szMsgConfirmacao: Array[0..85] of char;
      szMsgDadoMaior: Array[0..85] of char;
      szMsgDadoMenor: Array[0..85] of char;
      bCapturarDataVencCartao: byte;
      ulTipoEntradaCartao: Int32;
      bItemInicial: byte;
      bNumeroCapturas: byte;
      szMsgPrevia: Array[0..85] of char;
      bTipoEntradaCodigoBarras: byte;
      bOmiteMsgAlerta: byte;
      bIniciaPelaEsquerda: byte;
      bNotificarCancelamento: byte;
   end;


Esta é a declaração da chamada da função:
TArrayGetData = Array[0..9] of TPW_GetData;
PW_iExecTransac = function(var pvstParam : TArrayGetData; piNumParam : pointer) : Int16; stdCall;


Porém, sempre que faço a chamada da função. Aparentemente a DLL não preenche os valores do record.. Pelo menos não como deveria ser, conforme o manual.
vGetdataArray : TArrayGetData;
xNumParam : int16;

PW_iExecTransac(vGetdataArray, @xNumParam);

Alguem tem alguma ideia se seria falha no meu código ou se poderia ser algo na DLL..
Ou até mesmo se alguem já trabalhou com esse TEF e poderia me dar alguma luz..
Obrigado.
Ats Informática

Ats Informática

Responder

Posts

28/01/2019

Luis Lambranho

Opa!

Estou iniciando a mesma empreitada...
conseguiu realizar a implementação da chamada?
Responder

03/06/2019

Marcos

Eu comecei a integração com a Pay & GO e eles nao tem nenhum exemplo feito em delphi
então cobrei esse exemplo deles, e me mandaram um demo feito em delphi
não está 100% pois é tudo novo para eles esse demo em delphi
mais se alguem desejar eu posso mandar, assim voces ja podem estudar o fontem interessados, favor mandar email para marcosprogramador@hotmail.com
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar