Continuação do processo de coleta iterativo
Esta função deve ser chamada de forma contínua até não existam mais informações para serem trocadas entre a aplicação e a CliSiTef (isto é, enquanto seu retorno for igual a 10000), conforme descrito nos resultados devolvidos por ela. O formato de ativação é o seguinte:
int ContinuaFuncaoSiTefInterativo (Comando, TipoCampo, TamMinimo, TamMaximo, Buffer, TamBuffer, Continua)
Interface ASCII
ContinuaFuncaoSiTefInterativoA (Resultado, Comando, TipoCampo, TamMinimo, TamMaximo, Buffer, TamBuffer, Continua)
Parâmetro | Tipo | Interface padrão | Interface ASCII | Descrição |
---|---|---|---|---|
Resultado | Saída, por valor | Não usado | Fixo 6 | Contém o resultado de resposta à chamada da rotina. |
Comando | Saída, por referência | int * | Fixo 12 | Contém no retorno: 0 → caso a CliSiTef esteja devolvendo algum dado referente a transação no campo Buffer <> 0 → indica o Próximo Comando a ser executado pelo aplicativo. Os comando válidos estão descritos em Tabela de códigos de Comando |
TipoCampo | Saída, por referência | long * | Fixo 12 | Contém o código do tipo de campo que a automação deve tratar. Os tipos existentes estão descritos em Tabela de valores para TipoCampo |
TamMinimo | Saída, por referência | short * | Fixo 6 | Quando o Comando for uma coleta de dados, contém o tamanho Mínimo do campo a ser lido |
TamMaximo | Saída, por referência | short * | Fixo 6 | Quando o Comando for uma coleta de dados, contém o tamanho Máximo do campo a ser lido |
Buffer | Entrada e Saída, por valor | char * | Variável | Área de transferência de dados entre a aplicação e a CliSiTef. Deve possuir, no mínimo, 20.000 bytes. Se automação não estiver enviando dados para a CliSiTef, deve passar esse campo vazio |
TamBuffer | Entrada, por valor | int | Fixo 6 | Tamanho da área reservada pela automação para o campo Buffer |
Continua | Entrada, por valor | int | Fixo 6 | Contem instruções para a CliSiTef a respeito do Comando executado segundo a seguinte codificação: |
0 → Continua a transação | ||||
1 → Retorna, quando possível, a coleta ao campo anterior | ||||
2 → Cancela o pagamento de conta atual, mantendo os anteriores em memória, caso existam, permitindo que tais pagamentos sejam enviados para o SiTef e até mesmo permite incluir novos pagamentos. Retorno válido apenas nas coletas de valores e data de vencimento de um pagamento de contas. | ||||
10000 → Continua a transação, vide observação a seguir | ||||
-1 → Encerra a transação |
Obs.: Como nem sempre o campo solicitado pela rotina precisa ser lido no momento da solicitação a rotina aceita o valor 10000 para indicar que o campo não foi coletado naquele momento mas sim previamente, no momento do fechamento da venda.
Um exemplo típico desta situação ocorre quando a automação já fechou com o cliente uma forma de pagamento parcelado com cartão de crédito. Neste caso a automação pode, no momento que a coleta campo for solicitada para ler o número de parcelas, já devolver o número previamente combinado sem capturar esse dado do usuário.
Notar que nessa forma de uso é imprescindível que o dado seja apresentado para o operador que deverá confirmar veracidade dele antes da rotina devolver o mesmo para a CliSiTef.
Notar também que esta forma de uso não é obrigatória, podendo a automação sempre capturar os dados da tela. O uso desta característica poderá alterar o fluxo de coleta ou qualquer regra definida pelas bandeiras, por isso antes de sua utilização realizar consulta a departamento de Suporte da Software Express que verificará a necessidade de autorização prévia pelas bandeiras.
No retorno a rotina devolve os mesmos valores da rotina de Pagamento. Adicionalmente a estes valores, a função devolve o valor 0 (Zero) para indicar que a função solicitada foi concluída com sucesso (p/ex: se for um pagamento, ele foi aprovado pela administradora).
É importante salientar que a chamada que inicia o processo iterativo (aquela que é feita após ter sido recebido o valor 10000 na chamada de uma função de Pagamento, Gerencial, etc...) deve ser feita com Comando, TipoCampo, TamMinimo, TamMaximo e Continua contendo o valor 0 (zero).
Notar também que a automação comercial deve ficar em laço chamando a rotina aqui descrita até que ela receba um resultado diferente de 10000 ou que a própria automação desista de continuar o processo, conforme mostrado a seguir:
Caso a automação deseje encerrar o processo de coleta ela deve, necessariamente, chamar a rotina ContinuaFuncaoSiTefInterativo passando --1 (menos um) no campo Continua. Caso o processo de coleta deva continuar, ela não deve modificar nenhum dos campos preenchidos pela CliSiTef a não ser o Buffer que, na nova chamada, deve conter o resultado da coleta (se Comando diferente de 0) ou o dado original se Comando veio com 0. Notar ainda que mesmo que o Buffer contenha um campo coletado pela automação, o seu tamanho deve ser o recomendado por esse documento pois irá conter, no retorno, novos dados fornecidos pela rotina.
Notar que o campo Buffer pode ter sido preenchido pela rotina com algum dado para ser memorizado, apresentado no visor ou outro motivo, segundo o que está especificado na descrição de cada comando que o aplicativo de automação deve tratar.
IMPORTANTE: É obrigatório que a automação SEMPRE colete campos não tratáveis por ela ou seja, se ela receber algum código em erro pinpad
que ela desconheça ou não deseje tratar, que a informação seja capturada pela digitação pelo operador da informação solicitada.