{"_id":"57866ecb0413ad0e009e6251","project":"575aeffae12cf20e002f306c","user":"57601a13af3e090e00108059","githubsync":"","parentDoc":null,"version":{"_id":"575aeffae12cf20e002f306f","project":"575aeffae12cf20e002f306c","__v":31,"createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","categories":["575aeffae12cf20e002f3070","575af039a083950e004487f7","575af5c7ba4ed70e000ca288","57602fe5b82256240055c657","57602ff6c811102000cef302","576030909b1a9a220067ca40","57604518b82256240055c722","5761a63d207db7170022fc14","5761b9a2b65324200072d79e","576832939f0bf4190014ffdf","576832c09f0bf4190014ffe1","576832cba151c10e004316f0","576832d5bb15f40e00a288ec","576832e107b1f30e0039c645","577680bf3cee3a0e00a000bc","577ff3b1ff48990e000c6806","5783f78c5cbce30e0074e2b7","5783f86292edb92200e6101c","5783f86dbfbba719003f0d8b","5783f8755cbce30e0074e2b8","5783f8b65cbce30e0074e2b9","5783f8bf5cbce30e0074e2ba","5783f8d8ce802f0e0087d574","578529f887c9280e0090394b","57852aeb87c9280e0090394d","57866e72b2f4060e00fa39ca","57ab6d5c39c2fd1900191879","57f39451ab0ee12000bef915","582499a0d90fa027009b259e","58c29df1258e5a1900b60478","5a7c4127490e52002a7f643c"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"2016","version_clean":"1.0.0","version":"1"},"__v":15,"category":{"_id":"57866e72b2f4060e00fa39ca","project":"575aeffae12cf20e002f306c","version":"575aeffae12cf20e002f306f","__v":0,"sync":{"url":"","isSync":false},"reference":true,"createdAt":"2016-07-13T16:38:10.846Z","from_sync":false,"order":1,"slug":"ambiente-de-testes","title":"Ambiente de Testes"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-07-13T16:39:39.291Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":1,"body":"Para acessar o ambiente de testes você precisa de uma conta Gerencianet. <a href=\"https://gerencianet.com.br/#abrirconta\" title=\"Cadastro ao nosso sistema, seja nosso cliente\" target=\"_blank\">Crie sua conta</a>.\n\nO Playground (também chamado de \"sandbox\") é um ambiente de desenvolvimento/testes no qual o integrador, independente da operação a ser realizada, pode utilizar para conhecer o mecanismo e o fluxo de pagamento em um ambiente 100% de teste e descomplicado. [Conheça mais](https://dev.gerencianet.com.br/docs/playground) sobre o Playground oferecido pela Gerencianet.\n\nA criação de uma cobrança (transação) via integração com a API da Gerencianet possui duas etapas:\n\n1. Primeiro [gera a transação (ou cobrança)](https://dev.gerencianet.com.br/docs/playground-transacoes#charge) através do endpoint <code>POST /v1/charge</code>;\n\n2. Por fim, [associa a transação gerada à uma forma de pagamento](https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay) através do endpoint <code>POST /v1/charge/:id/pay</code>.\n\nApós utilizar o endpoint <code>POST /v1/charge</code>, a transação já estará criada e, a partir deste momento, será possível associá-la à forma de pagamento como boleto bancário ou cartão de crédito.\n\nA seguir, confira todos os endpoints presentes em nosso Playground, dentro da modalidade de \"Transações\":\n\n<ul><li><div class=\"\"><span class=\"post\">POST</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge\">/v1/charge</a> <em>(criar nova transação)</em></div></li><li><div class=\"\"><span class=\"get\">GET</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id\">/v1/charge/:id</a> <em>(retornar informações de transação existente)</em></div></li><li><div class=\"\"><span class=\"put\">PUT</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_metadata\">/v1/charge/:id/metadata</a> <em>(incluir \"notification_url\" e \"custom_id\" em uma transação existente)</em></div></li><li><div class=\"\"><span class=\"put\">PUT</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_billet\">/v1/charge/:id/billet</a> <em>(alterar data de vencimento de uma transação existente)</em></div></li><li><div class=\"\"><span class=\"put\">PUT</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_cancel\">/v1/charge/:id/cancel</a> <em>(cancelar uma transação existente)</em></div></li><li><div class=\"\"><span class=\"post\">POST</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay\">/v1/charge/:id/pay</a> <em>(associa método de pagamento à uma transação já criada)</em></div></li><li><div class=\"\"><span class=\"post\">POST</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_billet_resend\">/v1/charge/:id/billet/resend</a> <em>(reenvio do boleto bancário para o email desejado)</em></div></li><li><div class=\"\"><span class=\"post\">POST</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_history\">/v1/charge/:id/history</a> <em>(acrescentar descrição ao histórico de uma transação)</em></div></li><li><div class=\"\"><span class=\"post\">POST</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_link\">/v1/charge/:id/link</a> <em>(retorna um link para uma tela de pagamento da Gerencianet)</em></div></li><li><div class=\"\"><span class=\"put\">PUT</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#put_charge_id_link\">/v1/charge/:id/link</a> <em>(alterar determinados parâmetros/atributos de um link de pagamento existente)</em></div></li><li><div class=\"\"><span class=\"post\">POST</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#balance\">/v1/charge/:id/balance-sheet</a> <em>(definir que a transação será do tipo boleto balancete)</em></div></li><li><div class=\"\"><span class=\"put\">PUT</span> <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#settlecharge\">/v1/charge/:id/settle</a> <em>(marcar como pago [baixa manual] uma determinada transação)</em></div></li></ul>\n\n<br>\n<hr>\n\n<div  class=\"distancia_top\"><a name=\"charge\"><span class=\"post\">POST</span></a><strong class=\"text-endpoint\">/v1/charge</strong></div>\n\nPermite criar uma nova transação; retorna um código identificador da transação denominado <code>charge_id</code>.\n\nSomente após gerar a transação é que ela será associada a um método de pagamento, podendo ser boleto bancário ou cartão de crédito.\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/50475e5-post-v1-charge.png\",\n        \"post-v1-charge.png\",\n        1386,\n        366,\n        \"#eff0f0\"\n      ]\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para criar uma cobrança (ainda sem forma de pagamento definida) no Playground. Neste caso, este JSON define que a cobrança deve possuir um produto de nome <code>Meu Produto</code>, valor <code>8900</code> (o que equivale a R$ 89,00) e quantidade <code>1</code>. Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórias e opcionais) disponíveis para este método:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"items\\\": [\\n    {\\n      \\\"name\\\": \\\"Meu Produto\\\",\\n      \\\"value\\\": 8900,\\n      \\\"amount\\\": 1\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Entrada\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n  \\\"data\\\": {\\n    \\\"charge_id\\\": numero_charge_id, // número da ID referente à transação gerada\\n    \\\"status\\\": \\\"new\\\", // cobrança gerada, aguardando definição da forma de pagamento\\n    \\\"total\\\": 8900, // valor total da transação (em centavos, sendo 8900 = R$89,00)\\n    \\\"custom_id\\\": null, // identificador próprio opcional\\n    \\\"created_at\\\": \\\"2016-06-24 14:58:46\\\" // data e hora da criação da transação\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída\"\n    },\n    {\n      \"code\": \"{\\n  \\\"id\\\": \\\"/Charge\\\",\\n  \\\"type\\\": \\\"object\\\",\\n  \\\"properties\\\": {\\n    \\\"items\\\": {\\n      \\\"id\\\": \\\"/MarketplaceItem\\\",\\n      \\\"type\\\": \\\"array\\\",\\n      \\\"minItems\\\": 1,\\n      \\\"items\\\": {\\n        \\\"type\\\": \\\"object\\\",\\n        \\\"properties\\\": {\\n          \\\"name\\\": {\\n            \\\"type\\\": \\\"string\\\",\\n            \\\"minLength\\\": 1,\\n            \\\"maxLength\\\": 255,\\n            \\\"pattern\\\": \\\"^[^<>]+$\\\"\\n          },\\n          \\\"value\\\": {\\n            \\\"type\\\": \\\"integer\\\",\\n            \\\"minimum\\\": 0\\n          },\\n          \\\"amount\\\": {\\n            \\\"type\\\": \\\"integer\\\",\\n            \\\"minimum\\\": 1,\\n            \\\"exclusiveMinimum\\\": false\\n          },\\n          \\\"marketplace\\\": {\\n            \\\"type\\\": \\\"object\\\",\\n            \\\"properties\\\": {\\n              \\\"repasses\\\": {\\n                \\\"id\\\": \\\"/Repass\\\",\\n                \\\"type\\\": \\\"array\\\",\\n                \\\"minItems\\\": 1,\\n                \\\"items\\\": {\\n                  \\\"type\\\": \\\"object\\\",\\n                  \\\"properties\\\": {\\n                    \\\"payee_code\\\": {\\n                      \\\"type\\\": \\\"string\\\",\\n                      \\\"pattern\\\": \\\"^[a-fA-F0-9]{32}$\\\"\\n                    },\\n                    \\\"percentage\\\": {\\n                      \\\"type\\\": \\\"integer\\\",\\n                      \\\"minimum\\\": 0,\\n                      \\\"maximum\\\": 10000\\n                    }\\n                  },\\n                  \\\"required\\\": [\\n                    \\\"payee_code\\\",\\n                    \\\"percentage\\\"\\n                  ]\\n                }\\n              }\\n            },\\n            \\\"required\\\": [\\n              \\\"repasses\\\"\\n            ]\\n          }\\n        },\\n        \\\"required\\\": [\\n          \\\"name\\\",\\n          \\\"value\\\"\\n        ]\\n      }\\n    },\\n    \\\"shippings\\\": {\\n      \\\"id\\\": \\\"/Shipping\\\",\\n      \\\"type\\\": \\\"array\\\",\\n      \\\"minItems\\\": 1,\\n      \\\"items\\\": {\\n        \\\"type\\\": \\\"object\\\",\\n        \\\"properties\\\": {\\n          \\\"name\\\": {\\n            \\\"type\\\": \\\"string\\\",\\n            \\\"maxLength\\\": 255\\n          },\\n          \\\"value\\\": {\\n            \\\"type\\\": \\\"integer\\\",\\n            \\\"minimum\\\": 0\\n          },\\n          \\\"payee_code\\\": {\\n            \\\"type\\\": \\\"string\\\",\\n            \\\"pattern\\\": \\\"^[a-fA-F0-9]{32}$\\\"\\n          }\\n        },\\n        \\\"required\\\": [\\n          \\\"name\\\",\\n          \\\"value\\\"\\n        ]\\n      }\\n    },\\n    \\\"metadata\\\": {\\n      \\\"type\\\": \\\"object\\\",\\n      \\\"properties\\\": {\\n        \\\"custom_id\\\": {\\n          \\\"type\\\": [\\n            \\\"string\\\",\\n            \\\"null\\\"\\n          ],\\n          \\\"maxLength\\\": \\\"255\\\"\\n        },\\n        \\\"notification_url\\\": {\\n          \\\"type\\\": [\\n            \\\"string\\\",\\n            \\\"null\\\"\\n          ],\\n          \\\"pattern\\\": \\\"^https?://.+\\\",\\n          \\\"maxLength\\\": \\\"255\\\"\\n        }\\n      }\\n    }\\n  },\\n  \\\"required\\\": [\\n    \\\"items\\\"\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Schema\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n<div class=\"distancia_top\"><a name=\"charge_id\"><span class=\"get\">GET</span></a><strong class=\"text-endpoint\">/v1/charge/:id</strong></div> \n\nPermite retornar informações de uma transação existente.\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>GET /v1/charge/:id</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/2187fb4-get-charge-id.png\",\n        \"get-charge-id.png\",\n        1388,\n        122,\n        \"#f1f1f1\"\n      ]\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para buscar informações de alguma transação no Playground. Ao informar o parâmetro de entrada <code>charge_id</code>, serão retornadas informações da transação existente, conforme pode observar a saída prevista disponível para este método:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Parâmetro de entrada: informe a \\\"charge_id\\\" da transação desejada\",\n      \"language\": \"text\",\n      \"name\": \"Dados de Entrada\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n  \\\"data\\\": {\\n    \\\"charge_id\\\": 1234567, // número da ID referente à transação gerada\\n    \\\"total\\\": 8900, // valor total da transação (em centavos, sendo 8900 = R$89,00)\\n    \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (o termo \\\"waiting\\\" equivale a \\\"aguardando\\\")\\n    \\\"custom_id\\\": null, // identificador próprio opcional\\n    \\\"created_at\\\": \\\"2018-10-31 10:18:21\\\", // data e hora da criação da transação\\n    \\\"notification_url\\\": null,\\n    \\\"items\\\": [\\n      {\\n        \\\"name\\\": \\\"Meu Produto\\\", // nome de seu item, produto ou serviço\\n        \\\"value\\\": 8900, // valor, em centavos. Por exemplo: 8900 (equivale a R$ 89,00)\\n        \\\"amount\\\": 1 // quantidade do item ou produto\\n      }\\n    ],\\n    \\\"history\\\": [\\n      {\\n        \\\"message\\\": \\\"Cobrança criada\\\",\\n        \\\"created_at\\\": \\\"2018-10-31 10:18:21\\\"\\n      },\\n      {\\n        \\\"message\\\": \\\"Pagamento via boleto aguardando confirmação\\\",\\n        \\\"created_at\\\": \\\"2018-10-31 10:19:05\\\"\\n      }      \\n    ],\\n    \\\"customer\\\": {\\n      \\\"name\\\": \\\"Gorbadoc Oldbuck\\\",\\n      \\\"cpf\\\": \\\"94271564656\\\",\\n      \\\"email\\\": \\\"email_do_cliente:::at:::servidor.com.br\\\",\\n      \\\"phone_number\\\": \\\"5144916523\\\",\\n      \\\"address\\\": {\\n        \\\"street\\\": \\\"Avenida Juscelino Kubitschek\\\",\\n        \\\"number\\\": \\\"909\\\",\\n        \\\"complement\\\": null,\\n        \\\"neighborhood\\\": \\\"Bauxita\\\",\\n        \\\"city\\\": \\\"Ouro Preto\\\",\\n        \\\"state\\\": \\\"MG\\\",\\n        \\\"zipcode\\\": \\\"35400000\\\"\\n      }\\n    },\\n    \\\"payment\\\": {\\n      \\\"method\\\": \\\"banking_billet\\\", // forma de pagamento da cobrança (banking_billet equivale a boleto bancário)\\n      \\\"created_at\\\": \\\"2018-10-31 10:19:05\\\",\\n      \\\"message\\\": \\\"Usando o atributo message, este conteúdo é exibido no campo OBSERVAÇÃO da cobrança emitida via API\\\\n ... e também no campo OBSERVAÇÃO DO VENDEDOR nos e-mails de cobrança enviados ao cliente\\\\n É possível utilizar até 4 linhas de conteúdo, com no máximo 100 caracteres por linha\\\\n Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê\\\",\\n      \\\"banking_billet\\\": {\\n        \\\"barcode\\\": \\\"00000.00000 00000.000000 00000.000000 0 00000000000000\\\",\\n        \\\"link\\\": \\\"link_https_para_acesso_ao_boleto\\\", // link da transação gerada\\n        \\\"pdf\\\": {\\n          \\\"charge\\\": \\\"link_https_do_pdf_da_cobranca\\\" // link do PDF da cobrança\\n        },\\n        \\\"expire_at\\\": \\\"2018-12-30\\\", // data de vencimento da cobrança no seguinte formato: 2018-12-30 (ou seja, equivale a 30/12/2018)\\n        \\\"configurations\\\": {\\n          \\\"interest\\\": 33, // valor cobrado de juros por dia após a data de vencimento (neste caso, 33 equivale a 0,033%)\\n          \\\"fine\\\": 200 // valor cobrado de multa após o vencimento (neste caso, 200 equivale a 2%)\\n        }\\n      }\\n    }\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n<div class=\"distancia_top\"><a name=\"charge_id_metadata\"><span class=\"put\">PUT</span></a><strong class=\"text-endpoint\">/v1/charge/:id/metadata</strong></div>\n\nPermite incluir informações como <code>notification_url</code> e <code>custom_id</code> à uma transação existente. Este endpoint é de **extrema importância** para atualizar sua URL de notificação atrelada às transações ou modificar o <code>custom_id</code> previamente associado às suas transações.\n\n- <code>notification_url</code>: é um endereço de sua URL válida que receberá as notificações de mudanças de status das transações\n\n- <code>custom_id</code>: permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la caso você possua uma identificação específica e queira mantê-la.\n\n**Casos de uso deste endpoint:**\n\n- Integrador alterou o IP do servidor que estava associado na URL de notificação das transações;\n\n- Integrador atualizou a URL de notificação para as novas transações que forem criadas (<code>createCharge</code>), mas precisa atualizar também nas transações anteriores (<code>updateChargeMetadata</code>) que foram geradas e que estão associadas com a URL incorreta/desatualizada;\n\n- Foi instalado SSL (https) no servidor do cliente e mesmo que o cliente defina uma regra de redirecionamento 301 ou 302, será preciso definir a nova URL nas transações que estão com a URL \"antiga\";\n\n- Integrador gerou cobranças e não havia informado a URL de notificação ao enviar a requisição de criação da transação;\n\n- Modificar ou acrescentar uma informação junto ao atributo <code>custom_id</code> associado às transações geradas previamente;\n\n- Dentre outros possíveis cenários.\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>PUT /v1/charge/:id/metadata</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/42dd9a9-put-charge-metadata.png\",\n        \"put-charge-metadata.png\",\n        1386,\n        395,\n        \"#eeefef\"\n      ]\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para alterar a URL de notificação e/ou custom_id de uma transação já existente no Playground. Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórios e opcionais) disponíveis para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"notification_url\\\": null,\\n  \\\"custom_id\\\": null\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Entrada\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída\"\n    },\n    {\n      \"code\": \"{\\n  \\\"type\\\": \\\"object\\\",\\n  \\\"minProperties\\\": 1,\\n  \\\"id\\\": \\\"/ChargeMetadataUpdate\\\",\\n  \\\"properties\\\": {\\n    \\\"notification_url\\\": {\\n      \\\"type\\\": [\\n        \\\"string\\\",\\n        \\\"null\\\"\\n      ],\\n      \\\"pattern\\\": \\\"^https?://.+\\\",\\n      \\\"minLength\\\": \\\"1\\\",\\n      \\\"maxLength\\\": \\\"255\\\"\\n    },\\n    \\\"custom_id\\\": {\\n      \\\"type\\\": \\\"string\\\",\\n      \\\"minLength\\\": \\\"1\\\",\\n      \\\"maxLength\\\": \\\"255\\\",\\n      \\\"pattern\\\": \\\"^[a-zA-Z0-9\\\\\\\\_\\\\\\\\-\\\\\\\\s]+$\\\"\\n    }\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Schema\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n<div class=\"distancia_top\"><a name=\"charge_id_billet\"><span class=\"put\">PUT</span></a><strong class=\"text-endpoint\">/v1/charge/:id/billet</strong></div>\n\nPermite efetuar a alteração da data de vencimento de uma transação em que a forma de pagamento é boleto bancário (<code>banking_billet</code>) e que ainda não foi paga. O formato da data de vencimento deve seguir o seguinte padrão: <code>YYYY-MM-DD</code>.\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>PUT /v1/charge/:id/billet</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/bde9517-put-charge-id-billet.png\",\n        \"put-charge-id-billet.png\",\n        1385,\n        393,\n        \"#eff0f0\"\n      ]\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para alterar a data de vencimento de um boleto no Playground - no caso, a nova de vencimento do boleto será dia <code>2018-12-30</code> (equivale a 30/12/2018). Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórios e opcionais) disponíveis para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"expire_at\\\": \\\"2018-12-30\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Entrada\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída\"\n    },\n    {\n      \"code\": \"{\\n  \\\"id\\\": \\\"/ChargeBilletUpdate\\\",\\n  \\\"type\\\": \\\"object\\\",\\n  \\\"properties\\\": {\\n    \\\"expire_at\\\": {\\n      \\\"type\\\": \\\"string\\\",\\n      \\\"pattern\\\": \\\"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\\\"\\n    }\\n  },\\n  \\\"required\\\": [\\n    \\\"expire_at\\\"\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Schema\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n<div class=\"distancia_top\"><a name=\"charge_id_cancel\"><span class=\"put\">PUT</span></a><strong class=\"text-endpoint\">/v1/charge/:id/cancel</strong></div>\n\nAtravés deste *endpoint* é possível cancelar uma transação criada.\n\nSomente transações com status <code>new</code>, <code>waiting</code>, <code>unpaid</code> ou <code>link</code> podem ser canceladas. A partir do momento que uma transação é cancelada, existe apenas uma condição para que esse status seja alterado novamente: se o cliente imprimir o boleto antes do integrador cancelar a transação, ele poderá realizar o pagamento normalmente em uma agência bancária.\n\nNeste caso, o integrador e o pagador recebem a confirmação do pagamento como já acontece normalmente e o status da cobrança é alterado de <code>canceled</code> (cancelado) para <code>paid</code> (pago).\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>PUT /v1/charge/:id/cancel</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/ffdc8c0-put-charge-id-cancel.png\",\n        \"put-charge-id-cancel.png\",\n        1385,\n        123,\n        \"#f1f1f1\"\n      ]\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para cancelar uma transação criada em Playground. Além disso, é possível observar a saída prevista disponível para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Parâmetro de entrada: informe a \\\"charge_id\\\" da transação desejada\",\n      \"language\": \"text\",\n      \"name\": \"Dados de Entrada\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n<div class=\"distancia_top\"><a name=\"charge_id_pay\"><span class=\"post\">POST</span></a><strong class=\"text-endpoint\">/v1/charge/:id/pay</strong></div>\n\nPermite associar um método de pagamento à uma transação já criada.\n\nApós gerar uma transação através do endpoint <code>POST /v1/charge</code>, esta fica classificada com o status de <code>new</code> (novo), ou seja, uma nova transação foi gerada, porém, nenhum método de pagamento foi atribuído a ela.\n\nPara definir uma forma de pagamento para a transação criada, o integrador pode escolher entre <code>banking_billet</code> ou <code>credit_card</code> (boleto bancário e cartão de crédito, respectivamente).\n\n- *Boleto Bancário*: a transação passa por um ciclo de alteração de status, sendo criada inicialmente com o status de <code>new</code> (novo) e, ao definir a forma de pagamento, o status passará a ser <code>waiting</code> (aguardando). Isso significa que o boleto foi gerado com sucesso, mas ainda não foi pago. Ao escolher boleto, a resposta do consumo já terá a linha digitável, código de barras e link para acesso ao boleto;\n\n- *Cartão de Crédito*: a principal diferença para o boleto está relacionada à necessidade de utilização de um código denominado “payment_token”. No Playground, você pode gerar seu token clicando no botão *“Gerar payment token”* e colá-lo dentro do atributo <code>payment_token</code>. Já no ambiente de produção, a obtenção do \"payment_token\" se dá pelo consumo de um código Javascript disponível em sua conta.\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge/:id/pay</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/dc9a82b-post-charge-id-pay.png\",\n        \"post-charge-id-pay.png\",\n        1387,\n        434,\n        \"#edefef\"\n      ]\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para associar um método de pagamento à uma transação já criada em Playground - o integrador pode escolher entre <code>banking_billet</code> ou <code>credit_card</code>. Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórios e opcionais) disponíveis para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"payment\\\": {\\n    \\\"credit_card\\\": {\\n      \\\"customer\\\": {\\n        \\\"name\\\": \\\"Gorbadoc Oldbuck\\\",\\n        \\\"cpf\\\": \\\"94271564656\\\",\\n        \\\"email\\\": \\\"email_do_cliente@servidor.com.br\\\",\\n        \\\"birth\\\": \\\"1990-08-29\\\",\\n        \\\"phone_number\\\": \\\"5144916523\\\"\\n      },\\n      \\\"installments\\\": 1,\\n      \\\"payment_token\\\": \\\"\\\",\\n      \\\"billing_address\\\": {\\n        \\\"street\\\": \\\"Avenida Juscelino Kubitschek\\\",\\n        \\\"number\\\": \\\"909\\\",\\n        \\\"neighborhood\\\": \\\"Bauxita\\\",\\n        \\\"zipcode\\\": \\\"35400000\\\",\\n        \\\"city\\\": \\\"Ouro Preto\\\",\\n        \\\"complement\\\": \\\"\\\",\\n        \\\"state\\\": \\\"MG\\\"\\n      }\\n    }\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Entrada (cartão)\"\n    },\n    {\n      \"code\": \"{\\n  \\\"payment\\\": {\\n    \\\"banking_billet\\\": {\\n      \\\"customer\\\": {\\n        \\\"name\\\": \\\"Gorbadoc Oldbuck\\\",\\n        \\\"cpf\\\": \\\"94271564656\\\",\\n        \\\"email\\\": \\\"email_do_cliente@servidor.com.br\\\",\\n        \\\"phone_number\\\": \\\"5144916523\\\",\\n        \\\"address\\\": {\\n          \\\"street\\\": \\\"Avenida Juscelino Kubitschek\\\",\\n          \\\"number\\\": \\\"909\\\",\\n          \\\"neighborhood\\\": \\\"Bauxita\\\",\\n          \\\"zipcode\\\": \\\"35400000\\\",\\n          \\\"city\\\": \\\"Ouro Preto\\\",\\n          \\\"complement\\\": \\\"\\\",\\n          \\\"state\\\": \\\"MG\\\"\\n        }\\n      },\\n      \\\"expire_at\\\": \\\"2018-12-30\\\",\\n      \\\"configurations\\\": {\\n        \\\"fine\\\": 200,\\n        \\\"interest\\\": 33\\n      },\\n      \\\"message\\\": \\\"Usando o atributo message, este conteúdo é exibido no campo OBSERVAÇÃO da cobrança emitida via API \\\\n ... e também no campo OBSERVAÇÃO DO VENDEDOR nos e-mails de cobrança enviados ao cliente \\\\n É possível utilizar até 4 linhas de conteúdo, com no máximo 100 caracteres por linha \\\\n Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê\\\"\\n    }\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Entrada (boleto)\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n  \\\"data\\\": {\\n    \\\"installments\\\": 1, // número de parcelas em que o pagamento deve ser dividido\\n    \\\"installment_value\\\": 8900, // valor da parcela. Por exemplo: 8900 (equivale a R$ 89,00)\\n    \\\"charge_id\\\": numero_charge_id, // número da ID referente à transação gerada\\n    \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (\\\"waiting\\\" equivale a \\\"aguardando\\\")\\n    \\\"total\\\": 8900, // valor, em centavos. Por exemplo: 8900 (equivale a R$ 89,00)\\n    \\\"payment\\\": \\\"credit_card\\\" // forma de pagamento associada à esta transação (\\\"credit_card\\\" equivale a \\\"cartão de crédito\\\")\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída (cartão)\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n  \\\"data\\\": {\\n    \\\"barcode\\\": \\\"00000.00000 00000.000000 00000.000000 0 00000000000000\\\", // linha digitável do boleto\\n    \\\"link\\\": \\\"link_https_para_acesso_ao_boleto\\\", // link do boleto gerado\\n    \\\"pdf\\\": {\\n      \\\"charge\\\": \\\"link_https_do_pdf_da_cobranca\\\" // link do PDF da cobrança\\n    },    \\n    \\\"expire_at\\\": \\\"2018-12-30\\\", // data de vencimento do boleto no seguinte formato: 2018-12-30 (ou seja, equivale a 30/12/2018)\\n    \\\"charge_id\\\": numero_charge_id, // número da ID referente à transação gerada\\n    \\\"status\\\": \\\"waiting\\\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (\\\"waiting\\\" equivale a \\\"aguardando\\\")\\n    \\\"total\\\": 8900, // valor, em centavos. Por exemplo: 8900 (equivale a R$ 89,00)\\n    \\\"payment\\\": \\\"banking_billet\\\" // forma de pagamento associada à esta transação (\\\"banking_billet\\\" equivale a \\\"boleto bancário\\\")\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída (boleto)\"\n    },\n    {\n      \"code\": \"{\\n  \\\"type\\\": \\\"object\\\",\\n  \\\"id\\\": \\\"/Pay\\\",\\n  \\\"properties\\\": {\\n    \\\"payment\\\": {\\n      \\\"type\\\": \\\"object\\\",\\n      \\\"maxProperties\\\": 1,\\n      \\\"minProperties\\\": 1,\\n      \\\"properties\\\": {\\n        \\\"banking_billet\\\": {\\n          \\\"type\\\": \\\"object\\\",\\n          \\\"id\\\": \\\"/Billet\\\",\\n          \\\"properties\\\": {\\n            \\\"customer\\\": {\\n              \\\"type\\\": \\\"object\\\",\\n              \\\"id\\\": \\\"/BasicCustomer\\\",\\n              \\\"properties\\\": {\\n                \\\"name\\\": {\\n                  \\\"type\\\": [\\n                    \\\"string\\\",\\n                    \\\"null\\\"\\n                  ],\\n                  \\\"minLength\\\": 1,\\n                  \\\"maxLength\\\": 255,\\n                  \\\"pattern\\\": \\\"^[ ]*(.+[ ]+)+.+[ ]*$\\\"\\n                },\\n                \\\"cpf\\\": {\\n                  \\\"type\\\": [\\n                    \\\"string\\\",\\n                    \\\"null\\\"\\n                  ],\\n                  \\\"minLength\\\": 11,\\n                  \\\"maxLength\\\": 11\\n                },\\n                \\\"email\\\": {\\n                  \\\"type\\\": [\\n                    \\\"string\\\",\\n                    \\\"null\\\"\\n                  ],\\n                  \\\"maxLength\\\": 255,\\n                  \\\"pattern\\\": \\\"^[A-Za-z0-9_\\\\\\\\-]+(?:[.][A-Za-z0-9_\\\\\\\\-]+)*@[A-Za-z0-9_]+(?:[-.][A-Za-z0-9_]+)*\\\\\\\\.[A-Za-z0-9_]+$\\\"\\n                },\\n                \\\"phone_number\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"pattern\\\": \\\"^[1-9]{2}9?[0-9]{8}$\\\"\\n                },\\n                \\\"birth\\\": {\\n                  \\\"type\\\": [\\n                    \\\"string\\\",\\n                    \\\"null\\\"\\n                  ],\\n                  \\\"pattern\\\": \\\"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\\\"\\n                },\\n                \\\"address\\\": {\\n                  \\\"type\\\": \\\"object\\\",\\n                  \\\"id\\\": \\\"/AddressOptional\\\",\\n                  \\\"properties\\\": {\\n                    \\\"street\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\"\\n                      ],\\n                      \\\"minLength\\\": 0,\\n                      \\\"maxLength\\\": 200\\n                    },\\n                    \\\"number\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\",\\n                        \\\"integer\\\"\\n                      ],\\n                      \\\"minLength\\\": 0,\\n                      \\\"maxLength\\\": 55\\n                    },\\n                    \\\"neighborhood\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\"\\n                      ],\\n                      \\\"minLength\\\": 0,\\n                      \\\"maxLength\\\": 255\\n                    },\\n                    \\\"zipcode\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\"\\n                      ],\\n                      \\\"pattern\\\": \\\"^[0-9]{8}$\\\"\\n                    },\\n                    \\\"city\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\"\\n                      ],\\n                      \\\"minLength\\\": 0,\\n                      \\\"maxLength\\\": 50\\n                    },\\n                    \\\"complement\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\"\\n                      ],\\n                      \\\"minLength\\\": 0,\\n                      \\\"maxLength\\\": 45\\n                    },\\n                    \\\"state\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\"\\n                      ],\\n                      \\\"pattern\\\": \\\"^(?:A[CLPM]|BA|CE|DF|ES|GO|M[ATSG]|P[RBAEI]|R[JNSOR]|S[CEP]|TO)$\\\"\\n                    }\\n                  }\\n                },\\n                \\\"juridical_person\\\": {\\n                  \\\"type\\\": \\\"object\\\",\\n                  \\\"id\\\": \\\"/JuridicalPerson\\\",\\n                  \\\"properties\\\": {\\n                    \\\"corporate_name\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\"\\n                      ],\\n                      \\\"minLength\\\": 1,\\n                      \\\"maxLength\\\": 255\\n                    },\\n                    \\\"cnpj\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\"\\n                      ],\\n                      \\\"minLength\\\": 14,\\n                      \\\"maxLength\\\": 14\\n                    }\\n                  },\\n                  \\\"required\\\": [\\n                    \\\"corporate_name\\\",\\n                    \\\"cnpj\\\"\\n                  ]\\n                }\\n              },\\n              \\\"required\\\": [\\n                \\\"phone_number\\\"\\n              ]\\n            },\\n            \\\"expire_at\\\": {\\n              \\\"type\\\": \\\"string\\\",\\n              \\\"pattern\\\": \\\"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\\\"\\n            },\\n            \\\"discount\\\": {\\n              \\\"type\\\": \\\"object\\\",\\n              \\\"id\\\": \\\"/Discount\\\",\\n              \\\"properties\\\": {\\n                \\\"type\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"enum\\\": [\\n                    \\\"percentage\\\",\\n                    \\\"currency\\\"\\n                  ]\\n                },\\n                \\\"value\\\": {\\n                  \\\"type\\\": \\\"integer\\\",\\n                  \\\"minimum\\\": 1\\n                }\\n              },\\n              \\\"required\\\": [\\n                \\\"type\\\",\\n                \\\"value\\\"\\n              ]\\n            },\\n            \\\"conditional_discount\\\": {\\n              \\\"id\\\": \\\"/ConditionalDiscount\\\",\\n              \\\"type\\\": \\\"object\\\",\\n              \\\"properties\\\": {\\n                \\\"type\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"enum\\\": [\\n                    \\\"percentage\\\",\\n                    \\\"currency\\\"\\n                  ]\\n                },\\n                \\\"value\\\": {\\n                  \\\"type\\\": \\\"integer\\\",\\n                  \\\"minimum\\\": 1\\n                },\\n                \\\"until_date\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"pattern\\\": \\\"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\\\"\\n                }\\n              },\\n              \\\"required\\\": [\\n                \\\"type\\\",\\n                \\\"value\\\",\\n                \\\"until_date\\\"\\n              ]\\n            },\\n            \\\"instructions\\\": {\\n              \\\"type\\\": \\\"array\\\",\\n              \\\"minItems\\\": 1,\\n              \\\"maxItems\\\": 4,\\n              \\\"items\\\": {\\n                \\\"type\\\": \\\"string\\\",\\n                \\\"minLength\\\": 1,\\n                \\\"maxLength\\\": 90\\n              }\\n            },\\n            \\\"configurations\\\": {\\n              \\\"type\\\": \\\"object\\\",\\n              \\\"id\\\": \\\"/Configurations\\\",\\n              \\\"minProperties\\\": 1,\\n              \\\"properties\\\": {\\n                \\\"fine\\\": {\\n                  \\\"type\\\": \\\"integer\\\",\\n                  \\\"minimum\\\": 0,\\n                  \\\"maximum\\\": 1000\\n                },\\n                \\\"interest\\\": {\\n                  \\\"type\\\": \\\"integer\\\",\\n                  \\\"minimum\\\": 0,\\n                  \\\"maximum\\\": 330\\n                }\\n              }\\n            },\\n            \\\"message\\\": {\\n              \\\"type\\\": \\\"string\\\",\\n              \\\"pattern\\\": \\\"^[^\\\\n]{0,100}(\\\\n[^\\\\n]{0,100}){0,3}$\\\"\\n            }\\n          },\\n          \\\"required\\\": [\\n            \\\"customer\\\",\\n            \\\"expire_at\\\"\\n          ]\\n        },\\n        \\\"credit_card\\\": {\\n          \\\"type\\\": \\\"object\\\",\\n          \\\"id\\\": \\\"/CreditCard\\\",\\n          \\\"properties\\\": {\\n            \\\"customer\\\": {\\n              \\\"type\\\": \\\"object\\\",\\n              \\\"id\\\": \\\"/FullCustomer\\\",\\n              \\\"properties\\\": {\\n                \\\"name\\\": {\\n                  \\\"type\\\": [\\n                    \\\"string\\\",\\n                    \\\"null\\\"\\n                  ],\\n                  \\\"minLength\\\": 1,\\n                  \\\"maxLength\\\": 255,\\n                  \\\"pattern\\\": \\\"^[ ]*(.+[ ]+)+.+[ ]*$\\\"\\n                },\\n                \\\"cpf\\\": {\\n                  \\\"type\\\": [\\n                    \\\"string\\\",\\n                    \\\"null\\\"\\n                  ],\\n                  \\\"minLength\\\": 11,\\n                  \\\"maxLength\\\": 11\\n                },\\n                \\\"email\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"maxLength\\\": 255,\\n                  \\\"pattern\\\": \\\"^[A-Za-z0-9_\\\\\\\\-]+(?:[.][A-Za-z0-9_\\\\\\\\-]+)*@[A-Za-z0-9_]+(?:[-.][A-Za-z0-9_]+)*\\\\\\\\.[A-Za-z0-9_]+$\\\"\\n                },\\n                \\\"phone_number\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"pattern\\\": \\\"^[1-9]{2}9?[0-9]{8}$\\\"\\n                },\\n                \\\"birth\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"pattern\\\": \\\"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\\\"\\n                },\\n                \\\"address\\\": {\\n                  \\\"type\\\": \\\"object\\\",\\n                  \\\"id\\\": \\\"/Address\\\",\\n                  \\\"properties\\\": {\\n                    \\\"street\\\": {\\n                      \\\"type\\\": \\\"string\\\",\\n                      \\\"minLength\\\": 1,\\n                      \\\"maxLength\\\": 200\\n                    },\\n                    \\\"number\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"integer\\\"\\n                      ],\\n                      \\\"minLength\\\": 1,\\n                      \\\"maxLength\\\": 55\\n                    },\\n                    \\\"neighborhood\\\": {\\n                      \\\"type\\\": \\\"string\\\",\\n                      \\\"minLength\\\": 1,\\n                      \\\"maxLength\\\": 255\\n                    },\\n                    \\\"zipcode\\\": {\\n                      \\\"type\\\": \\\"string\\\",\\n                      \\\"pattern\\\": \\\"^[0-9]{8}$\\\"\\n                    },\\n                    \\\"city\\\": {\\n                      \\\"type\\\": \\\"string\\\",\\n                      \\\"minLength\\\": 1,\\n                      \\\"maxLength\\\": 50\\n                    },\\n                    \\\"complement\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\"\\n                      ],\\n                      \\\"minLength\\\": 0,\\n                      \\\"maxLength\\\": 45\\n                    },\\n                    \\\"state\\\": {\\n                      \\\"type\\\": \\\"string\\\",\\n                      \\\"pattern\\\": \\\"^(?:A[CLPM]|BA|CE|DF|ES|GO|M[ATSG]|P[RBAEI]|R[JNSOR]|S[CEP]|TO)$\\\"\\n                    }\\n                  },\\n                  \\\"required\\\": [\\n                    \\\"street\\\",\\n                    \\\"number\\\",\\n                    \\\"neighborhood\\\",\\n                    \\\"zipcode\\\",\\n                    \\\"city\\\",\\n                    \\\"state\\\"\\n                  ]\\n                },\\n                \\\"juridical_person\\\": {\\n                  \\\"type\\\": \\\"object\\\",\\n                  \\\"id\\\": \\\"/JuridicalPerson\\\",\\n                  \\\"properties\\\": {\\n                    \\\"corporate_name\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\"\\n                      ],\\n                      \\\"minLength\\\": 1,\\n                      \\\"maxLength\\\": 255\\n                    },\\n                    \\\"cnpj\\\": {\\n                      \\\"type\\\": [\\n                        \\\"string\\\",\\n                        \\\"null\\\"\\n                      ],\\n                      \\\"minLength\\\": 14,\\n                      \\\"maxLength\\\": 14\\n                    }\\n                  },\\n                  \\\"required\\\": [\\n                    \\\"corporate_name\\\",\\n                    \\\"cnpj\\\"\\n                  ]\\n                }\\n              },\\n              \\\"required\\\": [\\n                \\\"email\\\",\\n                \\\"phone_number\\\",\\n                \\\"birth\\\"\\n              ]\\n            },\\n            \\\"installments\\\": {\\n              \\\"type\\\": \\\"integer\\\",\\n              \\\"minimum\\\": 1,\\n              \\\"maximum\\\": 12,\\n              \\\"exclusiveMinimum\\\": false,\\n              \\\"exclusiveMaximum\\\": false\\n            },\\n            \\\"discount\\\": {\\n              \\\"type\\\": \\\"object\\\",\\n              \\\"id\\\": \\\"/Discount\\\",\\n              \\\"properties\\\": {\\n                \\\"type\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"enum\\\": [\\n                    \\\"percentage\\\",\\n                    \\\"currency\\\"\\n                  ]\\n                },\\n                \\\"value\\\": {\\n                  \\\"type\\\": \\\"integer\\\",\\n                  \\\"minimum\\\": 1\\n                }\\n              },\\n              \\\"required\\\": [\\n                \\\"type\\\",\\n                \\\"value\\\"\\n              ]\\n            },\\n            \\\"billing_address\\\": {\\n              \\\"type\\\": \\\"object\\\",\\n              \\\"id\\\": \\\"/Address\\\",\\n              \\\"properties\\\": {\\n                \\\"street\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"minLength\\\": 1,\\n                  \\\"maxLength\\\": 200\\n                },\\n                \\\"number\\\": {\\n                  \\\"type\\\": [\\n                    \\\"string\\\",\\n                    \\\"integer\\\"\\n                  ],\\n                  \\\"minLength\\\": 1,\\n                  \\\"maxLength\\\": 55\\n                },\\n                \\\"neighborhood\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"minLength\\\": 1,\\n                  \\\"maxLength\\\": 255\\n                },\\n                \\\"zipcode\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"pattern\\\": \\\"^[0-9]{8}$\\\"\\n                },\\n                \\\"city\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"minLength\\\": 1,\\n                  \\\"maxLength\\\": 50\\n                },\\n                \\\"complement\\\": {\\n                  \\\"type\\\": [\\n                    \\\"string\\\",\\n                    \\\"null\\\"\\n                  ],\\n                  \\\"minLength\\\": 0,\\n                  \\\"maxLength\\\": 45\\n                },\\n                \\\"state\\\": {\\n                  \\\"type\\\": \\\"string\\\",\\n                  \\\"pattern\\\": \\\"^(?:A[CLPM]|BA|CE|DF|ES|GO|M[ATSG]|P[RBAEI]|R[JNSOR]|S[CEP]|TO)$\\\"\\n                }\\n              },\\n              \\\"required\\\": [\\n                \\\"street\\\",\\n                \\\"number\\\",\\n                \\\"neighborhood\\\",\\n                \\\"zipcode\\\",\\n                \\\"city\\\",\\n                \\\"state\\\"\\n              ]\\n            },\\n            \\\"payment_token\\\": {\\n              \\\"type\\\": \\\"string\\\",\\n              \\\"pattern\\\": \\\"^[a-fA-F0-9]{40}$\\\"\\n            },\\n            \\\"message\\\": {\\n              \\\"type\\\": \\\"string\\\",\\n              \\\"pattern\\\": \\\"^[^\\\\n]{0,100}(\\\\n[^\\\\n]{0,100}){0,3}$\\\"\\n            }\\n          },\\n          \\\"required\\\": [\\n            \\\"customer\\\",\\n            \\\"billing_address\\\",\\n            \\\"payment_token\\\"\\n          ]\\n        }\\n      }\\n    }\\n  },\\n  \\\"required\\\": [\\n    \\\"payment\\\"\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Schema\"\n    }\n  ]\n}\n[/block]\nNo caso da aba <em>\"Dados de Entrada (boleto)\"</em>, está sendo gerado um boleto com vencimento para 30/12/2018, estamos usando uma mensagem para informar algo ao cliente, e se o boleto for pago após o vencimento, será cobrado 2% de multa e 0,033% de juros por dia.\n\nNo caso da aba <em>\"Dados de Entrada (cartão)\"</em>, o <code>payment_token</code> é o token de pagamento necessário quando o pagamento é via cartão. No Playground, ele é obtido apenas clicando no botão <em>\"Gerar payment token\"</em> e colando dentro do atributo <code>payment_token</code>. Caso estivesse em ambiente de produção, seria obtido através de código Javascript disponível para cada conta Gerencianet - para boleto o \"payment_token\" não é necessário.\n[block:callout]\n{\n  \"type\": \"success\",\n  \"title\": \"INFORMAÇÃO\",\n  \"body\": \"Ao usar o atributo <code>message</code>, deve-se utilizar o operador <code>\\\\n</code> para efetuar a \\\"quebra\\\" da linha. No código que disponibilizamos já incluímos este operador.\"\n}\n[/block]\n<br>\n<hr>\n\n<div class=\"distancia_top\"><a name=\"charge_id_billet_resend\"><span class=\"post\">POST</span></a><strong class=\"text-endpoint\">/v1/charge/:id/billet/resend</strong></div>\n\nPermite o reenvio do boleto bancário para o e-mail desejado.\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge/:id/billet/resend</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/a082275-post-charge-billet-resend.png\",\n        \"post-charge-billet-resend.png\",\n        1386,\n        396,\n        \"#eff0f0\"\n      ]\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para reenviar por e-mail um boleto bancário criado em Playground - neste caso, irá definir que o endereço \"email_do_cliente@servidor.com.br\" receberá o boleto bancário que foi criado em ambiente de testes. Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórios e opcionais) disponíveis para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"email\\\": \\\"email_do_cliente@servidor.com.br\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Entrada\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída\"\n    },\n    {\n      \"code\": \"{\\n  \\\"id\\\": \\\"/ChargeBilletResend\\\",\\n  \\\"type\\\": \\\"object\\\",\\n  \\\"properties\\\": {\\n    \\\"email\\\": {\\n      \\\"type\\\": \\\"string\\\",\\n      \\\"maxLength\\\": 255,\\n      \\\"pattern\\\": \\\"^[A-Za-z0-9_\\\\\\\\-]+(?:[.][A-Za-z0-9_\\\\\\\\-]+)*@[A-Za-z0-9_]+(?:[-.][A-Za-z0-9_]+)*\\\\\\\\.[A-Za-z0-9_]+$\\\"\\n    }\\n  },\\n  \\\"required\\\": [\\n    \\\"email\\\"\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Schema\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n<div class=\"distancia_top\"><a name=\"charge_id_history\"><span class=\"post\">POST</span></a><strong class=\"text-endpoint\">/v1/charge/:id/history</strong></div>\n\nO histórico de uma transação representa todas as ações que ocorreram com esta transação até o presente momento. É possível adicionar mensagens personalizadas a este histórico utilizando o endpoint <code>/v1/charge/:id/history</code>.\n\nAs mensagens personalizadas não influenciam na transação em si, apenas em seu histórico. Para tal, você deve informar a <code>charge_id</code> da transação desejada. Essa descrição deve possuir no mínimo um caractere e no máximo 255 caracteres.\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge/:id/history</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/8b7a75b-post-charge-history.png\",\n        \"post-charge-history.png\",\n        1386,\n        397,\n        \"#eff0f0\"\n      ]\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para acrescentar uma descrição a uma determinada transação no Playground - neste caso, irá acrescentar a descrição \"Camisa Polo tamanho G cor azul\". Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórios e opcionais) disponíveis para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"description\\\": \\\"Camisa Polo tamanho G cor azul\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Entrada\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída\"\n    },\n    {\n      \"code\": \"{\\n  \\\"type\\\": \\\"object\\\",\\n  \\\"id\\\": \\\"/ChargeHistory\\\",\\n  \\\"properties\\\": {\\n    \\\"description\\\": {\\n      \\\"type\\\": \\\"string\\\",\\n      \\\"maxLength\\\": \\\"255\\\",\\n      \\\"minLength\\\": \\\"1\\\"\\n    }\\n  },\\n  \\\"required\\\": [\\n    \\\"description\\\"\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Schema\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n<div class=\"distancia_top\"><a name=\"charge_id_link\"><span class=\"post\">POST</span></a><strong class=\"text-endpoint\">/v1/charge/:id/link</strong></div>\n\nPermite retornar um link para uma tela de pagamento da Gerencianet. Em outras palavras, o integrador gera uma cobrança e, em seguida, ao invés de definir o pagamento via boleto bancário ou cartão de crédito, o integrador pode solicitar um link escolhendo inclusive se a tela de pagamento deve aceitar boleto, cartão ou ambos.\n\nAlém disso, o integrador define um vencimento para a tela de pagamento, ou seja, após a data definida pelo integrador, o link da tela de pagamento não terá mais validade. O integrador pode definir o desconto para boleto ou cartão, e pode ainda informar se deseja coletar ou não o endereço do cliente.\n\nEssa tela de pagamento não é uma definição de pagamento como boleto ou cartão, mas sim um intermediário. É útil quando o integrador não deseja implementar sua própria tela de pagamento, por exemplo.\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge/:id/link</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/5719d04-post-charge-link.png\",\n        \"post-charge-link.png\",\n        1385,\n        396,\n        \"#eeefef\"\n      ],\n      \"caption\": \"\"\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para retornar um link para uma tela de pagamento da Gerencianet. Para utilização, você deve previamente criar uma transação e, no campo <code>id</code>, fornecer o <code>charge_id</code> da transação que foi criada anteriormente. Assim, será retornado um link que permitirá ao cliente ir para uma tela de pagamento previamente configurada pelo integrador.\n\nAlém disso, é possível observar a saída prevista e o schema de validação com todas as tags (obrigatórias e opcionais) disponíveis para este método. Lembrando que também é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada e criada previamente:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"message\\\": \\\"Escreva aqui, se quiser, uma mensagem ao seu cliente, limite de 80 caracteres\\\",\\n  \\\"expire_at\\\": \\\"2018-12-20\\\",\\n  \\\"request_delivery_address\\\": false,\\n  \\\"payment_method\\\": \\\"all\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Entrada\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200, // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n  \\\"data\\\": {\\n    \\\"charge_id\\\": 1234567, // número da ID referente à transação gerada\\n    \\\"status\\\": \\\"link\\\", // indica que trata-se de uma cobrança que está associada a um link de pagamento\\n    \\\"total\\\": 5900, // valor total da transação (em centavos, sendo 5900 = R$59,00)\\n    \\\"custom_id\\\": null, // identificador próprio opcional\\n    \\\"payment_url\\\": \\\"https://pagamento.gerencianet.com.br/8fb4790a-bd16-4268-8118-9cf17ba4a4aa\\\", // link https do link de pagamento\\n    \\\"payment_method\\\": \\\"all\\\", // formas de pagamento permitidas (all = cartão e boleto)\\n    \\\"conditional_discount_date\\\": null, // se usado, refere-se a data máxima que o desconto condicional será concedido\\n    \\\"request_delivery_address\\\": false, // solicitar endereço de entrega do comprador?\\n    \\\"message\\\": \\\"Escreva aqui, se quiser, uma mensagem ao seu cliente, limite de 80 caracteres\\\", // mensagem para o pagador com até 80 caracteres\\n    \\\"expire_at\\\": \\\"2018-12-20\\\", // data de vencimento da tela de pagamento e do próprio boleto\\n    \\\"created_at\\\": \\\"2018-10-31 11:14:11\\\" // data e hora da criação do link\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída\"\n    },\n    {\n      \"code\": \"{\\n  \\\"id\\\": \\\"/ChargeLink\\\",\\n  \\\"type\\\": \\\"object\\\",\\n  \\\"properties\\\": {\\n    \\\"billet_discount\\\": {\\n      \\\"type\\\": \\\"integer\\\",\\n      \\\"minimum\\\": 1,\\n      \\\"maximum\\\": 99999999\\n    },\\n    \\\"card_discount\\\": {\\n      \\\"type\\\": \\\"integer\\\",\\n      \\\"minimum\\\": 1,\\n      \\\"maximum\\\": 99999999\\n    },\\n    \\\"conditional_discount\\\": {\\n      \\\"id\\\": \\\"/ConditionalDiscount\\\",\\n      \\\"type\\\": \\\"object\\\",\\n      \\\"properties\\\": {\\n        \\\"type\\\": {\\n          \\\"type\\\": \\\"string\\\",\\n          \\\"enum\\\": [\\n            \\\"percentage\\\",\\n            \\\"currency\\\"\\n          ]\\n        },\\n        \\\"value\\\": {\\n          \\\"type\\\": \\\"integer\\\",\\n          \\\"minimum\\\": 1\\n        },\\n        \\\"until_date\\\": {\\n          \\\"type\\\": \\\"string\\\",\\n          \\\"pattern\\\": \\\"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\\\"\\n        }\\n      },\\n      \\\"required\\\": [\\n        \\\"type\\\",\\n        \\\"value\\\",\\n        \\\"until_date\\\"\\n      ]\\n    },\\n    \\\"message\\\": {\\n      \\\"type\\\": \\\"string\\\",\\n      \\\"pattern\\\": \\\"^[^\\\\n]{0,100}(\\\\n[^\\\\n]{0,100}){0,3}$\\\"\\n    },\\n    \\\"expire_at\\\": {\\n      \\\"type\\\": \\\"string\\\",\\n      \\\"pattern\\\": \\\"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\\\"\\n    },\\n    \\\"request_delivery_address\\\": {\\n      \\\"type\\\": \\\"boolean\\\"\\n    },\\n    \\\"payment_method\\\": {\\n      \\\"enum\\\": [\\n        \\\"banking_billet\\\",\\n        \\\"credit_card\\\",\\n        \\\"all\\\"\\n      ]\\n    }\\n  },\\n  \\\"required\\\": [\\n    \\\"request_delivery_address\\\",\\n    \\\"expire_at\\\",\\n    \\\"payment_method\\\"\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Schema\"\n    }\n  ]\n}\n[/block]\nEsse JSON retornará um link que dará acesso a uma tela de pagamento. Note que esse link da tela de pagamento terá validade até 20/12/2018, não estamos solicitando o endereço de entrega de nosso cliente e a forma de pagamento permitida é boleto e cartão (que também poderia ter utilizado <code>banking_billet</code> para permitir só pagamento via boleto ou <code>credit_card</code> para somente cartão).\n\nExistem outras possibilidades, como por exemplo, concessão de desconto de acordo com a forma de pagamento, bastaria usar os atributos <code>billet_discount</code> - veja na aba \"Schema\" todos os atributos possíveis de serem utilizados.\n\n<br>\n<hr>\n\n<div class=\"distancia_top\"><a name=\"put_charge_id_link\"><span class=\"put\">PUT</span></a><strong class=\"text-endpoint\">/v1/charge/:id/link</strong></div>\n\nPermite atualizar (alterar) determinados parâmetros/atributos de um link de pagamento criado através do <code>POST /v1/charge/:id/link</code>, desde que não tenha ocorrido a confirmação do pagamento. Algumas informações que são passíveis de serem atualizadas: forma de pagamento, inserção de desconto e de mensagem ao cliente, data de vencimento do link de pagamento e mudança de solicitação (ou não) do endereço de entrega do comprador.\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>PUT /v1/charge/:id/link</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/08b9e87-PUT_charge-id-link.png\",\n        \"PUT_charge-id-link.png\",\n        1387,\n        397,\n        \"#eff0f0\"\n      ]\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para atualizar (alterar) determinados parâmetros/atributos de um link de pagamento criado através do <code>POST /v1/charge/:id/link</code>, desde que não tenha ocorrido a confirmação do pagamento. Além disso, é possível observar a saída prevista e o schema de validação com todas as tags (obrigatórias e opcionais) disponíveis para este método. Lembrando que também é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"expire_at\\\": \\\"2018-12-30\\\",\\n  \\\"request_delivery_address\\\": false,\\n  \\\"payment_method\\\": \\\"all\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Entrada\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída\"\n    },\n    {\n      \"code\": \"{\\n  \\\"id\\\": \\\"/ChargeLinkUpdate\\\",\\n  \\\"type\\\": \\\"object\\\",\\n  \\\"properties\\\": {\\n    \\\"billet_discount\\\": {\\n      \\\"type\\\": [\\n        \\\"integer\\\",\\n        \\\"null\\\"\\n      ],\\n      \\\"minimum\\\": 1,\\n      \\\"maximum\\\": 99999999\\n    },\\n    \\\"card_discount\\\": {\\n      \\\"type\\\": [\\n        \\\"integer\\\",\\n        \\\"null\\\"\\n      ],\\n      \\\"minimum\\\": 1,\\n      \\\"maximum\\\": 99999999\\n    },\\n    \\\"conditional_discount\\\": {\\n      \\\"oneOf\\\": [\\n        {\\n          \\\"type\\\": [\\n            \\\"null\\\"\\n          ]\\n        },\\n        {\\n          \\\"id\\\": \\\"/ConditionalDiscount\\\",\\n          \\\"type\\\": \\\"object\\\",\\n          \\\"properties\\\": {\\n            \\\"type\\\": {\\n              \\\"type\\\": \\\"string\\\",\\n              \\\"enum\\\": [\\n                \\\"percentage\\\",\\n                \\\"currency\\\"\\n              ]\\n            },\\n            \\\"value\\\": {\\n              \\\"type\\\": \\\"integer\\\",\\n              \\\"minimum\\\": 1\\n            },\\n            \\\"until_date\\\": {\\n              \\\"type\\\": \\\"string\\\",\\n              \\\"pattern\\\": \\\"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\\\"\\n            }\\n          },\\n          \\\"required\\\": [\\n            \\\"type\\\",\\n            \\\"value\\\",\\n            \\\"until_date\\\"\\n          ]\\n        }\\n      ]\\n    },\\n    \\\"message\\\": {\\n      \\\"type\\\": [\\n        \\\"string\\\",\\n        \\\"null\\\"\\n      ],\\n      \\\"pattern\\\": \\\"^[^\\\\n]{1,100}(\\\\n[^\\\\n]{0,100}){0,3}$\\\"\\n    },\\n    \\\"expire_at\\\": {\\n      \\\"type\\\": \\\"string\\\",\\n      \\\"pattern\\\": \\\"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\\\"\\n    },\\n    \\\"request_delivery_address\\\": {\\n      \\\"type\\\": \\\"boolean\\\"\\n    },\\n    \\\"payment_method\\\": {\\n      \\\"enum\\\": [\\n        \\\"banking_billet\\\",\\n        \\\"credit_card\\\",\\n        \\\"all\\\"\\n      ]\\n    }\\n  },\\n  \\\"required\\\": [\\n    \\\"expire_at\\\"\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Schema\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n<div class=\"distancia_top\"><a name=\"balance\"><span class=\"post\">POST</span></a><strong class=\"text-endpoint\">/v1/charge/:id/balance-sheet</strong></div>\n\nVocê pode definir que a transação será do tipo boleto balancete. Este é um modelo muito utilizado por condomínios e contabilidades.\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge/:id/balance-sheet</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/da2744d-balance.png\",\n        \"balance.png\",\n        1387,\n        393,\n        \"#edefef\"\n      ]\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para definir que uma transação será do tipo boleto balancete. Para utilização, você deve previamente criar uma transação e, no campo <code>id</code>, fornecer o <code>charge_id</code> da transação que foi criada anteriormente. Assim, será definido que tal transação será do tipo boleto balancete, e o próximo (e último) passo será consumir o endpoint responsável pela definição de boleto (que é o [POST /v1/charge/:id/pay](https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay)).\n\nAlém disso, é possível observar a saída prevista e o schema de validação com todas as tags (obrigatórias e opcionais) disponíveis para este método. Lembrando que também é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada e criada previamente:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"title\\\": \\\"Balancete Demonstrativo\\\",\\n  \\\"body\\\": [\\n    {\\n      \\\"header\\\": \\\"Demonstrativo de Consumo\\\",\\n      \\\"tables\\\": [\\n        {\\n          \\\"rows\\\": [\\n            [\\n              {\\n                \\\"align\\\": \\\"left\\\",\\n                \\\"color\\\": \\\"#000000\\\",\\n                \\\"style\\\": \\\"bold\\\",\\n                \\\"text\\\": \\\"Exemplo de despesa\\\",\\n                \\\"colspan\\\": 2\\n              },\\n              {\\n                \\\"align\\\": \\\"left\\\",\\n                \\\"color\\\": \\\"#000000\\\",\\n                \\\"style\\\": \\\"bold\\\",\\n                \\\"text\\\": \\\"Total lançado\\\",\\n                \\\"colspan\\\": 2\\n              }\\n            ],\\n            [\\n              {\\n                \\\"align\\\": \\\"left\\\",\\n                \\\"color\\\": \\\"#000000\\\",\\n                \\\"style\\\": \\\"normal\\\",\\n                \\\"text\\\": \\\"Instalação\\\",\\n                \\\"colspan\\\": 2\\n              },\\n              {\\n                \\\"align\\\": \\\"left\\\",\\n                \\\"color\\\": \\\"#000000\\\",\\n                \\\"style\\\": \\\"normal\\\",\\n                \\\"text\\\": \\\"R$ 100,00\\\",\\n                \\\"colspan\\\": 2\\n              }\\n            ]\\n          ]\\n        }\\n      ]\\n    },\\n    {\\n      \\\"header\\\": \\\"Balancete Geral\\\",\\n      \\\"tables\\\": [\\n        {\\n          \\\"rows\\\": [\\n            [\\n              {\\n                \\\"align\\\": \\\"left\\\",\\n                \\\"color\\\": \\\"#000000\\\",\\n                \\\"style\\\": \\\"normal\\\",\\n                \\\"text\\\": \\\"Confira na documentação da Gerencianet todas as configurações possíveis de um boleto balancete.\\\",\\n                \\\"colspan\\\": 4\\n              }\\n            ]\\n          ]\\n        }\\n      ]\\n    }\\n  ]\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Entrada\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída\"\n    },\n    {\n      \"code\": \"{\\n  \\\"id\\\": \\\"/BalanceSheet\\\",\\n  \\\"type\\\": \\\"object\\\",\\n  \\\"additionalProperties\\\": false,\\n  \\\"properties\\\": {\\n    \\\"title\\\": {\\n      \\\"type\\\": \\\"string\\\",\\n      \\\"minLength\\\": 3,\\n      \\\"maxLength\\\": 255\\n    },\\n    \\\"body\\\": {\\n      \\\"type\\\": \\\"array\\\",\\n      \\\"maxItems\\\": 2,\\n      \\\"minItems\\\": 1,\\n      \\\"uniqueItems\\\": false,\\n      \\\"additionalItems\\\": false,\\n      \\\"items\\\": {\\n        \\\"type\\\": \\\"object\\\",\\n        \\\"minProperties\\\": 1,\\n        \\\"maxProperties\\\": 2,\\n        \\\"additionalProperties\\\": false,\\n        \\\"properties\\\": {\\n          \\\"header\\\": {\\n            \\\"type\\\": \\\"string\\\",\\n            \\\"minLength\\\": 3,\\n            \\\"maxLength\\\": 255\\n          },\\n          \\\"tables\\\": {\\n            \\\"type\\\": \\\"array\\\",\\n            \\\"minItems\\\": 1,\\n            \\\"additionalItems\\\": false,\\n            \\\"items\\\": {\\n              \\\"type\\\": \\\"object\\\",\\n              \\\"minProperties\\\": 1,\\n              \\\"additionalProperties\\\": false,\\n              \\\"properties\\\": {\\n                \\\"rows\\\": {\\n                  \\\"type\\\": \\\"array\\\",\\n                  \\\"minItems\\\": 1,\\n                  \\\"uniqueItems\\\": false,\\n                  \\\"additionalItems\\\": false,\\n                  \\\"items\\\": {\\n                    \\\"type\\\": \\\"array\\\",\\n                    \\\"maxItems\\\": 4,\\n                    \\\"minItems\\\": 1,\\n                    \\\"additionalItems\\\": false,\\n                    \\\"items\\\": {\\n                      \\\"type\\\": \\\"object\\\",\\n                      \\\"additionalProperties\\\": false,\\n                      \\\"properties\\\": {\\n                        \\\"align\\\": {\\n                          \\\"type\\\": \\\"string\\\",\\n                          \\\"enum\\\": [\\n                            \\\"left\\\",\\n                            \\\"center\\\",\\n                            \\\"right\\\"\\n                          ]\\n                        },\\n                        \\\"color\\\": {\\n                          \\\"type\\\": \\\"string\\\",\\n                          \\\"pattern\\\": \\\"^#[0-9a-fA-F]{6}$\\\"\\n                        },\\n                        \\\"style\\\": {\\n                          \\\"type\\\": \\\"string\\\",\\n                          \\\"enum\\\": [\\n                            \\\"normal\\\",\\n                            \\\"italic\\\",\\n                            \\\"bold\\\",\\n                            \\\"underline\\\",\\n                            \\\"line-through\\\"\\n                          ]\\n                        },\\n                        \\\"text\\\": {\\n                          \\\"type\\\": \\\"string\\\",\\n                          \\\"maxLength\\\": 255\\n                        },\\n                        \\\"colspan\\\": {\\n                          \\\"type\\\": \\\"integer\\\",\\n                          \\\"enum\\\": [\\n                            1,\\n                            2,\\n                            3,\\n                            4\\n                          ]\\n                        }\\n                      },\\n                      \\\"required\\\": [\\n                        \\\"align\\\",\\n                        \\\"color\\\",\\n                        \\\"style\\\",\\n                        \\\"text\\\",\\n                        \\\"colspan\\\"\\n                      ]\\n                    }\\n                  }\\n                }\\n              },\\n              \\\"required\\\": [\\n                \\\"rows\\\"\\n              ]\\n            }\\n          }\\n        },\\n        \\\"required\\\": [\\n          \\\"header\\\",\\n          \\\"tables\\\"\\n        ]\\n      }\\n    }\\n  },\\n  \\\"required\\\": [\\n    \\\"title\\\",\\n    \\\"body\\\"\\n  ]\\n}\\n\",\n      \"language\": \"json\",\n      \"name\": \"Schema\"\n    }\n  ]\n}\n[/block]\nEsse JSON irá definir que a transação será do tipo boleto balancete. O próximo (e último) passo será consumir o endpoint responsável pela definição de boleto (que é o [POST /v1/charge/:id/pay](https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay)) e este boleto sairá no padrão de boleto balancete. Veja um exemplo deste tipo de boleto <a href=\"https://files.readme.io/65999a8-Boleto-balancete_legenda.jpg\" target=\"_blank\">nesta imagem</a>.\n\n<br>\n<hr>\n\n<div class=\"distancia_top\"><a name=\"settlecharge\"><span class=\"put\">PUT</span></a><strong class=\"text-endpoint\">/v1/charge/:id/settle</strong></div>\n\nPermite marcar como pago (baixa manual) uma determinada transação.\n\nNa imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>PUT /v1/charge/:id/settle</code> que estão disponíveis para utilização:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/2962ab6-settleCharge.png\",\n        \"settleCharge.png\",\n        1387,\n        176,\n        \"#f0f0f0\"\n      ]\n    }\n  ]\n}\n[/block]\nA seguir, um JSON simples que pode ser utilizado para marcar como pago uma transação criada em Playground. Além disso, é possível observar a saída prevista disponível para este método. Lembrando que também é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"Parâmetro de entrada: informe a \\\"charge_id\\\" da transação desejada\",\n      \"language\": \"text\",\n      \"name\": \"Dados de Entrada\"\n    },\n    {\n      \"code\": \"{\\n  \\\"code\\\": 200 // retorno HTTP \\\"200\\\" informando que o pedido foi bem sucedido\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Dados de Saída\"\n    }\n  ]\n}\n[/block]","excerpt":"Você está em: *\"Ambiente de Testes > Playground: Transações\"*","slug":"playground-transacoes","type":"basic","title":"Playground: Transações"}

Playground: Transações

Você está em: *"Ambiente de Testes > Playground: Transações"*

Para acessar o ambiente de testes você precisa de uma conta Gerencianet. <a href="https://gerencianet.com.br/#abrirconta" title="Cadastro ao nosso sistema, seja nosso cliente" target="_blank">Crie sua conta</a>. O Playground (também chamado de "sandbox") é um ambiente de desenvolvimento/testes no qual o integrador, independente da operação a ser realizada, pode utilizar para conhecer o mecanismo e o fluxo de pagamento em um ambiente 100% de teste e descomplicado. [Conheça mais](https://dev.gerencianet.com.br/docs/playground) sobre o Playground oferecido pela Gerencianet. A criação de uma cobrança (transação) via integração com a API da Gerencianet possui duas etapas: 1. Primeiro [gera a transação (ou cobrança)](https://dev.gerencianet.com.br/docs/playground-transacoes#charge) através do endpoint <code>POST /v1/charge</code>; 2. Por fim, [associa a transação gerada à uma forma de pagamento](https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay) através do endpoint <code>POST /v1/charge/:id/pay</code>. Após utilizar o endpoint <code>POST /v1/charge</code>, a transação já estará criada e, a partir deste momento, será possível associá-la à forma de pagamento como boleto bancário ou cartão de crédito. A seguir, confira todos os endpoints presentes em nosso Playground, dentro da modalidade de "Transações": <ul><li><div class=""><span class="post">POST</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge">/v1/charge</a> <em>(criar nova transação)</em></div></li><li><div class=""><span class="get">GET</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id">/v1/charge/:id</a> <em>(retornar informações de transação existente)</em></div></li><li><div class=""><span class="put">PUT</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_metadata">/v1/charge/:id/metadata</a> <em>(incluir "notification_url" e "custom_id" em uma transação existente)</em></div></li><li><div class=""><span class="put">PUT</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_billet">/v1/charge/:id/billet</a> <em>(alterar data de vencimento de uma transação existente)</em></div></li><li><div class=""><span class="put">PUT</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_cancel">/v1/charge/:id/cancel</a> <em>(cancelar uma transação existente)</em></div></li><li><div class=""><span class="post">POST</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay">/v1/charge/:id/pay</a> <em>(associa método de pagamento à uma transação já criada)</em></div></li><li><div class=""><span class="post">POST</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_billet_resend">/v1/charge/:id/billet/resend</a> <em>(reenvio do boleto bancário para o email desejado)</em></div></li><li><div class=""><span class="post">POST</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_history">/v1/charge/:id/history</a> <em>(acrescentar descrição ao histórico de uma transação)</em></div></li><li><div class=""><span class="post">POST</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_link">/v1/charge/:id/link</a> <em>(retorna um link para uma tela de pagamento da Gerencianet)</em></div></li><li><div class=""><span class="put">PUT</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#put_charge_id_link">/v1/charge/:id/link</a> <em>(alterar determinados parâmetros/atributos de um link de pagamento existente)</em></div></li><li><div class=""><span class="post">POST</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#balance">/v1/charge/:id/balance-sheet</a> <em>(definir que a transação será do tipo boleto balancete)</em></div></li><li><div class=""><span class="put">PUT</span> <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#settlecharge">/v1/charge/:id/settle</a> <em>(marcar como pago [baixa manual] uma determinada transação)</em></div></li></ul> <br> <hr> <div class="distancia_top"><a name="charge"><span class="post">POST</span></a><strong class="text-endpoint">/v1/charge</strong></div> Permite criar uma nova transação; retorna um código identificador da transação denominado <code>charge_id</code>. Somente após gerar a transação é que ela será associada a um método de pagamento, podendo ser boleto bancário ou cartão de crédito. Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/50475e5-post-v1-charge.png", "post-v1-charge.png", 1386, 366, "#eff0f0" ] } ] } [/block] A seguir, um JSON simples que pode ser utilizado para criar uma cobrança (ainda sem forma de pagamento definida) no Playground. Neste caso, este JSON define que a cobrança deve possuir um produto de nome <code>Meu Produto</code>, valor <code>8900</code> (o que equivale a R$ 89,00) e quantidade <code>1</code>. Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórias e opcionais) disponíveis para este método: [block:code] { "codes": [ { "code": "{\n \"items\": [\n {\n \"name\": \"Meu Produto\",\n \"value\": 8900,\n \"amount\": 1\n }\n ]\n}", "language": "json", "name": "Dados de Entrada" }, { "code": "{\n \"code\": 200, // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n \"data\": {\n \"charge_id\": numero_charge_id, // número da ID referente à transação gerada\n \"status\": \"new\", // cobrança gerada, aguardando definição da forma de pagamento\n \"total\": 8900, // valor total da transação (em centavos, sendo 8900 = R$89,00)\n \"custom_id\": null, // identificador próprio opcional\n \"created_at\": \"2016-06-24 14:58:46\" // data e hora da criação da transação\n }\n}", "language": "json", "name": "Dados de Saída" }, { "code": "{\n \"id\": \"/Charge\",\n \"type\": \"object\",\n \"properties\": {\n \"items\": {\n \"id\": \"/MarketplaceItem\",\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255,\n \"pattern\": \"^[^<>]+$\"\n },\n \"value\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"amount\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"exclusiveMinimum\": false\n },\n \"marketplace\": {\n \"type\": \"object\",\n \"properties\": {\n \"repasses\": {\n \"id\": \"/Repass\",\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"payee_code\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-fA-F0-9]{32}$\"\n },\n \"percentage\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 10000\n }\n },\n \"required\": [\n \"payee_code\",\n \"percentage\"\n ]\n }\n }\n },\n \"required\": [\n \"repasses\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ]\n }\n },\n \"shippings\": {\n \"id\": \"/Shipping\",\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"maxLength\": 255\n },\n \"value\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"payee_code\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-fA-F0-9]{32}$\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ]\n }\n },\n \"metadata\": {\n \"type\": \"object\",\n \"properties\": {\n \"custom_id\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"maxLength\": \"255\"\n },\n \"notification_url\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"pattern\": \"^https?://.+\",\n \"maxLength\": \"255\"\n }\n }\n }\n },\n \"required\": [\n \"items\"\n ]\n}", "language": "json", "name": "Schema" } ] } [/block] <br> <hr> <div class="distancia_top"><a name="charge_id"><span class="get">GET</span></a><strong class="text-endpoint">/v1/charge/:id</strong></div> Permite retornar informações de uma transação existente. Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>GET /v1/charge/:id</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/2187fb4-get-charge-id.png", "get-charge-id.png", 1388, 122, "#f1f1f1" ] } ] } [/block] A seguir, um JSON simples que pode ser utilizado para buscar informações de alguma transação no Playground. Ao informar o parâmetro de entrada <code>charge_id</code>, serão retornadas informações da transação existente, conforme pode observar a saída prevista disponível para este método: [block:code] { "codes": [ { "code": "Parâmetro de entrada: informe a \"charge_id\" da transação desejada", "language": "text", "name": "Dados de Entrada" }, { "code": "{\n \"code\": 200, // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n \"data\": {\n \"charge_id\": 1234567, // número da ID referente à transação gerada\n \"total\": 8900, // valor total da transação (em centavos, sendo 8900 = R$89,00)\n \"status\": \"waiting\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (o termo \"waiting\" equivale a \"aguardando\")\n \"custom_id\": null, // identificador próprio opcional\n \"created_at\": \"2018-10-31 10:18:21\", // data e hora da criação da transação\n \"notification_url\": null,\n \"items\": [\n {\n \"name\": \"Meu Produto\", // nome de seu item, produto ou serviço\n \"value\": 8900, // valor, em centavos. Por exemplo: 8900 (equivale a R$ 89,00)\n \"amount\": 1 // quantidade do item ou produto\n }\n ],\n \"history\": [\n {\n \"message\": \"Cobrança criada\",\n \"created_at\": \"2018-10-31 10:18:21\"\n },\n {\n \"message\": \"Pagamento via boleto aguardando confirmação\",\n \"created_at\": \"2018-10-31 10:19:05\"\n } \n ],\n \"customer\": {\n \"name\": \"Gorbadoc Oldbuck\",\n \"cpf\": \"94271564656\",\n \"email\": \"email_do_cliente@servidor.com.br\",\n \"phone_number\": \"5144916523\",\n \"address\": {\n \"street\": \"Avenida Juscelino Kubitschek\",\n \"number\": \"909\",\n \"complement\": null,\n \"neighborhood\": \"Bauxita\",\n \"city\": \"Ouro Preto\",\n \"state\": \"MG\",\n \"zipcode\": \"35400000\"\n }\n },\n \"payment\": {\n \"method\": \"banking_billet\", // forma de pagamento da cobrança (banking_billet equivale a boleto bancário)\n \"created_at\": \"2018-10-31 10:19:05\",\n \"message\": \"Usando o atributo message, este conteúdo é exibido no campo OBSERVAÇÃO da cobrança emitida via API\\n ... e também no campo OBSERVAÇÃO DO VENDEDOR nos e-mails de cobrança enviados ao cliente\\n É possível utilizar até 4 linhas de conteúdo, com no máximo 100 caracteres por linha\\n Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê\",\n \"banking_billet\": {\n \"barcode\": \"00000.00000 00000.000000 00000.000000 0 00000000000000\",\n \"link\": \"link_https_para_acesso_ao_boleto\", // link da transação gerada\n \"pdf\": {\n \"charge\": \"link_https_do_pdf_da_cobranca\" // link do PDF da cobrança\n },\n \"expire_at\": \"2018-12-30\", // data de vencimento da cobrança no seguinte formato: 2018-12-30 (ou seja, equivale a 30/12/2018)\n \"configurations\": {\n \"interest\": 33, // valor cobrado de juros por dia após a data de vencimento (neste caso, 33 equivale a 0,033%)\n \"fine\": 200 // valor cobrado de multa após o vencimento (neste caso, 200 equivale a 2%)\n }\n }\n }\n }\n}", "language": "json", "name": "Dados de Saída" } ] } [/block] <br> <hr> <div class="distancia_top"><a name="charge_id_metadata"><span class="put">PUT</span></a><strong class="text-endpoint">/v1/charge/:id/metadata</strong></div> Permite incluir informações como <code>notification_url</code> e <code>custom_id</code> à uma transação existente. Este endpoint é de **extrema importância** para atualizar sua URL de notificação atrelada às transações ou modificar o <code>custom_id</code> previamente associado às suas transações. - <code>notification_url</code>: é um endereço de sua URL válida que receberá as notificações de mudanças de status das transações - <code>custom_id</code>: permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la caso você possua uma identificação específica e queira mantê-la. **Casos de uso deste endpoint:** - Integrador alterou o IP do servidor que estava associado na URL de notificação das transações; - Integrador atualizou a URL de notificação para as novas transações que forem criadas (<code>createCharge</code>), mas precisa atualizar também nas transações anteriores (<code>updateChargeMetadata</code>) que foram geradas e que estão associadas com a URL incorreta/desatualizada; - Foi instalado SSL (https) no servidor do cliente e mesmo que o cliente defina uma regra de redirecionamento 301 ou 302, será preciso definir a nova URL nas transações que estão com a URL "antiga"; - Integrador gerou cobranças e não havia informado a URL de notificação ao enviar a requisição de criação da transação; - Modificar ou acrescentar uma informação junto ao atributo <code>custom_id</code> associado às transações geradas previamente; - Dentre outros possíveis cenários. Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>PUT /v1/charge/:id/metadata</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/42dd9a9-put-charge-metadata.png", "put-charge-metadata.png", 1386, 395, "#eeefef" ] } ] } [/block] A seguir, um JSON simples que pode ser utilizado para alterar a URL de notificação e/ou custom_id de uma transação já existente no Playground. Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórios e opcionais) disponíveis para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada: [block:code] { "codes": [ { "code": "{\n \"notification_url\": null,\n \"custom_id\": null\n}", "language": "json", "name": "Dados de Entrada" }, { "code": "{\n \"code\": 200 // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n}", "language": "json", "name": "Dados de Saída" }, { "code": "{\n \"type\": \"object\",\n \"minProperties\": 1,\n \"id\": \"/ChargeMetadataUpdate\",\n \"properties\": {\n \"notification_url\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"pattern\": \"^https?://.+\",\n \"minLength\": \"1\",\n \"maxLength\": \"255\"\n },\n \"custom_id\": {\n \"type\": \"string\",\n \"minLength\": \"1\",\n \"maxLength\": \"255\",\n \"pattern\": \"^[a-zA-Z0-9\\\\_\\\\-\\\\s]+$\"\n }\n }\n}", "language": "json", "name": "Schema" } ] } [/block] <br> <hr> <div class="distancia_top"><a name="charge_id_billet"><span class="put">PUT</span></a><strong class="text-endpoint">/v1/charge/:id/billet</strong></div> Permite efetuar a alteração da data de vencimento de uma transação em que a forma de pagamento é boleto bancário (<code>banking_billet</code>) e que ainda não foi paga. O formato da data de vencimento deve seguir o seguinte padrão: <code>YYYY-MM-DD</code>. Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>PUT /v1/charge/:id/billet</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/bde9517-put-charge-id-billet.png", "put-charge-id-billet.png", 1385, 393, "#eff0f0" ] } ] } [/block] A seguir, um JSON simples que pode ser utilizado para alterar a data de vencimento de um boleto no Playground - no caso, a nova de vencimento do boleto será dia <code>2018-12-30</code> (equivale a 30/12/2018). Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórios e opcionais) disponíveis para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada: [block:code] { "codes": [ { "code": "{\n \"expire_at\": \"2018-12-30\"\n}", "language": "json", "name": "Dados de Entrada" }, { "code": "{\n \"code\": 200 // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n}", "language": "json", "name": "Dados de Saída" }, { "code": "{\n \"id\": \"/ChargeBilletUpdate\",\n \"type\": \"object\",\n \"properties\": {\n \"expire_at\": {\n \"type\": \"string\",\n \"pattern\": \"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\"\n }\n },\n \"required\": [\n \"expire_at\"\n ]\n}", "language": "json", "name": "Schema" } ] } [/block] <br> <hr> <div class="distancia_top"><a name="charge_id_cancel"><span class="put">PUT</span></a><strong class="text-endpoint">/v1/charge/:id/cancel</strong></div> Através deste *endpoint* é possível cancelar uma transação criada. Somente transações com status <code>new</code>, <code>waiting</code>, <code>unpaid</code> ou <code>link</code> podem ser canceladas. A partir do momento que uma transação é cancelada, existe apenas uma condição para que esse status seja alterado novamente: se o cliente imprimir o boleto antes do integrador cancelar a transação, ele poderá realizar o pagamento normalmente em uma agência bancária. Neste caso, o integrador e o pagador recebem a confirmação do pagamento como já acontece normalmente e o status da cobrança é alterado de <code>canceled</code> (cancelado) para <code>paid</code> (pago). Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>PUT /v1/charge/:id/cancel</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/ffdc8c0-put-charge-id-cancel.png", "put-charge-id-cancel.png", 1385, 123, "#f1f1f1" ] } ] } [/block] A seguir, um JSON simples que pode ser utilizado para cancelar uma transação criada em Playground. Além disso, é possível observar a saída prevista disponível para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada: [block:code] { "codes": [ { "code": "Parâmetro de entrada: informe a \"charge_id\" da transação desejada", "language": "text", "name": "Dados de Entrada" }, { "code": "{\n \"code\": 200 // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n}", "language": "json", "name": "Dados de Saída" } ] } [/block] <br> <hr> <div class="distancia_top"><a name="charge_id_pay"><span class="post">POST</span></a><strong class="text-endpoint">/v1/charge/:id/pay</strong></div> Permite associar um método de pagamento à uma transação já criada. Após gerar uma transação através do endpoint <code>POST /v1/charge</code>, esta fica classificada com o status de <code>new</code> (novo), ou seja, uma nova transação foi gerada, porém, nenhum método de pagamento foi atribuído a ela. Para definir uma forma de pagamento para a transação criada, o integrador pode escolher entre <code>banking_billet</code> ou <code>credit_card</code> (boleto bancário e cartão de crédito, respectivamente). - *Boleto Bancário*: a transação passa por um ciclo de alteração de status, sendo criada inicialmente com o status de <code>new</code> (novo) e, ao definir a forma de pagamento, o status passará a ser <code>waiting</code> (aguardando). Isso significa que o boleto foi gerado com sucesso, mas ainda não foi pago. Ao escolher boleto, a resposta do consumo já terá a linha digitável, código de barras e link para acesso ao boleto; - *Cartão de Crédito*: a principal diferença para o boleto está relacionada à necessidade de utilização de um código denominado “payment_token”. No Playground, você pode gerar seu token clicando no botão *“Gerar payment token”* e colá-lo dentro do atributo <code>payment_token</code>. Já no ambiente de produção, a obtenção do "payment_token" se dá pelo consumo de um código Javascript disponível em sua conta. Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge/:id/pay</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/dc9a82b-post-charge-id-pay.png", "post-charge-id-pay.png", 1387, 434, "#edefef" ] } ] } [/block] A seguir, um JSON simples que pode ser utilizado para associar um método de pagamento à uma transação já criada em Playground - o integrador pode escolher entre <code>banking_billet</code> ou <code>credit_card</code>. Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórios e opcionais) disponíveis para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada: [block:code] { "codes": [ { "code": "{\n \"payment\": {\n \"credit_card\": {\n \"customer\": {\n \"name\": \"Gorbadoc Oldbuck\",\n \"cpf\": \"94271564656\",\n \"email\": \"email_do_cliente@servidor.com.br\",\n \"birth\": \"1990-08-29\",\n \"phone_number\": \"5144916523\"\n },\n \"installments\": 1,\n \"payment_token\": \"\",\n \"billing_address\": {\n \"street\": \"Avenida Juscelino Kubitschek\",\n \"number\": \"909\",\n \"neighborhood\": \"Bauxita\",\n \"zipcode\": \"35400000\",\n \"city\": \"Ouro Preto\",\n \"complement\": \"\",\n \"state\": \"MG\"\n }\n }\n }\n}", "language": "json", "name": "Dados de Entrada (cartão)" }, { "code": "{\n \"payment\": {\n \"banking_billet\": {\n \"customer\": {\n \"name\": \"Gorbadoc Oldbuck\",\n \"cpf\": \"94271564656\",\n \"email\": \"email_do_cliente@servidor.com.br\",\n \"phone_number\": \"5144916523\",\n \"address\": {\n \"street\": \"Avenida Juscelino Kubitschek\",\n \"number\": \"909\",\n \"neighborhood\": \"Bauxita\",\n \"zipcode\": \"35400000\",\n \"city\": \"Ouro Preto\",\n \"complement\": \"\",\n \"state\": \"MG\"\n }\n },\n \"expire_at\": \"2018-12-30\",\n \"configurations\": {\n \"fine\": 200,\n \"interest\": 33\n },\n \"message\": \"Usando o atributo message, este conteúdo é exibido no campo OBSERVAÇÃO da cobrança emitida via API \\n ... e também no campo OBSERVAÇÃO DO VENDEDOR nos e-mails de cobrança enviados ao cliente \\n É possível utilizar até 4 linhas de conteúdo, com no máximo 100 caracteres por linha \\n Essa mensagem poderá ser vista nos e-mails relacionados à cobrança, no boleto ou carnê\"\n }\n }\n}", "language": "json", "name": "Dados de Entrada (boleto)" }, { "code": "{\n \"code\": 200, // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n \"data\": {\n \"installments\": 1, // número de parcelas em que o pagamento deve ser dividido\n \"installment_value\": 8900, // valor da parcela. Por exemplo: 8900 (equivale a R$ 89,00)\n \"charge_id\": numero_charge_id, // número da ID referente à transação gerada\n \"status\": \"waiting\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (\"waiting\" equivale a \"aguardando\")\n \"total\": 8900, // valor, em centavos. Por exemplo: 8900 (equivale a R$ 89,00)\n \"payment\": \"credit_card\" // forma de pagamento associada à esta transação (\"credit_card\" equivale a \"cartão de crédito\")\n }\n}", "language": "json", "name": "Dados de Saída (cartão)" }, { "code": "{\n \"code\": 200, // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n \"data\": {\n \"barcode\": \"00000.00000 00000.000000 00000.000000 0 00000000000000\", // linha digitável do boleto\n \"link\": \"link_https_para_acesso_ao_boleto\", // link do boleto gerado\n \"pdf\": {\n \"charge\": \"link_https_do_pdf_da_cobranca\" // link do PDF da cobrança\n }, \n \"expire_at\": \"2018-12-30\", // data de vencimento do boleto no seguinte formato: 2018-12-30 (ou seja, equivale a 30/12/2018)\n \"charge_id\": numero_charge_id, // número da ID referente à transação gerada\n \"status\": \"waiting\", // forma de pagamento selecionada, aguardando a confirmação do pagamento (\"waiting\" equivale a \"aguardando\")\n \"total\": 8900, // valor, em centavos. Por exemplo: 8900 (equivale a R$ 89,00)\n \"payment\": \"banking_billet\" // forma de pagamento associada à esta transação (\"banking_billet\" equivale a \"boleto bancário\")\n }\n}", "language": "json", "name": "Dados de Saída (boleto)" }, { "code": "{\n \"type\": \"object\",\n \"id\": \"/Pay\",\n \"properties\": {\n \"payment\": {\n \"type\": \"object\",\n \"maxProperties\": 1,\n \"minProperties\": 1,\n \"properties\": {\n \"banking_billet\": {\n \"type\": \"object\",\n \"id\": \"/Billet\",\n \"properties\": {\n \"customer\": {\n \"type\": \"object\",\n \"id\": \"/BasicCustomer\",\n \"properties\": {\n \"name\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 1,\n \"maxLength\": 255,\n \"pattern\": \"^[ ]*(.+[ ]+)+.+[ ]*$\"\n },\n \"cpf\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 11,\n \"maxLength\": 11\n },\n \"email\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"maxLength\": 255,\n \"pattern\": \"^[A-Za-z0-9_\\\\-]+(?:[.][A-Za-z0-9_\\\\-]+)*@[A-Za-z0-9_]+(?:[-.][A-Za-z0-9_]+)*\\\\.[A-Za-z0-9_]+$\"\n },\n \"phone_number\": {\n \"type\": \"string\",\n \"pattern\": \"^[1-9]{2}9?[0-9]{8}$\"\n },\n \"birth\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"pattern\": \"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\"\n },\n \"address\": {\n \"type\": \"object\",\n \"id\": \"/AddressOptional\",\n \"properties\": {\n \"street\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 0,\n \"maxLength\": 200\n },\n \"number\": {\n \"type\": [\n \"string\",\n \"null\",\n \"integer\"\n ],\n \"minLength\": 0,\n \"maxLength\": 55\n },\n \"neighborhood\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 0,\n \"maxLength\": 255\n },\n \"zipcode\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"pattern\": \"^[0-9]{8}$\"\n },\n \"city\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 0,\n \"maxLength\": 50\n },\n \"complement\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 0,\n \"maxLength\": 45\n },\n \"state\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"pattern\": \"^(?:A[CLPM]|BA|CE|DF|ES|GO|M[ATSG]|P[RBAEI]|R[JNSOR]|S[CEP]|TO)$\"\n }\n }\n },\n \"juridical_person\": {\n \"type\": \"object\",\n \"id\": \"/JuridicalPerson\",\n \"properties\": {\n \"corporate_name\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"cnpj\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 14,\n \"maxLength\": 14\n }\n },\n \"required\": [\n \"corporate_name\",\n \"cnpj\"\n ]\n }\n },\n \"required\": [\n \"phone_number\"\n ]\n },\n \"expire_at\": {\n \"type\": \"string\",\n \"pattern\": \"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\"\n },\n \"discount\": {\n \"type\": \"object\",\n \"id\": \"/Discount\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"percentage\",\n \"currency\"\n ]\n },\n \"value\": {\n \"type\": \"integer\",\n \"minimum\": 1\n }\n },\n \"required\": [\n \"type\",\n \"value\"\n ]\n },\n \"conditional_discount\": {\n \"id\": \"/ConditionalDiscount\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"percentage\",\n \"currency\"\n ]\n },\n \"value\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"until_date\": {\n \"type\": \"string\",\n \"pattern\": \"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\"\n }\n },\n \"required\": [\n \"type\",\n \"value\",\n \"until_date\"\n ]\n },\n \"instructions\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 4,\n \"items\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 90\n }\n },\n \"configurations\": {\n \"type\": \"object\",\n \"id\": \"/Configurations\",\n \"minProperties\": 1,\n \"properties\": {\n \"fine\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 1000\n },\n \"interest\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 330\n }\n }\n },\n \"message\": {\n \"type\": \"string\",\n \"pattern\": \"^[^\\n]{0,100}(\\n[^\\n]{0,100}){0,3}$\"\n }\n },\n \"required\": [\n \"customer\",\n \"expire_at\"\n ]\n },\n \"credit_card\": {\n \"type\": \"object\",\n \"id\": \"/CreditCard\",\n \"properties\": {\n \"customer\": {\n \"type\": \"object\",\n \"id\": \"/FullCustomer\",\n \"properties\": {\n \"name\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 1,\n \"maxLength\": 255,\n \"pattern\": \"^[ ]*(.+[ ]+)+.+[ ]*$\"\n },\n \"cpf\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 11,\n \"maxLength\": 11\n },\n \"email\": {\n \"type\": \"string\",\n \"maxLength\": 255,\n \"pattern\": \"^[A-Za-z0-9_\\\\-]+(?:[.][A-Za-z0-9_\\\\-]+)*@[A-Za-z0-9_]+(?:[-.][A-Za-z0-9_]+)*\\\\.[A-Za-z0-9_]+$\"\n },\n \"phone_number\": {\n \"type\": \"string\",\n \"pattern\": \"^[1-9]{2}9?[0-9]{8}$\"\n },\n \"birth\": {\n \"type\": \"string\",\n \"pattern\": \"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\"\n },\n \"address\": {\n \"type\": \"object\",\n \"id\": \"/Address\",\n \"properties\": {\n \"street\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 200\n },\n \"number\": {\n \"type\": [\n \"string\",\n \"integer\"\n ],\n \"minLength\": 1,\n \"maxLength\": 55\n },\n \"neighborhood\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"zipcode\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]{8}$\"\n },\n \"city\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 50\n },\n \"complement\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 0,\n \"maxLength\": 45\n },\n \"state\": {\n \"type\": \"string\",\n \"pattern\": \"^(?:A[CLPM]|BA|CE|DF|ES|GO|M[ATSG]|P[RBAEI]|R[JNSOR]|S[CEP]|TO)$\"\n }\n },\n \"required\": [\n \"street\",\n \"number\",\n \"neighborhood\",\n \"zipcode\",\n \"city\",\n \"state\"\n ]\n },\n \"juridical_person\": {\n \"type\": \"object\",\n \"id\": \"/JuridicalPerson\",\n \"properties\": {\n \"corporate_name\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"cnpj\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 14,\n \"maxLength\": 14\n }\n },\n \"required\": [\n \"corporate_name\",\n \"cnpj\"\n ]\n }\n },\n \"required\": [\n \"email\",\n \"phone_number\",\n \"birth\"\n ]\n },\n \"installments\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 12,\n \"exclusiveMinimum\": false,\n \"exclusiveMaximum\": false\n },\n \"discount\": {\n \"type\": \"object\",\n \"id\": \"/Discount\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"percentage\",\n \"currency\"\n ]\n },\n \"value\": {\n \"type\": \"integer\",\n \"minimum\": 1\n }\n },\n \"required\": [\n \"type\",\n \"value\"\n ]\n },\n \"billing_address\": {\n \"type\": \"object\",\n \"id\": \"/Address\",\n \"properties\": {\n \"street\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 200\n },\n \"number\": {\n \"type\": [\n \"string\",\n \"integer\"\n ],\n \"minLength\": 1,\n \"maxLength\": 55\n },\n \"neighborhood\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 255\n },\n \"zipcode\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9]{8}$\"\n },\n \"city\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 50\n },\n \"complement\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"minLength\": 0,\n \"maxLength\": 45\n },\n \"state\": {\n \"type\": \"string\",\n \"pattern\": \"^(?:A[CLPM]|BA|CE|DF|ES|GO|M[ATSG]|P[RBAEI]|R[JNSOR]|S[CEP]|TO)$\"\n }\n },\n \"required\": [\n \"street\",\n \"number\",\n \"neighborhood\",\n \"zipcode\",\n \"city\",\n \"state\"\n ]\n },\n \"payment_token\": {\n \"type\": \"string\",\n \"pattern\": \"^[a-fA-F0-9]{40}$\"\n },\n \"message\": {\n \"type\": \"string\",\n \"pattern\": \"^[^\\n]{0,100}(\\n[^\\n]{0,100}){0,3}$\"\n }\n },\n \"required\": [\n \"customer\",\n \"billing_address\",\n \"payment_token\"\n ]\n }\n }\n }\n },\n \"required\": [\n \"payment\"\n ]\n}", "language": "json", "name": "Schema" } ] } [/block] No caso da aba <em>"Dados de Entrada (boleto)"</em>, está sendo gerado um boleto com vencimento para 30/12/2018, estamos usando uma mensagem para informar algo ao cliente, e se o boleto for pago após o vencimento, será cobrado 2% de multa e 0,033% de juros por dia. No caso da aba <em>"Dados de Entrada (cartão)"</em>, o <code>payment_token</code> é o token de pagamento necessário quando o pagamento é via cartão. No Playground, ele é obtido apenas clicando no botão <em>"Gerar payment token"</em> e colando dentro do atributo <code>payment_token</code>. Caso estivesse em ambiente de produção, seria obtido através de código Javascript disponível para cada conta Gerencianet - para boleto o "payment_token" não é necessário. [block:callout] { "type": "success", "title": "INFORMAÇÃO", "body": "Ao usar o atributo <code>message</code>, deve-se utilizar o operador <code>\\n</code> para efetuar a \"quebra\" da linha. No código que disponibilizamos já incluímos este operador." } [/block] <br> <hr> <div class="distancia_top"><a name="charge_id_billet_resend"><span class="post">POST</span></a><strong class="text-endpoint">/v1/charge/:id/billet/resend</strong></div> Permite o reenvio do boleto bancário para o e-mail desejado. Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge/:id/billet/resend</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/a082275-post-charge-billet-resend.png", "post-charge-billet-resend.png", 1386, 396, "#eff0f0" ] } ] } [/block] A seguir, um JSON simples que pode ser utilizado para reenviar por e-mail um boleto bancário criado em Playground - neste caso, irá definir que o endereço "email_do_cliente@servidor.com.br" receberá o boleto bancário que foi criado em ambiente de testes. Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórios e opcionais) disponíveis para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada: [block:code] { "codes": [ { "code": "{\n \"email\": \"email_do_cliente@servidor.com.br\"\n}", "language": "json", "name": "Dados de Entrada" }, { "code": "{\n \"code\": 200 // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n}", "language": "json", "name": "Dados de Saída" }, { "code": "{\n \"id\": \"/ChargeBilletResend\",\n \"type\": \"object\",\n \"properties\": {\n \"email\": {\n \"type\": \"string\",\n \"maxLength\": 255,\n \"pattern\": \"^[A-Za-z0-9_\\\\-]+(?:[.][A-Za-z0-9_\\\\-]+)*@[A-Za-z0-9_]+(?:[-.][A-Za-z0-9_]+)*\\\\.[A-Za-z0-9_]+$\"\n }\n },\n \"required\": [\n \"email\"\n ]\n}", "language": "json", "name": "Schema" } ] } [/block] <br> <hr> <div class="distancia_top"><a name="charge_id_history"><span class="post">POST</span></a><strong class="text-endpoint">/v1/charge/:id/history</strong></div> O histórico de uma transação representa todas as ações que ocorreram com esta transação até o presente momento. É possível adicionar mensagens personalizadas a este histórico utilizando o endpoint <code>/v1/charge/:id/history</code>. As mensagens personalizadas não influenciam na transação em si, apenas em seu histórico. Para tal, você deve informar a <code>charge_id</code> da transação desejada. Essa descrição deve possuir no mínimo um caractere e no máximo 255 caracteres. Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge/:id/history</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/8b7a75b-post-charge-history.png", "post-charge-history.png", 1386, 397, "#eff0f0" ] } ] } [/block] A seguir, um JSON simples que pode ser utilizado para acrescentar uma descrição a uma determinada transação no Playground - neste caso, irá acrescentar a descrição "Camisa Polo tamanho G cor azul". Além disso, é possível observar a saída prevista e o schema de validação com todos os atributos (obrigatórios e opcionais) disponíveis para este método. Lembrando que é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada: [block:code] { "codes": [ { "code": "{\n \"description\": \"Camisa Polo tamanho G cor azul\"\n}", "language": "json", "name": "Dados de Entrada" }, { "code": "{\n \"code\": 200 // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n}", "language": "json", "name": "Dados de Saída" }, { "code": "{\n \"type\": \"object\",\n \"id\": \"/ChargeHistory\",\n \"properties\": {\n \"description\": {\n \"type\": \"string\",\n \"maxLength\": \"255\",\n \"minLength\": \"1\"\n }\n },\n \"required\": [\n \"description\"\n ]\n}", "language": "json", "name": "Schema" } ] } [/block] <br> <hr> <div class="distancia_top"><a name="charge_id_link"><span class="post">POST</span></a><strong class="text-endpoint">/v1/charge/:id/link</strong></div> Permite retornar um link para uma tela de pagamento da Gerencianet. Em outras palavras, o integrador gera uma cobrança e, em seguida, ao invés de definir o pagamento via boleto bancário ou cartão de crédito, o integrador pode solicitar um link escolhendo inclusive se a tela de pagamento deve aceitar boleto, cartão ou ambos. Além disso, o integrador define um vencimento para a tela de pagamento, ou seja, após a data definida pelo integrador, o link da tela de pagamento não terá mais validade. O integrador pode definir o desconto para boleto ou cartão, e pode ainda informar se deseja coletar ou não o endereço do cliente. Essa tela de pagamento não é uma definição de pagamento como boleto ou cartão, mas sim um intermediário. É útil quando o integrador não deseja implementar sua própria tela de pagamento, por exemplo. Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge/:id/link</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/5719d04-post-charge-link.png", "post-charge-link.png", 1385, 396, "#eeefef" ], "caption": "" } ] } [/block] A seguir, um JSON simples que pode ser utilizado para retornar um link para uma tela de pagamento da Gerencianet. Para utilização, você deve previamente criar uma transação e, no campo <code>id</code>, fornecer o <code>charge_id</code> da transação que foi criada anteriormente. Assim, será retornado um link que permitirá ao cliente ir para uma tela de pagamento previamente configurada pelo integrador. Além disso, é possível observar a saída prevista e o schema de validação com todas as tags (obrigatórias e opcionais) disponíveis para este método. Lembrando que também é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada e criada previamente: [block:code] { "codes": [ { "code": "{\n \"message\": \"Escreva aqui, se quiser, uma mensagem ao seu cliente, limite de 80 caracteres\",\n \"expire_at\": \"2018-12-20\",\n \"request_delivery_address\": false,\n \"payment_method\": \"all\"\n}", "language": "json", "name": "Dados de Entrada" }, { "code": "{\n \"code\": 200, // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n \"data\": {\n \"charge_id\": 1234567, // número da ID referente à transação gerada\n \"status\": \"link\", // indica que trata-se de uma cobrança que está associada a um link de pagamento\n \"total\": 5900, // valor total da transação (em centavos, sendo 5900 = R$59,00)\n \"custom_id\": null, // identificador próprio opcional\n \"payment_url\": \"https://pagamento.gerencianet.com.br/8fb4790a-bd16-4268-8118-9cf17ba4a4aa\", // link https do link de pagamento\n \"payment_method\": \"all\", // formas de pagamento permitidas (all = cartão e boleto)\n \"conditional_discount_date\": null, // se usado, refere-se a data máxima que o desconto condicional será concedido\n \"request_delivery_address\": false, // solicitar endereço de entrega do comprador?\n \"message\": \"Escreva aqui, se quiser, uma mensagem ao seu cliente, limite de 80 caracteres\", // mensagem para o pagador com até 80 caracteres\n \"expire_at\": \"2018-12-20\", // data de vencimento da tela de pagamento e do próprio boleto\n \"created_at\": \"2018-10-31 11:14:11\" // data e hora da criação do link\n }\n}", "language": "json", "name": "Dados de Saída" }, { "code": "{\n \"id\": \"/ChargeLink\",\n \"type\": \"object\",\n \"properties\": {\n \"billet_discount\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 99999999\n },\n \"card_discount\": {\n \"type\": \"integer\",\n \"minimum\": 1,\n \"maximum\": 99999999\n },\n \"conditional_discount\": {\n \"id\": \"/ConditionalDiscount\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"percentage\",\n \"currency\"\n ]\n },\n \"value\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"until_date\": {\n \"type\": \"string\",\n \"pattern\": \"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\"\n }\n },\n \"required\": [\n \"type\",\n \"value\",\n \"until_date\"\n ]\n },\n \"message\": {\n \"type\": \"string\",\n \"pattern\": \"^[^\\n]{0,100}(\\n[^\\n]{0,100}){0,3}$\"\n },\n \"expire_at\": {\n \"type\": \"string\",\n \"pattern\": \"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\"\n },\n \"request_delivery_address\": {\n \"type\": \"boolean\"\n },\n \"payment_method\": {\n \"enum\": [\n \"banking_billet\",\n \"credit_card\",\n \"all\"\n ]\n }\n },\n \"required\": [\n \"request_delivery_address\",\n \"expire_at\",\n \"payment_method\"\n ]\n}", "language": "json", "name": "Schema" } ] } [/block] Esse JSON retornará um link que dará acesso a uma tela de pagamento. Note que esse link da tela de pagamento terá validade até 20/12/2018, não estamos solicitando o endereço de entrega de nosso cliente e a forma de pagamento permitida é boleto e cartão (que também poderia ter utilizado <code>banking_billet</code> para permitir só pagamento via boleto ou <code>credit_card</code> para somente cartão). Existem outras possibilidades, como por exemplo, concessão de desconto de acordo com a forma de pagamento, bastaria usar os atributos <code>billet_discount</code> - veja na aba "Schema" todos os atributos possíveis de serem utilizados. <br> <hr> <div class="distancia_top"><a name="put_charge_id_link"><span class="put">PUT</span></a><strong class="text-endpoint">/v1/charge/:id/link</strong></div> Permite atualizar (alterar) determinados parâmetros/atributos de um link de pagamento criado através do <code>POST /v1/charge/:id/link</code>, desde que não tenha ocorrido a confirmação do pagamento. Algumas informações que são passíveis de serem atualizadas: forma de pagamento, inserção de desconto e de mensagem ao cliente, data de vencimento do link de pagamento e mudança de solicitação (ou não) do endereço de entrega do comprador. Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>PUT /v1/charge/:id/link</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/08b9e87-PUT_charge-id-link.png", "PUT_charge-id-link.png", 1387, 397, "#eff0f0" ] } ] } [/block] A seguir, um JSON simples que pode ser utilizado para atualizar (alterar) determinados parâmetros/atributos de um link de pagamento criado através do <code>POST /v1/charge/:id/link</code>, desde que não tenha ocorrido a confirmação do pagamento. Além disso, é possível observar a saída prevista e o schema de validação com todas as tags (obrigatórias e opcionais) disponíveis para este método. Lembrando que também é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada: [block:code] { "codes": [ { "code": "{\n \"expire_at\": \"2018-12-30\",\n \"request_delivery_address\": false,\n \"payment_method\": \"all\"\n}", "language": "json", "name": "Dados de Entrada" }, { "code": "{\n \"code\": 200 // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n}", "language": "json", "name": "Dados de Saída" }, { "code": "{\n \"id\": \"/ChargeLinkUpdate\",\n \"type\": \"object\",\n \"properties\": {\n \"billet_discount\": {\n \"type\": [\n \"integer\",\n \"null\"\n ],\n \"minimum\": 1,\n \"maximum\": 99999999\n },\n \"card_discount\": {\n \"type\": [\n \"integer\",\n \"null\"\n ],\n \"minimum\": 1,\n \"maximum\": 99999999\n },\n \"conditional_discount\": {\n \"oneOf\": [\n {\n \"type\": [\n \"null\"\n ]\n },\n {\n \"id\": \"/ConditionalDiscount\",\n \"type\": \"object\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"percentage\",\n \"currency\"\n ]\n },\n \"value\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"until_date\": {\n \"type\": \"string\",\n \"pattern\": \"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\"\n }\n },\n \"required\": [\n \"type\",\n \"value\",\n \"until_date\"\n ]\n }\n ]\n },\n \"message\": {\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"pattern\": \"^[^\\n]{1,100}(\\n[^\\n]{0,100}){0,3}$\"\n },\n \"expire_at\": {\n \"type\": \"string\",\n \"pattern\": \"^[12][0-9]{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$\"\n },\n \"request_delivery_address\": {\n \"type\": \"boolean\"\n },\n \"payment_method\": {\n \"enum\": [\n \"banking_billet\",\n \"credit_card\",\n \"all\"\n ]\n }\n },\n \"required\": [\n \"expire_at\"\n ]\n}", "language": "json", "name": "Schema" } ] } [/block] <br> <hr> <div class="distancia_top"><a name="balance"><span class="post">POST</span></a><strong class="text-endpoint">/v1/charge/:id/balance-sheet</strong></div> Você pode definir que a transação será do tipo boleto balancete. Este é um modelo muito utilizado por condomínios e contabilidades. Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>POST /v1/charge/:id/balance-sheet</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/da2744d-balance.png", "balance.png", 1387, 393, "#edefef" ] } ] } [/block] A seguir, um JSON simples que pode ser utilizado para definir que uma transação será do tipo boleto balancete. Para utilização, você deve previamente criar uma transação e, no campo <code>id</code>, fornecer o <code>charge_id</code> da transação que foi criada anteriormente. Assim, será definido que tal transação será do tipo boleto balancete, e o próximo (e último) passo será consumir o endpoint responsável pela definição de boleto (que é o [POST /v1/charge/:id/pay](https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay)). Além disso, é possível observar a saída prevista e o schema de validação com todas as tags (obrigatórias e opcionais) disponíveis para este método. Lembrando que também é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada e criada previamente: [block:code] { "codes": [ { "code": "{\n \"title\": \"Balancete Demonstrativo\",\n \"body\": [\n {\n \"header\": \"Demonstrativo de Consumo\",\n \"tables\": [\n {\n \"rows\": [\n [\n {\n \"align\": \"left\",\n \"color\": \"#000000\",\n \"style\": \"bold\",\n \"text\": \"Exemplo de despesa\",\n \"colspan\": 2\n },\n {\n \"align\": \"left\",\n \"color\": \"#000000\",\n \"style\": \"bold\",\n \"text\": \"Total lançado\",\n \"colspan\": 2\n }\n ],\n [\n {\n \"align\": \"left\",\n \"color\": \"#000000\",\n \"style\": \"normal\",\n \"text\": \"Instalação\",\n \"colspan\": 2\n },\n {\n \"align\": \"left\",\n \"color\": \"#000000\",\n \"style\": \"normal\",\n \"text\": \"R$ 100,00\",\n \"colspan\": 2\n }\n ]\n ]\n }\n ]\n },\n {\n \"header\": \"Balancete Geral\",\n \"tables\": [\n {\n \"rows\": [\n [\n {\n \"align\": \"left\",\n \"color\": \"#000000\",\n \"style\": \"normal\",\n \"text\": \"Confira na documentação da Gerencianet todas as configurações possíveis de um boleto balancete.\",\n \"colspan\": 4\n }\n ]\n ]\n }\n ]\n }\n ]\n}", "language": "json", "name": "Dados de Entrada" }, { "code": "{\n \"code\": 200\n}", "language": "json", "name": "Dados de Saída" }, { "code": "{\n \"id\": \"/BalanceSheet\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 3,\n \"maxLength\": 255\n },\n \"body\": {\n \"type\": \"array\",\n \"maxItems\": 2,\n \"minItems\": 1,\n \"uniqueItems\": false,\n \"additionalItems\": false,\n \"items\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"maxProperties\": 2,\n \"additionalProperties\": false,\n \"properties\": {\n \"header\": {\n \"type\": \"string\",\n \"minLength\": 3,\n \"maxLength\": 255\n },\n \"tables\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"additionalItems\": false,\n \"items\": {\n \"type\": \"object\",\n \"minProperties\": 1,\n \"additionalProperties\": false,\n \"properties\": {\n \"rows\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"uniqueItems\": false,\n \"additionalItems\": false,\n \"items\": {\n \"type\": \"array\",\n \"maxItems\": 4,\n \"minItems\": 1,\n \"additionalItems\": false,\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {\n \"align\": {\n \"type\": \"string\",\n \"enum\": [\n \"left\",\n \"center\",\n \"right\"\n ]\n },\n \"color\": {\n \"type\": \"string\",\n \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n },\n \"style\": {\n \"type\": \"string\",\n \"enum\": [\n \"normal\",\n \"italic\",\n \"bold\",\n \"underline\",\n \"line-through\"\n ]\n },\n \"text\": {\n \"type\": \"string\",\n \"maxLength\": 255\n },\n \"colspan\": {\n \"type\": \"integer\",\n \"enum\": [\n 1,\n 2,\n 3,\n 4\n ]\n }\n },\n \"required\": [\n \"align\",\n \"color\",\n \"style\",\n \"text\",\n \"colspan\"\n ]\n }\n }\n }\n },\n \"required\": [\n \"rows\"\n ]\n }\n }\n },\n \"required\": [\n \"header\",\n \"tables\"\n ]\n }\n }\n },\n \"required\": [\n \"title\",\n \"body\"\n ]\n}\n", "language": "json", "name": "Schema" } ] } [/block] Esse JSON irá definir que a transação será do tipo boleto balancete. O próximo (e último) passo será consumir o endpoint responsável pela definição de boleto (que é o [POST /v1/charge/:id/pay](https://dev.gerencianet.com.br/docs/playground-transacoes#charge_id_pay)) e este boleto sairá no padrão de boleto balancete. Veja um exemplo deste tipo de boleto <a href="https://files.readme.io/65999a8-Boleto-balancete_legenda.jpg" target="_blank">nesta imagem</a>. <br> <hr> <div class="distancia_top"><a name="settlecharge"><span class="put">PUT</span></a><strong class="text-endpoint">/v1/charge/:id/settle</strong></div> Permite marcar como pago (baixa manual) uma determinada transação. Na imagem a seguir, é possível observar a tela de nosso ambiente de testes no qual constam os recursos atrelados ao método <code>PUT /v1/charge/:id/settle</code> que estão disponíveis para utilização: [block:image] { "images": [ { "image": [ "https://files.readme.io/2962ab6-settleCharge.png", "settleCharge.png", 1387, 176, "#f0f0f0" ] } ] } [/block] A seguir, um JSON simples que pode ser utilizado para marcar como pago uma transação criada em Playground. Além disso, é possível observar a saída prevista disponível para este método. Lembrando que também é preciso informar o parâmetro de entrada <code>charge_id</code> da transação desejada: [block:code] { "codes": [ { "code": "Parâmetro de entrada: informe a \"charge_id\" da transação desejada", "language": "text", "name": "Dados de Entrada" }, { "code": "{\n \"code\": 200 // retorno HTTP \"200\" informando que o pedido foi bem sucedido\n}", "language": "json", "name": "Dados de Saída" } ] } [/block]