PPC_CMD_GETPIN

Este comando captura a senha do portador do cartão (PIN) e retorna um bloco de dados criptografados usando o método DUKPT Triple-DES.

Tipicamente, este comando deve ser usado quando o cartão utilizado for do tipo magnético, se as configurações de seu BIN indicarem a necessidade de se capturar a senha. Para cartões com chip, seja contato ou contactless, a senha será capturada automaticamente no comando PPC_CMD_PROCCHIP se houver a necessidade dessa validação.

📘

Este comando é blocante, portanto deve ser usado com as funções PPC_StartExecCmd e PPC_FinishExecCmd.

Parâmetros de entrada

ConstantePresençaObservação
PPC_INP_DSPMSGMMensagem a ser apresentada no display.
PPC_INP_PANONúmero do cartão, utilizado no cálculo criptográfico. Se não fornecido, será usado o número do cartão magnético lido por PPC_CMD_GETCARD, desde que o comando PPC_CMD_GETTRACKS ainda não tenha sido executado.
PPC_INP_ENCMETHDOMétodo de criptografia a ser utilizado: "1" = Master Key / Working Key Triple-DES ou "3" = DUKPT Triple-DES. Se não for informado, será utilizado DUKPT Triple-DES.
PPC_INP_KEYIDXOÍndice da chave do pinpad a ser utilizada na criptografia do PIN. Se não informado, será utilizada a chave da Cielo.
PPC_INP_WKENCOWorking Key criptografada pela Master Key, quando PPC_INP_ENCMETHD = "1".
PPC_INP_MINDIGOTamanho mínimo aceito para o PIN ("4" a "12"). Se não informado, assume o valor "4".
PPC_INP_MAXDIGOTamanho máximo aceito para o PIN ("4" a "12"). Se não informado, assume o valor "12".

Dados de resposta

ConstanteObservação
PPC_OUT_PINBLKPIN criptografado. Corresponde a JSON{"PinBlock.EncryptedPinBlock"}.
PPC_OUT_PINKSNKSN (Key Serial Number), disponibilizado quando PPC_INP_ENCMETHD = "3". Corresponde a JSON{"PinBlock.KsnIdentification"}.
PPC_OUT_ENCTYPETipo de criptografia utilizado. Corresponde a JSON{"PinBlock.EncryptionType"}.

Retornos

RetornoDescrição
PPC_OKPIN digitado e criptografado com sucesso.
PPC_NOTOPENO comando PPC_CMD_OPEN não foi chamado previamente.
PPC_ERRMANDATO parâmetro PPC_INP_DSPMSG não foi fornecido.
PPC_INVCALLO parâmetro PPC_INP_PAN não foi fornecido e não houve chamada anterior de PPC_CMD_GETCARD com um cartão magnético.
PPC_CANCELOperação cancelada pelo portador do cartão.

Outros retornos: Ver Códigos de retorno.

Exemplo

int iCapturaPIN (const char *pszMsg, char *pszPIN, char *pszKSN) 
{ 
   int iSt; 
   char sMsgNotify[32]; 

   PPC_SetParam (PPC_INP_PAN, “4444333322221111”, -1); 
   PPC_SetParam (PPC_INP_DSPMSG, 
                 “R$  1.234.567,89DIGITE SUA SENHA”, -1); 
   PPC_SetParam (PPC_INP_MAXDIG, “4”, -1); 
   iSt = PPC_StartExecCmd (PPC_CMD_GETPIN); 
   if (iSt != PPC_OK) return iSt; 

   do { 
      iSt = PPC_FinishExecCmd (sNotifyMsg); 
      if (iSt == PPC_NOTIFY) 
         ShowNotifyMessage (sNotifyMsg); 
      if (WishToAbort () == TRUE) { 
         PPC_AbortCmd (); 
         return -1; 
      } 
   } while (iSt == PPC_PROCESSING || iSt == PPC_NOTIFY); 
   if (iSt != PPC_OK) return iSt; 

   iSt = PPC_GetResp (PPC_OUT_PINBLK, 17, pszPIN); 
   if (iSt == PPC_OK) 
      iSt = PPC_GetResp (PPC_OUT_PINKSN, 21, pszKSN); 
   return iSt; 
} 

Did this page help you?