Opção 4: Windows Interprocess Communication (IPC)

Se o seu sistema legado não possui capacidade de integrar uma DLL .NET e nem de conversar Websockets, mesmo assim você ainda poderá usar o mecanismo da GDI do Windows de janelas para interceptar a comunicação entre seu aplicativo e o Zoop PC em background, uma comunicação inter-processos mediada pelo próprio Windows.

Via WM_COPYDATA (Geral)

O modelo de integração utiliza mensagens do Windows WM_COPYDATA, disponíveis em todas as tecnologias Windows em aplicações com janelas. Nesse sistema você consegue fazer o envio de mensagens entre janelas do Windows.

Saiba mais na documentação da Microsoft: [WMI_COPYDATA] (https://learn.microsoft.com/en-us/windows/win32/dataxchg/wm-copydata)

Além disso, o processo do Zoop PC precisa ser inicializado passando o parâmetro do WM_COPYDATA. Para isso inicialize dessa forma:

ZoopCheckoutLitePC.exe integration=wm

Lembre-se de ajustar no arquivo de configuração (zconfig.ini) o modo de operação (operationmode) para WMI acrescentando o nome da janela pelo qual o Zoop PC.exe será encontrado em background pelo seu sistema.

no exemplo abaixo, o Zoop PC seria encontrado pelo seu sistema através do nome de janela "123456".

# zConfig.ini para ZOOP PC.
# linhas com '# ' sao comentarios. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

# debug_to_file ligado = habilita geracao do arquivo ZoopSDK.log
# debug_to_file desligado =  nao gera o arquivo de log
#     atencao: o arquivo de log quebrara automaticamente a cada 1MB de tamanho, sendo 
#              totalmente seguro apaga-lo a qualquer momento para fins de limpeza de disco.
debug_to_file=true
    
# marketplaceid =  (obrigatorio) define a conta de execucao default das configuracoes, processo de validacao de login e transacoes.
marketplaceid = {{MARKETPLACE_ID}}. (substitua pelo ser marketplaceID !!!)

# se quiser ter logos ou cores customizados quando o checkout UI é mostrado 
# mude os png do subfolder 'Variante' e, opcionalmente, inclua um arquivo color.txt com o json de cores. 


# MODOS DE OPERAÇÃO (substitue parametro obsoleto integrationmode)
#  as opcoes sao: 
#  wm:SUBSTITUIR_AQUI_POR_NOME_DA_JANELA_A_SER_PROCURADO_PELO_APP_PARCEIRO
#  websockets:SUBSTITUIR_AQUI_POR_NUMERO_SA_PORTA_TCP_A_SER_CONECTADO_PELO_APP_PARCEIRO 
#  checkout    
#  esta última nao integra em background, ao invés disso mostra a UI para uso de checkout interativo.
#  a opção operationmode=checkout é equivalente ao obsoleto  showUI = true das versoes anteriores.
#operationmode=websocket:1337
#operationmode=checkout
operationmode=wm:123456

# DEV feature : permite apontar para ZoopEMVConnect alternativa.
# uso apenas com orientação direta da Zoop para testes.
#host=zec-Leo-develop.zoop.ws

# serialport=COMx onde x é o numero da porta serial. Se nao informar este parametro, assim o middleware vai tentar automatico. Automatico só funciona com Win10 ou +.
#serialport=COM15 (ajuste para a sua porta fixa)

Ou você pode inicializar a aplicação pela interface gráfica e localizar ela através do findWindow no user32.dll

Testando WM_COPYDATA (WMI client)

Para auxiliar no entendimento do processo de comunicação disponibilizamos este pequeno client demo que conversa com o Zoop PC usando WM_COPYDATA.

O mesmo está disponível na pasta "opcao_4_sistemas_legado_usando_IPC_WMI"

494

Para uma explicação detalhada de cada mensagem JSON enviada/recebida por este formato, vide a sub-seção "Operações na troca de JSON messages" no menu lateral esquerdo.