Cartões

Post

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

Bandeiras

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:

Utilização de Card Hash

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.