Pular para o conteúdo principal
Version: v1

Criar Cartão

Essa rota é usada para validar os dados de um cliente em conjunto com o seu cartão no nosso Antifraude. Uma vez validado, esse cartão é salvo com segurança no vault da Marlim a fim de utilizá-lo em compras futuras. Após salvar o cartão, você recebe um objeto contendo um hash na propriedade card_id.

One Click Buy

Essa é a melhor forma de implementar One Click Buy. Com o card_id em nosso servidor, o seu cliente não precisará digitar os dados do cartão novamente e conseguirá comprar com apenas um clique evitando transitar dados sensíveis online.
Irado né? 😎

POSTv1/cards

Request Body Params​

AtributoTipoDescrição
card_holder_namestringNome do portador do cartão.
card_numberstringNúmero do cartão.
card_expiration_datestringData de validade do cartão. Somente números no formato MMAA.
card_cvvstringCódigo verificador do cartão.
customerobjectObjeto Cliente.
customer[name]stringNome do cliente.
customer[email]stringE-mail do cliente.
customer[document_number]stringNúmero do documento do cliente.
customer[phone_number]stringNúmero do telefone do cliente.
customer[address]objectObjeto Endereço do Cliente.
customer[address][zipcode]stringCEP (clientes nacionais) ou ZIP (clientes estrangeiros) do cliente.
customer[address][country]stringNacionalidade do cliente, no formato sigla do país. Só serão aceitos o formato ISO 3166-1 alfa-2 (duas-letras) Ex: br, us, uy...
customer[address][state]stringEstado do atual endereço do cliente, no formato sigla do estado. Ex: SP, RJ, MG...
customer[address][city]stringCidade do endereço do cliente.
customer[address][neighborhood]stringBairro do endereço do cliente.
customer[address][street]stringRua do endereço do cliente. Não é necessário passar número ou complemento.
simulate_card_antifraude_validationstringParâmetro opcional que pode ser passado em ambiente de teste para simular o fluxo do Antifraude. Valores aceitos: accepted e rejected.
simulate_antifraude_envstringParâmetro opcional que pode ser passado em ambiente de teste para simular o fluxo do Antifraude. Valores aceitos: production e sandbox. Default sandbox.
Importante

Os parâmetros customer[document_number] e customer[phone_number] devem ser tratados e passados de forma diferente entre clientes de nacionalidade brasileira ou estrangeira.

Caso o cliente seja de nacionalidade brasileira (customer[address][country] == 'br')
• Em customer[document_number] deve ser passado o CPF do cliente
• Em customer[phone_number] deve ser passado no formato +55DDXXXXXXXXX
Caso o cliente seja de nacionalidade estrangeira (customer[address][country] != 'br')
• Em customer[document_number] deve ser passado o NIN (national identification number) do cliente
• Em customer[phone_number] deve ser passado deve ser passado no padrão regex /^\+(?:[0-9] ?)14[0-9]$/]]

Response Object​

PropriedadeTipoDescrição
statusstringRepresenta o estado atual da requisição. Valores possíveis: accepted e rejected.
date_createddateTimeData de criação do cartão no formato ISODateTime.
date_updateddateTimeData de atualização do cartão no formato ISODateTime.
card_holder_namestringNome do portador do cartão.
card_brandstringBandeira do cartão. Valores possíveis: visa, mastercard, amex, hipercard e elo.
card_first_digitsstringPrimeiros 6 dígitos do cartão.
card_last_digitsstringÚltimos 4 dígitos do cartão.
card_idstringHash identificador do cartão.
card_fingerprintstringHash que permite comparar dois cartões através de seus fingerprints para saber se são o mesmo.
countrystringPaís de origem da emissão do cartão.
validbooleanPropriedade para verificar a validade do cartão, ou seja, caso true, é possível cobrar o cartão em condições normais, para false, não pode ser utilizado.

Antifraude​

Atenção

O nosso antifraude é composto por uma série de regras, entre elas a confirmação de que o cartão utilizado realmente pertence ao cliente em questão. Por conta disso é de extrema importância que na UI do checkout tenha um aviso/disclaimer informando aos clientes para não utilizar cartões virtuais e/ou de terceiros, uma vez que esta validação irá falhar e a operação será recusada. Ou seja, deixe evidente para o seu cliente uma mensagem solicitando para ele utilizar os dados do cartão físico expedido pelo banco emissor e do próprio cliente que está efetuando a compra, evitando surpresas 😎

Simular Validação​

Para facilitar durante a fase de desenvolvimento você pode simular o status da criação do cartão. Passando os valores accepted ou rejected na propriedade simulate_card_antifraude_validation. Em ambiente sandbox como não existe a validação no Banco Emissor do cartão, caso não seja emulado nenhum status, ele se torna randômico.

🕹  Criar um cartão com status accepted
Request
curl -X POST "https://api.crypto.foxbit.marlim.co/v1/cards" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"card_holder_name": "Luke Skywalker",
"card_number": "5555444433332222",
"card_expiration_date": "1122",
"card_cvv": "123",
"customer[name]": "Luke Skywalker",
"customer[email]": "luke@jedimaster.sw",
"customer[document_number]": "00099988877",
"customer[phone_number]": "+18007770133",
"customer[address][zipcode]": "95351",
"customer[address][country]": "us",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "713 Sunset Ave",
"simulate_card_antifraude_validation": "accepted"
}'
Response200
{
"status": "accepted",
"date_created": "2024-02-16T20:19:08.770Z",
"date_updated": "2024-02-16T20:19:08.770Z",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"card_id": "card_jedi123master4amidala5son",
"card_fingerprint": "jedi12knight34anakin56son",
"country": "USA",
"valid": true
}
🕹  Criar um cartão com status rejected
Request
curl -X POST "https://api.crypto.foxbit.marlim.co/v1/cards" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"card_holder_name": "Leia S O Solo",
"card_number": "4444555566663333",
"card_expiration_date": "0504",
"card_cvv": "999",
"customer[name]": "Leia Skywalker Organa Solo",
"customer[email]": "princess@alderaan.sw",
"customer[document_number]": "11199988877",
"customer[phone_number]": "+18007770112",
"customer[address][zipcode]": "95351",
"customer[address][country]": "us",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "714 Sunset Ave",
"simulate_card_antifraude_validation": "rejected"
}'
Response200
{
"status": "rejected",
"date_created": null,
"date_updated": null,
"card_holder_name": "Leia S O Solo",
"card_brand": "mastercard",
"card_first_digits": "444455",
"card_last_digits": "3333",
"card_id": null,
"card_fingerprint": null,
"country": null,
"valid": false
}

Simular em Produção​

O Antifraude Marlim contém como parte dos mecanismos de validação uma verificação do cartão junto ao banco emissor. Como o fluxo de banco emissor não existe em ambiente sandbox, preparamos o parâmetro simulate_antifraude_env que pode ser usado durante a fase de desenvolvimento para simular a validação acurada do Antifraude em produção.

🕹  Simulando Antifraude em Produção
Request
curl -X POST "https://api.crypto.foxbit.marlim.co/v1/cards" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"card_holder_name": "Luke Skywalker",
"card_number": "5555444433332222",
"card_expiration_date": "1122",
"card_cvv": "123",
"customer[name]": "Luke Skywalker",
"customer[email]": "luke@jedimaster.sw",
"customer[document_number]": "00099988877",
"customer[phone_number]": "+18007770133",
"customer[address][zipcode]": "95351",
"customer[address][country]": "us",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "713 Sunset Ave",
"simulate_antifraude_env": "production"
}'
Response200
{
"status": "accepted",
"date_created": "2024-02-16T20:19:08.770Z",
"date_updated": "2024-02-16T20:19:08.770Z",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"card_id": "card_jedi123master4amidala5son",
"card_fingerprint": "jedi12knight34anakin56son",
"country": "USA",
"valid": true
}
Nota

Se você utlizar o parâmetro simulate_antifraude_env com o valor production o parâmetro opcional simulate_card_antifraude_validation se torna inutilizável.

Atenção

Os parâmetros simulate_card_antifraude_validation e simulate_antifraude_env só são habilitados para api_key do ambiente sandbox. Se você passar algum desses dois parâmetros em ambiente de produção, será retornado um erro 403 (Forbidden).

Exemplos​

Nota

Os valores utilizados nos exemplos abaixo são apenas para ilustração. Em ambiente de desenvolvimento ou testes, utilize dados mais próximos de uma transação real (dados de cartão e cliente). Se você utlizar valores fictícios o Antifraude pode não funcionar de forma esperada.

Request
curl -X POST "https://api.crypto.foxbit.marlim.co/v1/cards" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"card_holder_name": "Leia S O Solo",
"card_number": "4444555566663333",
"card_expiration_date": "0504",
"card_cvv": "999",
"customer[name]": "Leia Skywalker Organa Solo",
"customer[email]": "princess@alderaan.sw",
"customer[document_number]": "11199988877",
"customer[phone_number]": "+18007770112",
"customer[address][zipcode]": "95351",
"customer[address][country]": "us",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "714 Sunset Ave"
}'
Response200
{
"status": "accepted",
"date_created": "2024-02-16T20:19:08.770Z",
"date_updated": "2024-02-16T20:19:08.770Z",
"card_holder_name": "Leia S O Solo",
"card_brand": "mastercard",
"card_first_digits": "444455",
"card_last_digits": "3333",
"card_id": "card_princess12leia45organa678",
"card_fingerprint": "naboo999galactic9republic",
"country": "USA",
"valid": true
}