Criar Transação
Para fazer uma cobrança você deve utilizar essa rota e criar a sua transação. É possível utilizar um card_id
ou todos os dados do cartão diretamente. A primeira opção é a mais indicada, por fatores de segurança.
Request Body Params
Atributo | Tipo | Descrição |
---|---|---|
net_value | int32 | Valor a ser cobrado sem as taxas de adquirência. Deve ser passado em centavos. |
amount | int32 | Valor final a ser cobrado com as taxas. Deve ser passado em centavos. |
installments | string | Número de parcelas da transação, sendo mínimo: 1 e máximo: 12. |
item_id | string | ID da transação na sua plataforma. |
item_url | string | PATH URL no browser do cliente pagador que origina a transação. |
card_holder_name | string | Nome do portador do cartão. |
card_number | string | Número do cartão. |
card_expiration_date | string | Data de validade do cartão. Somente números no formato MMAA. |
card_cvv | string | Código verificador do cartão. |
card_id | string | Hash de um cartão salvo e validado anteriormente. Caso inclua os dados do cartão, esse campo torna-se dispensável. |
authentication_status | string | Valor do Status da Autenticação do 3DS. Valores aceitos: AUTH_FLOW_COMPLETED , AUTH_NOT_SUPPORTED e CHANGE_PAYMENT_METHOD . |
authentication_id | string | Representa o id da Autenticação do 3DS. |
customer | object | Objeto Cliente. |
customer[name] | string | Nome do cliente. |
customer[email] | string | E-mail do cliente. |
customer[document_number] | string | Número do documento do cliente. |
customer[phone] | string | Objeto Telefone do Cliente. |
customer[phone][type] | string | O tipo do telefone do cliente: mobile , business e home . |
customer[phone][area] | string | Código de operadora local (DDD) do telefone do cliente. |
customer[phone][number] | string | Número do telefone do cliente. |
customer[address] | object | Objeto Endereço do Cliente. |
customer[address][zipcode] | string | CEP do atual endereço do cliente. |
customer[address][state] | string | Estado do atual endereço do cliente, no formato sigla do estado no padrão ISO 3166-2 Ex: SP, RJ, MG... |
customer[address][city] | string | Cidade do atual endereço do cliente. |
customer[address][neighborhood] | string | Bairro do atual endereço do cliente. |
customer[address][street] | string | Rua do atual endereço do cliente. |
customer[address][number] | string | Número do atual endereço do cliente. |
customer[address][complement] | string | Parâmetro opcional do complemento do atual endereço do cliente. |
soft_descriptor | string | Descrição que aparecerá na fatura do seu cliente. Máximo de 17 caracteres, sendo alfanuméricos e espaços. |
postback_url | string | Parâmetro opcional para passar o endpoint do seu sistema que receberá informações a cada atualização da transação. |
simulate_antifraude_status | string | Parâmetro opcional que pode ser passado em ambiente de teste para simular o fluxo do Antifraude. Valores aceitos: paid , review e rejected . |
simulate_antifraude_env | string | Parâmetro opcional que pode ser passado em ambiente de teste para simular o fluxo do Antifraude. Valores aceitos: production e sandbox . Default sandbox. |
Nota
Para facilitar os testes com a integração da v2 da API de transações, por hora deixamos os parâmetros authentication_status
e authentication_id
opcionais, enquanto a sua empresa integra com o 3DS no seu checkout.
A integração com o 3DS será obrigatório em produção 😉
Importante
Diferenças entre a V1 e V2:
• Removidos os parâmetros customer[external_id]
e customer[address][country]
, não sendo mais necessário enviar esses valores no body da request;
• O parâmetro customer[phone_number]
mudou para o objeto customer[phone]
e seus subsequentes: customer[phone][type]
, customer[phone][area]
e customer[phone][number]
;
• Acrescentados os parâmetros customer[address][number]
(obrigatório) e customer[address][complement]
(opcional) referentes ao endereço do cliente;
• Nessa versão não serão aceitos dados de compradores estrangeiros, logo não há necessidade de tratar de forma diferente os valores relacionados ao documento e o telefone do cliente como na V1;
Response Object
Propriedade | Tipo | Descrição |
---|---|---|
status | string | Representa o estado atual da transação. Valores possíveis: paid , review , refused e rejected . |
nsu | string | Código que identifica a transação na adquirente. |
date_created | dateTime | Data de criação da transação no formato ISODateTime. |
date_updated | dateTime | Data de atualização do status da transação no formato ISODateTime. |
net_value | int32 | Valor em centavos a ser cobrado sem as taxas de adquirência. |
authorized_amount | int32 | Valor em centavos autorizado na transação. |
paid_amount | int32 | Valor em centavos capturado na transação. |
refunded_amount | int32 | Valor em centavos estornado na transação. |
installments | string | Número de parcelas em que o cliente pagou. |
transaction_id | string | Número identificador da transação. |
card_holder_name | string | Nome do portador do cartão utilizado no pagamento. |
card_brand | string | Bandeira do cartão utilizado no pagamento. Valores possíveis: visa , mastercard , amex , hipercard e elo . |
card_first_digits | string | Primeiros 6 dígitos do cartão utilizado no pagamento. |
card_last_digits | string | Últimos 4 dígitos do cartão utilizado no pagamento. |
acquirer_status_code | string | Código identificador da resposta do Banco Emissor. Valores possíveis: 0000 , 1000 , 1011 , 1016 e 5000 . |
acquirer_status_message | string | Mensagem referente ao código da resposta do Banco Emissor. |
Postback URL
Ao criar uma transação, se você passar uma url no parâmetro postback_url
a sua aplicação recebe um POST contendo no body um objeto com informações adicionais sobre o atual status da transação.
Todo o processo de mudança de status de uma transação é assíncrono. Por isso, é importante que você passe um postback_url
durante o processo de criação de uma transação para que sua aplicação receba todas as mudanças de status. Esses status, possuem 2 contextos: old_status
(o status anterior) e current_status
(o status mais atual). Abaixo, a tabela com os valores possíveis de status.
Status | Significado |
---|---|
processing | A request entrou em uma fila de requisições e a transação está em processo de autorização. |
paid | Transação paga e capturada com sucesso. |
review | Transação está em processo de revisão manual pelos nossos especialistas. O valor foi autorizado e reservado no cartão, mas ainda não foi capturado. |
refused | Transação recusada pelo banco emissor. |
refunded | Transação estornada. |
chargeback | Transação sofreu chargeback. |
🕹 Exemplo do BODY de um POST da Marlim para a sua aplicação
curl -X POST "https://seusite.com/pedido/123456789/callback" \
-H "Content-Type: application/json" \
-H "User-Agent: Marlim/1.0.0" \
-H "Marlim-Api-Signature: Star98765Wars43210ANewHope1977" \
-d '{
"transaction_id": "98765432",
"event": "transaction_status_changed",
"old_status": "processing",
"current_status": "paid",
"nsu": "98765432",
"date_created": "2024-02-16T19:58:04.425Z",
"date_updated": "2024-02-16T19:58:04.425Z",
"net_value": 1000000,
"authorized_amount": 103950,
"paid_amount": 103950,
"refunded_amount": 0,
"installments": "1",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000"
}'
Atenção
Você deve validar a origem do postback, isto é, se ele foi realmente enviado pelos servidores da Marlim.
Para isso, enviamos no HEADER do POST dois valores:
• User-Agent
: sempre com o valor Marlim/1.0.0
• Marlim-Api-Signature
: o final da sua api_key removendo os valores mak_test_
e mak_live_
Retentativas
Caso o seu sistema deixe de receber um postback por alguma instabilidade ou até mesmo por estar fora do ar, serão executados dos servidores da Marlim 6 novas tentativas para completar a request até que os nossos servidores recebeba um STATUS 200 do seu sistema. Partindo do primeiro postback, os próximos são enviados com o seguinte padrão de intervalo de tempo:
Tempo | Tentativas |
---|---|
1ª Tentativa | 60 segundos |
2ª Tentativa | 1800 segundos |
3ª Tentativa | 3600 segundos |
4ª Tentativa | 7200 segundos |
5ª Tentativa | 14400 segundos |
6ª Tentativa | 28800 segundos |
Caso todas essas tentativas falhem, é possível utilizar o Endpoint GET passando o ID dessa transação para retornar o status mais atual.
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 Status de Transações
Para facilitar durante a fase de desenvolvimento você pode simular os status de uma transação e alterá-la depois para entender como adicionar esse fluxo na sua aplicação. Uma simulação comum, seria criar uma transação em revisão manual (review
) e futuramente alterar o status para paid
ou rejected
. Emulando assim, em desenvolvimento como aconteceria esse fluxo em produção.
🕹 Criar uma transação com status review
e depois alterá-la para paid
- 1º Criar Transação
- 2º Atualizar Antifraude
- 3º Receber Postback
curl -X POST "https://api.crypto.marlim.co/v2/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"net_value": 1000000,
"amount": 1039501,
"installments": "1",
"item_id": "123456789",
"item_url": "https://seusite.com/pedido/123456789",
"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][type]": "mobile",
"customer[phone][area]": "11",
"customer[phone][number]": "988887777",
"customer[address][zipcode]": "95351",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "Sunset Ave",
"customer[address][number]": "713",
"soft_descriptor": "Star Wars",
"postback_url": "https://seusite.com/pedido/123456789/callback",
"simulate_antifraude_status": "review"
}'
{
"status": "review",
"nsu": "11122233",
"date_created": "2024-02-16T19:58:04.425Z",
"date_updated": "2024-02-16T19:58:04.425Z",
"net_value": 1000000,
"authorized_amount": 103950,
"paid_amount": 0,
"refunded_amount": 0,
"installments": "1",
"transaction_id": "11122233",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000",
"acquirer_status_message": "The bank has authorized this amount on the card."
}
curl -X PATCH "https://api.crypto.marlim.co/v2/antifraud" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"transaction_id": "11122233",
"status": "paid"
}'
{
"status": "paid",
"nsu": "11122233",
"date_created": "2024-02-16T19:58:04.425Z",
"date_updated": "2024-02-16T20:58:04.425Z",
"net_value": 1000000,
"authorized_amount": 103950,
"paid_amount": 103950,
"refunded_amount": 0,
"installments": "1",
"transaction_id": "11122233",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000",
"acquirer_status_message": "The acquirer captured the amount on the card."
}
curl -X POST "https://seusite.com/pedido/123456789/callback" \
-H "Content-Type: application/json" \
-H "User-Agent: Marlim/1.0.0" \
-H "Marlim-Api-Signature: Star98765Wars43210ANewHope1977" \
-d '{
"transaction_id": "98765432",
"event": "transaction_status_changed",
"old_status": "review",
"current_status": "paid",
"nsu": "98765432",
"date_created": "2024-02-16T19:58:04.425Z",
"date_updated": "2024-02-16T19:58:04.425Z",
"net_value": 1000000,
"authorized_amount": 103950,
"paid_amount": 103950,
"refunded_amount": 0,
"installments": "1",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000"
}'
🕹 Criar uma transação com status rejected
curl -X POST "https://api.crypto.marlim.co/v2/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"net_value": 1000000,
"amount": 1039501,
"installments": "1",
"item_id": "123456789",
"item_url": "https://seusite.com/pedido/123456789",
"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][type]": "mobile",
"customer[phone][area]": "11",
"customer[phone][number]": "988887777",
"customer[address][zipcode]": "95351",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "Sunset Ave",
"customer[address][number]": "713",
"soft_descriptor": "Star Wars",
"postback_url": "https://seusite.com/pedido/123456789/callback",
"simulate_antifraude_status": "rejected"
}'
{
"status": "rejected",
"nsu": null,
"date_created": "2024-02-16T19:58:04.425Z",
"date_updated": "2024-02-16T19:58:04.425Z",
"net_value": 1000000,
"authorized_amount": 0,
"paid_amount": 0,
"refunded_amount": 0,
"installments": "1",
"transaction_id": null,
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": null,
"acquirer_status_message": null
}
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, porém não será cobrado nada do cliente / cartão, uma vez que a api_key
usada é do ambiente sandbox.
🕹 Simulando Antifraude em Produção
curl -X POST "https://api.crypto.marlim.co/v2/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"net_value": 1000000,
"amount": 1039501,
"installments": "1",
"item_id": "123456789",
"item_url": "https://seusite.com/pedido/123456789",
"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][type]": "mobile",
"customer[phone][area]": "11",
"customer[phone][number]": "988887777",
"customer[address][zipcode]": "95351",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "Sunset Ave",
"customer[address][number]": "713",
"soft_descriptor": "Star Wars",
"postback_url": "https://seusite.com/pedido/123456789/callback",
"simulate_antifraude_env": "production"
}'
{
"status": "paid",
"nsu": "11122233",
"date_created": "2024-02-16T19:58:04.425Z",
"date_updated": "2024-02-16T19:58:04.425Z",
"net_value": 1000000,
"authorized_amount": 103950,
"paid_amount": 103950,
"refunded_amount": 0,
"installments": "1",
"transaction_id": "11122233",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000",
"acquirer_status_message": "The acquirer captured the amount on the card."
}
Nota
Se você utlizar o parâmetro simulate_antifraude_env
com o valor production
o parâmetro opcional simulate_antifraude_status
se torna inutilizável.
Atenção
Os parâmetros simulate_antifraude_status
e simulate_antifraude_env
e o endpoint v2/antifraud
só são habilitados para api_key do ambiente sandbox. Se você passar algum desses dois parâmetros ou chamar o endpoint de alteração de status em ambiente de produção, será retornado um erro 403 (Forbidden).
Recusa Banco Emissor
Em caso de uma transação ser recusada pelo Banco Emissor é retornado o status refused
com a propriedade acquirer_response_code
contendo o código dessa recusa. Como cada bandeira de cartão bem como o banco emissor pode ter um código diferente, a Marlim agrupa o contexto dessa recusa de acordo com a tabela abaixo. No futuro podem ser incluídos novos códigos, uma vez que esse controle está com as bandeiras e os bancos.
Prefixo | Significado |
---|---|
0000 | Transação autorizada, capturada ou estornada. |
1000 | Transação não aprovada pelo banco. |
1011 | Dados incorretos do cartão. |
1016 | Cartão sem saldo. |
5000 | Erro bancário genérico. O cliente deve entrar em contato com o Banco Emissor. |
Simular Recusa Bancária
O fluxo de banco emissor não existe em ambiente sandbox, então para facilitar na etapa de desenvolvimento preparamos o parâmetro card_cvv
, que pode ser passado com algumas combinações, utlizando o dígito 6
no início, como segue na tabela abaixo.
Valor | Significado |
---|---|
601 | Transação não aprovada pelo banco (acquirer_response_code: 1000 ). |
602 | Dados incorretos do cartão (acquirer_response_code: 1011 ). |
603 | Saldo insuficiente (acquirer_response_code: 1016 ). |
604 | Erro bancário genérico (acquirer_response_code: 5000 ). |
🕹 Simulando Recusa Bancária em Desenvolvimento
- 601
- 602
curl -X POST "https://api.crypto.marlim.co/v2/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"net_value": 1000000,
"amount": 1039501,
"installments": "1",
"item_id": "123456789",
"item_url": "https://seusite.com/pedido/123456789",
"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][type]": "mobile",
"customer[phone][area]": "11",
"customer[phone][number]": "988887777",
"customer[address][zipcode]": "95351",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "Sunset Ave",
"customer[address][number]": "713",
"soft_descriptor": "Star Wars"
}'
{
"status": "refused",
"nsu": null,
"date_created": "2024-02-16T19:58:04.426Z",
"date_updated": "2024-02-16T19:58:04.426Z",
"net_value": 1000000,
"authorized_amount": 0,
"paid_amount": 0,
"refunded_amount": 0,
"installments": "1",
"transaction_id": null,
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "1000",
"acquirer_status_message": "Transaction not approved by the bank. Please contact the bank and try again."
}
curl -X POST "https://api.crypto.marlim.co/v2/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"net_value": 1000000,
"amount": 1039501,
"installments": "1",
"item_id": "123456789",
"item_url": "https://seusite.com/pedido/123456789",
"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][type]": "mobile",
"customer[phone][area]": "11",
"customer[phone][number]": "988887777",
"customer[address][zipcode]": "95351",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "Sunset Ave",
"customer[address][number]": "713",
"soft_descriptor": "Star Wars"
}'
{
"status": "refused",
"nsu": null,
"date_created": "2024-02-16T19:58:04.426Z",
"date_updated": "2024-02-16T19:58:04.426Z",
"net_value": 1000000,
"authorized_amount": 0,
"paid_amount": 0,
"refunded_amount": 0,
"installments": "1",
"transaction_id": null,
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "1011",
"acquirer_status_message": "Some of the card numbers are incorrect. Check the numbers and try again."
}
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.
- Transação Paga
- Transação Recusada
- Faltando Dados de Cartão
curl -X POST "https://api.crypto.marlim.co/v2/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"net_value": 1000000,
"amount": 1039501,
"installments": "1",
"item_id": "123456789",
"item_url": "https://seusite.com/pedido/123456789",
"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][type]": "mobile",
"customer[phone][area]": "11",
"customer[phone][number]": "988887777",
"customer[address][zipcode]": "95351",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "Sunset Ave",
"customer[address][number]": "713",
"soft_descriptor": "Star Wars"
}'
{
"status": "paid",
"nsu": "98765432",
"date_created": "2024-02-16T19:58:04.426Z",
"date_updated": "2024-02-16T19:58:04.426Z",
"net_value": 1000000,
"authorized_amount": 103950,
"paid_amount": 103950,
"refunded_amount": 0,
"installments": "1",
"transaction_id": "98765432",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000",
"acquirer_status_message": "The acquirer captured the amount on the card."
}
curl -X POST "https://api.crypto.marlim.co/v2/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"net_value": 1000000,
"amount": 1039501,
"installments": "1",
"item_id": "123456789",
"item_url": "https://seusite.com/pedido/123456789",
"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][type]": "mobile",
"customer[phone][area]": "11",
"customer[phone][number]": "988887777",
"customer[address][zipcode]": "95351",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "Sunset Ave",
"customer[address][number]": "713",
"soft_descriptor": "Star Wars"
}'
{
"status": "refused",
"nsu": "98765432",
"date_created": "2024-02-16T19:58:04.426Z",
"date_updated": "2024-02-16T19:58:04.426Z",
"net_value": 1000000,
"authorized_amount": 0,
"paid_amount": 0,
"refunded_amount": 0,
"installments": "1",
"transaction_id": "98765432",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "1011",
"acquirer_status_message": "Some of the card numbers are incorrect. Check the numbers and try again."
}
curl -X POST "https://api.crypto.marlim.co/v2/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"net_value": 1000000,
"amount": 1039501,
"installments": "1",
"item_id": "123456789",
"item_url": "https://seusite.com/pedido/123456789",
"card_holder_name": "Luke Skywalker",
"card_expiration_date": "1122",
"card_cvv": "123",
"customer[name]": "Luke Skywalker",
"customer[email]": "luke@jedimaster.sw",
"customer[document_number]": "00099988877",
"customer[phone][type]": "mobile",
"customer[phone][area]": "11",
"customer[phone][number]": "988887777",
"customer[address][zipcode]": "95351",
"customer[address][state]": "CA",
"customer[address][city]": "Modesto",
"customer[address][neighborhood]": "East Modesto",
"customer[address][street]": "Sunset Ave",
"customer[address][number]": "713",
"soft_descriptor": "Star Wars"
}'
{
"errors": {
"type": "card",
"message": "Card parameter or card_id is missing"
}
}