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
| Constante | Presença | Observação |
|---|---|---|
| PPC_INP_DSPMSG | M | Mensagem a ser apresentada no display. |
| PPC_INP_PAN | O | Nú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_ENCMETHD | O | Mé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_KEYIDX | O | Índice da chave do pinpad a ser utilizada na criptografia do PIN. Se não informado, será utilizada a chave da Cielo. |
| PPC_INP_WKENC | O | Working Key criptografada pela Master Key, quando PPC_INP_ENCMETHD = "1". |
| PPC_INP_MINDIG | O | Tamanho mínimo aceito para o PIN ("4" a "12"). Se não informado, assume o valor "4". |
| PPC_INP_MAXDIG | O | Tamanho máximo aceito para o PIN ("4" a "12"). Se não informado, assume o valor "12". |
Dados de resposta
| Constante | Observação |
|---|---|
| PPC_OUT_PINBLK | PIN criptografado. Corresponde a JSON{"PinBlock.EncryptedPinBlock"}. |
| PPC_OUT_PINKSN | KSN (Key Serial Number), disponibilizado quando PPC_INP_ENCMETHD = "3". Corresponde a JSON{"PinBlock.KsnIdentification"}. |
| PPC_OUT_ENCTYPE | Tipo de criptografia utilizado. Corresponde a JSON{"PinBlock.EncryptionType"}. |
Retornos
| Retorno | Descrição |
|---|---|
| PPC_OK | PIN digitado e criptografado com sucesso. |
| PPC_NOTOPEN | O comando PPC_CMD_OPEN não foi chamado previamente. |
| PPC_ERRMANDAT | O parâmetro PPC_INP_DSPMSG não foi fornecido. |
| PPC_INVCALL | O 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_CANCEL | Operaçã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;
} Updated about 1 month ago
Did this page help you?