Para fazer uma cobrança, você deve usar a rota /transactions para criar sua transação, que pode ser feita por cartão de crédito ou por boleto bancário.
No caso de cartão de crédito é possível utilizar um card_id, card_hash ou todos os dados do cartão diretamente, sendo a segunda opção mais indicada por fatores de segurança.
Boleto em PDF
Além da versão HTML dos boletos retornada pela API, é possível gerar uma versão em PDF. Para tal basta adicionar o sufixo ?format=pdf na url retornada. Segue um exemplo:
URL ORIGINAL: https://api.pagar.me/1/boletos/test_ckj9yiyvy1obb0gm5g9yfpgbw
URL PDF: https://api.pagar.me/1/boletos/test_ckj9yiyvy1obb0gm5g9yfpgbw?format=pdf
Transações recusadas
Em ambiente de teste é possível simular uma transação recusada:
- pela operadora do cartão usando um cvv iniciado com 6
Campo 'customer.name'
Para transações usando boleto como método de pagamento, o campo 'customer.name' é obrigatório.
Não guardamos CVV
Em nosso card_id, não armazenamos o cvv do cartão. Mas você pode passar o campo na request, para adicionar uma camada de validação e segurança para sua transação.
card_hash e card_id
Apesar de existir a possibilidade de colocar os dados do cartão diretamente na requisição, sugerimos não faze-lo por motivos de segurança. Por isso, é possível optar por usar o card_hash ou o card_id. Não é necessário informar os ambos, somente um.
card_hash
O card_hash, representação dos dados do cartão encriptados, não pode ser usado mais de uma vez e deve ser consumido em até 5 minutos! Vide
Antifraude
Todos os dados do cliente(customer) são obrigatórios para transações de cartão de crédito, devido ao antifraude.
Metadata
A API espera que o schema do metadata enviado seja consistente, ou seja, se em uma transação é enviado um metadado com o formato:
{ ... "metadata": { "pedido": 1 } }
a seguinte mudança não deve ser feita (mudança do tipo de 'pedido'):
{ ... "metadata": { "pedido": "2" } }
Apesar disso não restringimos a adição de novas chaves em transações posteriores como:
{ ... "metadata": { "pedido": 3, "cliente": 1 } }
Metadata 2
O metadata deve ser um objeto json. Logo os metadados a seguir são inválidos:
{ ... "metadata": ["order", "cart"] }
{ ... "metadata": "order" }