Callback de interação invisível

📘

Campo opcional

Caso este callback não seja informado, ao executar alguma operação, será exibido uma interface para o usuário com todas as interações, ou seja, você não precisará tratar nenhum desses estados.

Será executado o callback de interação quando for necessário enviar todos os passos que devem ser executados, entre eles a exibição de mensagens ou a solicitação de alguns dados para dar continuidade aos pagamentos. Ao chamar esta função, um objeto chamado data será enviado com os seguintes campos:

const authenticationRequest = {
  authenticationKey: '795180024C04479982560F61B3C2C06E',
  backgroundInteraction: function(data) 
  {
    if(data.responseType == CapptaCheckout.responseType.SHOW_MESSAGE)
    {
      console.log(data.details.message)
    }
    if (data.responseType == CapptaCheckout.responseType.REQUEST_DATA)
    {
      switch (data.details.interactionType) {
        case CapptaCheckout.interactionType.ASK_TWO_OPTIONS:
        case CapptaCheckout.interactionType.ASK_UNDO_OR_CONFIRM_PENDING_PAYMENTS:
          confirm(data.details.message) ? data.next(1) : data.next(0)
          break

        case CapptaCheckout.interactionType.ASK_REVERSAL_PASSWORD:
        default:
          var response = prompt(data.details.message)
          response ? data.next(response) : data.back()
          break
      }
    }
  }
};
NomeTipoDescrição
responseTypenumberRepresenta o estado que a operação está, ou seja, se esta apenas exibindo mensagens ou esperando alguma informação.
detailsobjectRepresenta os detalhes do estado atual, ou seja, tipo de interação, mensagem e métodos
details.messagestringMensagem do TEF que deverá ser mostrada ao usuário

📘

Observação

Dependendo do estado da interação, novos campos no objeto details estarão disponíveis.
Abaixo se encontra quais propriedades estarão disponíveis em cada interação.

SHOW_MESSAGE

Neste estado, apenas as propriedades padrão estarão disponíveis. É necessário informar ao usuário o conteúdo do campo data.details.message, somente através desse campo que as mensagens do TEF serão informadas, como por exemplo a mensagem: "Por favor, insira ou passe o cartão".

if(data.responseType == CapptaCheckout.responseType.SHOW_MESSAGE)
{
  // Exemplo: "Por favor, insira ou passe o cartão"
  console.log(data.details.message)
}

REQUEST_DATA

Neste estado, é necessário informar ao usuário o conteúdo do campo data.details.message, somente através desse campo que os pedidos de dados serão exibidas para o usuário e assim enviar as respostas para o TEF da Cappta. Algumas novas propriedades estarão disponíveis, sendo elas:

NomeTipoDescriçãoDisponíveis em quais tipos de interação?
details.interactionTypenumberTipo de interação, este campo mostra qual a pergunta que o software integrador precisará fazer para o usuário.Todas
details.next(resposta)functionMétodo para continuar a interação dependendo da reposta informada via paramêtro.Todas
details.back()functionRetrocede para a etapa anterior.ASK_REVERSAL_PASSWORD
if (data.responseType == CapptaCheckout.responseType.REQUEST_DATA)
{
	switch (data.details.interactionType) {
	  case CapptaCheckout.interactionType.ASK_TWO_OPTIONS:
	  case CapptaCheckout.interactionType.ASK_UNDO_OR_CONFIRM_PENDING_PAYMENTS:
		  confirm(data.details.message) ? data.next(1) : data.next(0)
	  break

	  case CapptaCheckout.interactionType.ASK_REVERSAL_PASSWORD:
	  default:
		  var response = prompt(data.details.message)
		  response ? data.next(response) : data.back()
	  break
	}
}

Tipos de interação do REQUEST_DATA

ASK_TWO_OPTIONS

Nesta interação, somente será aceito os valores númericos 1 ou 0, ou seja sim ou não, respectivamente.

if (data.responseType == CapptaCheckout.responseType.REQUEST_DATA)
{
  switch (data.details.interactionType) {
    case CapptaCheckout.interactionType.ASK_TWO_OPTIONS:
      // Exemplo: "Deseja cancelar a operação?" 
      confirm(data.details.message)
        ? data.next(1) // Sim
        : data.next(0) // Não
      break
  }
}

ASK_UNDO_OR_CONFIRM_PENDING_PAYMENTS

Nesta interação, somente será aceito os valores númericos 1 ou 0, ou seja confirmar ou desfazer, respectivamente.

if (data.responseType == CapptaCheckout.responseType.REQUEST_DATA)
{
  switch (data.details.interactionType) {
    case CapptaCheckout.interactionType.ASK_UNDO_OR_CONFIRM_PENDING_PAYMENTS:
      // Exemplo: "A última transação está pendente, deseja confirmar ou desfazer?" 
      confirm(data.details.message)
        ? data.next(1) // Confirmar
        : data.next(0) // Desfazer
      break
  }
}

ASK_REVERSAL_PASSWORD

Nesta interação, o valor esperado é um texto contendo a senha administrativa do CapptaGpPlus para fazer o estorno de uma transação.

if (data.responseType == CapptaCheckout.responseType.REQUEST_DATA)
{
  switch (data.details.interactionType) {
    case CapptaCheckout.interactionType.ASK_REVERSAL_PASSWORD:
      // Exemplo: "Insira a senha Administrativa" 
      var response = prompt(data.details.message)
        response 
          ? data.next(response) 
          : data.back()
      break
  }
}

DEMAIS INTERAÇÕES

Nesta interação, o valor esperado é um texto.
Geralmente esse tipo de interação é um pedido do TEF para inserir o número de controle, nome do portador do cartão ou qualquer outra informação necessária.

if (data.responseType == CapptaCheckout.responseType.REQUEST_DATA)
{
  switch (data.details.interactionType) {
    default:
      // Exemplo: "Digite o número de controle" 
      var response = prompt(data.details.message)
        response 
          ? data.next(response) 
          : data.back()
      break
  }
}