Você pode armazenar os dados do cartão do seu cliente através da rota /cards, assim você poderá usar o id do objeto gerado para realizar futuras transações.
Campo(tipo) | Validação | Descrição | Exemplo |
---|---|---|---|
card_cvv (string) | Verifica de acordo com número | CVV | 737 |
card_number (string) | Valida se é válido, mas não se existe | Número do cartão | 5548 7600 8490 5246 |
card_expiration_date (string) | "MMYY", verifica se já está vencido | Validade do cartão | 07/2027 |
card_holder_name (string) | Nome do portador | João da Silva | |
customer_id (integer) | ID do cliente | 1 |
O Gateway Paco, aceita as principais bandeiras de cartão de crédito. Tanto Pagar.me como Gerencia Net aceitam as seguintes bandeiras:
Apenas o gateway Pagar.me aceita as bandeiras:
Utilizando uma chave publica RSA é possível criptografar os dados do cartão antes do envio para a API.
O primeiro passo é fazer uma requisição GET na rota "https://gateway-paco.loc/api/cardKey", tendo como retorno:
{
"id": 11,
"key": "-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----\n"
}
Depois você deve criar uma QueryString com valores URLEncoded para os parâmetros do cartão de crédito. Vamos pegar os seguintes dados abaixo como exemplo:
card_number = 4901720080344448
card_holder_name = "Aardvark Silva"
card_expiration_date = 1213
card_cvv = 314
A QueryStringficará composta na seguinte forma:
card_number=4901720080344448&card_holder_name=AardvarK%20Silva&card_expiration_date=1213&card_cvv=314
Agora você vai fazer uma criptografia pública com RSA-OAEP, padding PKCS1e hashing SHA256 usando a key que você recebeu na request passando a QueryString construída.
Após criptografar esses dados você deve converter o resultado para base64. Como resultado você terá algo como:
FFtwikzg/FC1mH7XLFU5fjPAzDsP0ogeAQh3qXRpHzkIrgDz64lITBUGwio67zm2CQXwbKRjGdRi5J1xFNpQLWnxQsUJAQELcTSGaGtF6RGSu6sq1stp8OLRSNG7wp+xGe8poqxw4S1gOL5JYO7XZp/Uz7rTpKXh3IcRshmX36hh66J6+7l5j0803cGIfMZu3T7nbMjQYIf+yLi8r0O6vL9DQPmqSZ9FBerqFGxWHrxScneaaMVzMpNX/5eneqveVBt88RccytyJG5+HYRHcRyKIbLfmX48L/C22HJeAm3PyzehGHdOmDcsxPtVB+Fgq7SDuB4tHWBT8j6wihOO7ww==
Agora com o id vindo da request inicial, e os dados criptografados convertidos para base64, seu card_hash deverá ser formatado da seguinte maneira:
card_hash = id + "_" + encrypted_string_base64
E o resultado final será:
11_FFtwikzg/FC1mH7XLFU5fjPAzDsP0ogeAQh3qXRpHzkIrgDz64lITBUGwio67zm2CQXwbKRjGdRi5J1xFNpQLWnxQsUJAQELcTSGaGtF6RGSu6sq1stp8OLRSNG7wp+xGe8poqxw4S1gOL5JYO7XZp/Uz7rTpKXh3IcRshmX36hh66J6+7l5j0803cGIfMZu3T7nbMjQYIf+yLi8r0O6vL9DQPmqSZ9FBerqFGxWHrxScneaaMVzMpNX/5eneqveVBt88RccytyJG5+HYRHcRyKIbLfmX48L/C22HJeAm3PyzehGHdOmDcsxPtVB+Fgq7SDuB4tHWBT8j6wihOO7ww==
Este hash pode ser enviado como um campo "card_hash" nos POST's do sistema.
Observação: A chave pública gerada ficará disponível por 5 minutos.