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"
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.
Updated 6 months ago