Optando por usar o Zoop PC como uma biblioteca DLL integrada ao seu projeto (ZoopSDKPC.dll embutido no projeto com Visual Studio) esta seção lhe dará uma ideia de como acontece o fluxo de chamadas trocados entre o seu projeto (mediados pela DLL) e o backend de pagamento Zoop:
Aplicação inicializa o SDK com **ZoopAPI.initialize(...)** especificando o **marketplaceId**, **sellerId** e o **publishableKey** (fixos por marketplace) identificador do estabelecimento comercial que realizará a cobrança.
Aplicação Inicia a cobrança chamando o método **ZoopTerminalPayment.charge(...)** especificando o tipo de cobrança: crédito a vista (credit), crédito parcelado (credit_with_installments) com o número de parcelas ou Débito (debit).
Aplicação Inicia o cancelamento de uma transação aprovada (estorno) chamando o método**ZoopTerminalVoidPayment.voidTransaction(...)** especificando o tipo de cobrança: marketplaceId, sellerId, publishableKey e transactionId (Identificação da transação que é fornecida na callback PaymentSuccessful após realizar uma venda).
Aplicação responde a callbacks de mensagens que demandam interação com o usuário:
**ApplicationDisplayListener **- Apresenta mensagens para o operador da Aplicação PDV métodos _showMessage_ com ou sem detalhes).
**ExtraCardInformationListener **- Responder a mensagens com solicitação de informações adicionais sobre o cartão, geralmente em transações com cartões de tarja magnética (extraCardInformation). Essas informações podem ser: 4 últimos digitos e/ ou CVV (CVC2, 3 números atrás do cartão) e/ ou data de expiração.
**TerminalPaymentListener** - Contém as callbacks relacionadas ao fluxo de venda, sendo as callbacks, _PaymentSuccessful_, _PaymentAborted_, _PaymentFailed _e _EndTransaction_.
Além disso, uma transação aprovada pode solicitar a assinatura do portador (cardholderSignatureRequested).
**VoidTransactionListener** - Contém as callbacks relacionadas ao fluxo de estorno ( cancelamento de uma venda aprovada), sendo as callbacks, _VoidTransactionSuccessful_, _VoidTransactionFailed _e _EndOfTransaction_.
**As mensagens são strings com formato JSON. **
Abaixo o diagrama com o fluxo de troca de mensagens, que representa uma transação com cartão de tarja magnética, onde é pedido umas das callbacks de informações extras do cartão. (Last4DigitsRequested, ExpirationDateRequested, CVCRequested e HolderSignatureRequested)

Diagrama de Mensagens
No caso das callbacks ExtraCardInformation, aonde os 4 últimos digitos (cardLast4Digits), CVV ou CVV (cardCVCRequested) ou data de expiração (cardExpirationDate Requested) forem chamados, a aplicação deve responder mesmo que a resposta não seja informada pelo usuário/ operador ou que a Aplicação PDV não tenha implementado a resposta, pois a transação estará esperando esses dados para completar o processamento.