-
Notifications
You must be signed in to change notification settings - Fork 0
/
12b93229.897b0f41.js
1 lines (1 loc) · 52.4 KB
/
12b93229.897b0f41.js
1
(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{108:function(e,a,n){"use strict";n.r(a),n.d(a,"frontMatter",(function(){return s})),n.d(a,"metadata",(function(){return l})),n.d(a,"Highlight",(function(){return d})),n.d(a,"rightToc",(function(){return b})),n.d(a,"default",(function(){return m}));var t=n(2),r=n(6),o=(n(0),n(229)),i=n(236),c=n(237),s={id:"CriandoLink",title:"Criando link de pagamento",hide_title:!0,sidebar_label:"Criando link de pagamento"},l={id:"LinkdePagamento/CriandoLink",isDocsHomePage:!1,title:"Criando link de pagamento",description:"Criando link de pagamento",source:"@site/docs\\LinkdePagamento\\CriarLink.md",permalink:"/docs/LinkdePagamento/CriandoLink",sidebar_label:"Criando link de pagamento",sidebar:"someSidebar",previous:{title:"Introdu\xe7\xe3o",permalink:"/docs/LinkdePagamento/Introducao"},next:{title:"Outros endpoints",permalink:"/docs/LinkdePagamento/EndpointsLink"}},d=function(e){var a=e.children;e.color;return Object(o.b)("span",{style:{borderRadius:"2px",color:"#009615",padding:"0.2rem"}},a)},b=[{value:"1. Crie a transa\xe7\xe3o",id:"1-crie-a-transa\xe7\xe3o",children:[]},{value:"2. Criando um link de pagamento",id:"2-criando-um-link-de-pagamento",children:[{value:"a) Atributos que podem ser utilizados para criar um link de pagamento:",id:"a-atributos-que-podem-ser-utilizados-para-criar-um-link-de-pagamento",children:[]},{value:"b) Estrutura hier\xe1rquica dos atributos do Schema que podem ser utilizados:",id:"b-estrutura-hier\xe1rquica-dos-atributos-do-schema-que-podem-ser-utilizados",children:[]},{value:"c) Personalizando sua tela de pagamento:",id:"c-personalizando-sua-tela-de-pagamento",children:[]},{value:"d) Testando em ambiente de testes (Playground):",id:"d-testando-em-ambiente-de-testes-playground",children:[]}]},{value:"3. Outros endpoints e m\xe9todos",id:"3-outros-endpoints-e-m\xe9todos",children:[]},{value:"4. V\xeddeo: Criando transa\xe7\xe3o via Playground (ambiente de testes/sandbox)",id:"4-v\xeddeo-criando-transa\xe7\xe3o-via-playground-ambiente-de-testessandbox",children:[]}],u={Highlight:d,rightToc:b};function m(e){var a=e.components,n=Object(r.a)(e,["components"]);return Object(o.b)("wrapper",Object(t.a)({},u,n,{components:a,mdxType:"MDXLayout"}),Object(o.b)("h1",{className:"titulo"},"Criando link de pagamento"),Object(o.b)("div",{className:"subtitulo"},Object(o.b)("p",null,"Saiba como criar um link para uma tela de pagamento da Gerencianet para seus clientes efetuarem os pagamentos. Para criar, \xe9 bem simples e requer apenas dois passos:"),Object(o.b)("ol",null,Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Primeiramente, ",Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"#1-crie-a-transa%C3%A7%C3%A3o"}),"crie a transa\xe7\xe3o"),", informando o item/produto/servi\xe7o, valor, quantidade, etc;")),Object(o.b)("li",{parentName:"ol"},Object(o.b)("p",{parentName:"li"},"Agora, para ",Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"#2-criando-um-link-de-pagamento"}),"criar o link de pagamento"),", informe o ",Object(o.b)("code",null,"charge_id")," da transa\xe7\xe3o criada anteriormente."))),Object(o.b)("p",null,"O restante desta p\xe1gina apresenta os procedimentos detalhados, mas voc\xea precisa instalar uma de nossas bibliotecas em seu servidor para executar os c\xf3digos de exemplo. ",Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"../Instalacao/introducao"}),"Certifique-se de que a SDK da Gerencianet foi instalada"),"."),Object(o.b)("br",null),Object(o.b)("hr",null),Object(o.b)("h2",{id:"1-crie-a-transa\xe7\xe3o"},"1. Crie a transa\xe7\xe3o"),Object(o.b)("p",null,'Primeiramente, precisamos gerar a transa\xe7\xe3o (tamb\xe9m chamada de "cobran\xe7a"). \xc9 neste momento que ser\xe1 informado o nome do item/produto/servi\xe7o, valor da transa\xe7\xe3o, quantidade, dentre outras informa\xe7\xf5es poss\xedveis.'),Object(o.b)("p",null,"Ap\xf3s cri\xe1-la, ser\xe1 retornado o ",Object(o.b)("code",null,"charge_id"),", que \xe9 o identificador \xfanico da transa\xe7\xe3o e que ser\xe1 utilizado para associar \xe0 forma de pagamento."),Object(o.b)("p",null,"Assim que essa transa\xe7\xe3o \xe9 criada, ela recebe o status ",Object(o.b)("code",null,"new"),", que significa que a cobran\xe7a foi gerada e est\xe1 aguardando defini\xe7\xe3o da forma de pagamento. Essa cobran\xe7a somente ter\xe1 seu status alterado quando o integrador definir sua forma de pagamento."),Object(o.b)("p",null,"Para gerar uma transa\xe7\xe3o, voc\xea deve enviar uma requisi\xe7\xe3o ",Object(o.b)("code",null,"POST")," para a rota ",Object(o.b)("code",null,"/v1/charge"),"."),Object(o.b)("p",null,"Caso queira, pode explorar e conhecer mais sobre este recurso ",Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"../AmbienteTestes/PlaygroundTransacoes#post-v1charge"}),"usando nosso Playground"),"."),Object(o.b)("p",null,"O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's dispon\xedveis:"),Object(o.b)(i.a,{defaultValue:"php",values:[{label:"PHP",value:"php"},{label:"Python",value:"python"},{label:"NodeJS",value:"js"},{label:".NET",value:"c"},{label:"Java",value:"java"},{label:"GO",value:"go"},{label:"Ruby",value:"ruby"},{label:"Delphi",value:"delphi"}],mdxType:"Tabs"},Object(o.b)(c.a,{value:"php",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-php"}),"<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n \n$item_1 = [\n 'name' => 'Item 1', // nome do item, produto ou servi\xe7o\n 'amount' => 1, // quantidade\n 'value' => 1000 // valor (1000 = R$ 10,00) (Obs: \xc9 poss\xedvel a cria\xe7\xe3o de itens com valores negativos. Por\xe9m, o valor total da fatura deve ser superior ao valor m\xednimo para gera\xe7\xe3o de transa\xe7\xf5es.)\n];\n \n$item_2 = [\n 'name' => 'Item 2', // nome do item, produto ou servi\xe7o\n 'amount' => 2, // quantidade\n 'value' => 2000 // valor (2000 = R$ 20,00)\n];\n \n$items = [\n $item_1,\n $item_2\n];\n\n// Exemplo para receber notifica\xe7\xf5es da altera\xe7\xe3o do status da transa\xe7\xe3o:\n// $metadata = ['notification_url'=>'sua_url_de_notificacao_.com.br']\n\n// Como enviar seu $body com o $metadata\n// $body = [\n// 'items' => $items,\n// 'metadata' => $metadata\n// ];\n\n$body = [\n 'items' => $items\n];\n\ntry {\n $api = new Gerencianet($options);\n $charge = $api->createCharge([], $body);\n \n print_r($charge);\n} catch (GerencianetException $e) {\n print_r($e->code);\n print_r($e->error);\n print_r($e->errorDescription);\n} catch (Exception $e) {\n print_r($e->getMessage());\n}\n"))),Object(o.b)(c.a,{value:"python",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-py"}),"from gerencianet import Gerencianet\n \noptions = {\n 'client_id': 'client_id',\n 'client_secret': 'client_secret',\n 'sandbox': True\n}\n \ngn = Gerencianet(options)\n \nbody = {\n 'items': [{\n 'name': \"Product 1\",\n 'value': 1000,\n 'amount': 2\n }],\n 'shippings': [{\n 'name': \"Default Shipping Cost\",\n 'value': 100\n }]\n}\n \nresponse = gn.create_charge(body=body)\nprint(response)\n"))),Object(o.b)(c.a,{value:"js",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-js"}),"'use strict';\n \nvar Gerencianet = require('gn-api-sdk-node');\n \nvar clientId = 'informe_seu_client_id';\nvar clientSecret = 'informe_seu_client_secret';\n \nvar options = {\n client_id: clientId,\n client_secret: clientSecret,\n sandbox: true\n}\n \nvar body = {\n items: [{\n name: 'Product 1',\n value: 1000,\n amount: 2\n }],\n shippings: [{\n name: 'Default Shipping Cost',\n value: 100\n }]\n}\n \nvar gerencianet = new Gerencianet(options);\n \ngerencianet\n .createCharge({}, body)\n .then(console.log)\n .catch(console.log)\n .done();\n"))),Object(o.b)(c.a,{value:"c",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-js"}),'dynamic endpoints = new Endpoints("client_id", "client_secret", true);\n \nvar body = new\n{\n items = new[] {\n new {\n name = "Product 1",\n value = 1000,\n amount = 2\n }\n },\n shippings = new[] {\n new {\n name = "Default Shipping Cost",\n value = 100\n }\n }\n};\n \nvar response = endpoints.CreateCharge(null, body);\nConsole.WriteLine(response);\n'))),Object(o.b)(c.a,{value:"java",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-java"}),'/* Para que a SDK Java funcione corretamente, \xe9 necess\xe1rio que a instancia\xe7\xe3o do m\xf3dulo seja feita atrav\xe9s da cria\xe7\xe3o de um objeto do tipo Gerencianet.\n\nSempre que quisermos chamar uma fun\xe7\xe3o da API, basta invocar o m\xe9todo call do objeto Gerencianet, passando como par\xe2metro o nome do m\xe9todo, os par\xe2metros da requisi\xe7\xe3o (sempre ser\xe1 um HashMap<String, String>), e o "body", que consiste nas propriedades a serem passadas como argumento na chamada de um fun\xe7\xe3o da SDK. O "body" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\n\nEsta estrutura \xe9 necess\xe1ria para representar o corpo da requisi\xe7\xe3o http que \xe9 enviada \xe0 um determinado endpoint. Se o "body" for um JSONObject, o retorno do m\xe9todo call ser\xe1 um JSONObject, se for um Map<String, Object>, o retorno do m\xe9todo call ser\xe1 um Map<String, Object>\n\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\ne Map<String, Object>\n\n\nJSONObject\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/json/CreateCharge.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/map/CreateCharge.java\n\n*/\n'))),Object(o.b)(c.a,{value:"go",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-go"}),'package main\n\nimport (\n "fmt"\n "github.com/gerencianet/gn-api-sdk-go/gerencianet"\n "github.com/gerencianet/gn-api-sdk-go/_examples/configs"\n)\n\nfunc main(){\n \n credentials := configs.Credentials\n gn := gerencianet.NewGerencianet(credentials)\n\n body := map[string]interface{} {\n "items": []map[string]interface{}{\n {\n "name": "Product 1",\n "value": 1000,\n "amount": 2,\n },\n },\n "shippings": []map[string]interface{} {\n {\n "name": "Default Shipping Cost",\n "value": 100,\n },\n },\n }\n\n res, err := gn.CreateCharge(body)\n\n if err != nil {\n fmt.Println(err)\n } else {\n fmt.Println(res)\n }\n}\n'))),Object(o.b)(c.a,{value:"ruby",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-js"}),'require "gerencianet"\nrequire_relative "./credentials"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nbody = {\n items: [{\n name: "Product 1",\n value: 1000,\n amount: 2\n }],\n shippings: [{\n name: "Default Shipping Cost",\n value: 100\n }]\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.create_charge(body: body)\n'))),Object(o.b)(c.a,{value:"delphi",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-json"}),"interface\nfunction CreateCharge: String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction CreateCharge: String;\nvar \nBody : String;\n\nbegin \n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize(); \n\n Body := \n '{'+\n '\"items\":'+\n '['+\n '{'+\n '\"name\":\"test article\",'+\n '\"value\":1900,'+\n '\"amount\":2'+\n '},'+\n '{'+\n '\"name\":\"test article 2\",'+\n '\"value\":3000,'+\n '\"amount\":1'+\n '}'+\n ']'+\n '}';\n\n Result := ExecuteGerenciaNetRequest( 'createCharge','','',Body );\nend;\n")))),Object(o.b)("br",null),Object(o.b)("h4",{id:"a-estrutura-hier\xe1rquica-dos-atributos-do-schema-que-podem-ser-utilizados"},"a) Estrutura hier\xe1rquica dos atributos do Schema que podem ser utilizados:"),Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{}),'"id": "/Charge"\n "items"\n "name"\n "value"\n "amount"\n "marketplace"\n "payee_code"\n "percentage"\n "shippings"\n "name"\n "value"\n "payee_code"\n "metadata"\n "custom_id"\n "notification_url"\n')),Object(o.b)("p",null,"Para verificar ",Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"../AmbienteTestes/PlaygroundTransacoes#post-v1charge"}),"mais detalhes"),", acesse aqui e explore em nosso Playground."),Object(o.b)("br",null),Object(o.b)("h4",{id:"b-atributos-que-podem-ser-utilizados-para-criar-uma-transa\xe7\xe3o"},"b) Atributos que podem ser utilizados para criar uma transa\xe7\xe3o:"),Object(o.b)("p",null,Object(o.b)("em",{parentName:"p"},"Objeto")," ",Object(o.b)("strong",{parentName:"p"},"items")),Object(o.b)("table",null,Object(o.b)("tbody",null,Object(o.b)("tr",null,Object(o.b)("th",null,"Atributo"),Object(o.b)("th",{align:"center"},"Descri\xe7\xe3o"),Object(o.b)("th",{align:"center"},"Obrigat\xf3rio"),Object(o.b)("th",{align:"center"},"Tipo")),Object(o.b)("tr",null,Object(o.b)("td",null,Object(o.b)("code",null,"items")),Object(o.b)("td",{align:"left"},"item que est\xe1 sendo vendido. Uma mesma transa\xe7\xe3o pode possuir ilimitados itens. ",Object(o.b)("br",null),Object(o.b)("br",null)," ",Object(o.b)("em",null,"Atributos de items:"),Object(o.b)("br",null),Object(o.b)("code",null,"name*"),"// Nome do item, produto ou servi\xe7o. ",Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"M\xednimo de 1 caractere e m\xe1ximo de 255 caracteres (String)."),Object(o.b)("br",null),Object(o.b)("br",null)," ",Object(o.b)("code",null,"value*"),"// Valor, em centavos. Ex: R$ 10,00 = 1000. ",Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"Integer"),Object(o.b)("br",null),Object(o.b)("br",null)," ",Object(o.b)("code",null,"amount"),"// Quantidade. ",Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"Integer")),Object(o.b)("td",{align:"center"},"Sim"),Object(o.b)("td",{align:"center"},"Array")),Object(o.b)("tr",null,Object(o.b)("td",null,Object(o.b)("code",null,"shippings")),Object(o.b)("td",{align:"left"},"Determina o(s) valor(es) de frete(s) de uma transa\xe7\xe3o. Uma mesma transa\xe7\xe3o pode possuir ilimitados valores de frete. ",Object(o.b)("br",null),Object(o.b)("br",null)," ",Object(o.b)("em",null,"Atributos de shippings:"),Object(o.b)("br",null),Object(o.b)("code",null,"name*"),"// R\xf3tulo do frete. ",Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"M\xe1ximo de 255 caracteres. String."),Object(o.b)("br",null),Object(o.b)("br",null)," ",Object(o.b)("code",null,"value*"),"// Valor do frete, em centavos (1990 equivale a R$19,90). ",Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"Integer")),Object(o.b)("td",{align:"center"},"N\xe3o"),Object(o.b)("td",{align:"center"},"Array")),Object(o.b)("tr",null,Object(o.b)("td",null,Object(o.b)("code",null,"metadata")),Object(o.b)("td",{align:"left"},"Define dados espec\xedficos da transa\xe7\xe3o",Object(o.b)("br",null),Object(o.b)("br",null)," ",Object(o.b)("em",null,"Atributos de metadata:"),Object(o.b)("br",null),Object(o.b)("code",null,"custom_id"),"// Permite associar uma transa\xe7\xe3o Gerencianet a uma ID espec\xedfica de seu sistema ou aplica\xe7\xe3o, permitindo identific\xe1-la caso voc\xea possua uma identifica\xe7\xe3o espec\xedfica e queira mant\xea-la. ",Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"M\xe1ximo de 255 caracteres. String/null."),Object(o.b)("br",null),Object(o.b)("br",null)," ",Object(o.b)("code",null,"notification_url"),"// Endere\xe7o de sua URL v\xe1lida que receber\xe1 as notifica\xe7\xf5es de mudan\xe7as de status das transa\xe7\xf5es. ",Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"M\xe1ximo de 255 caracteres. String/null.")),Object(o.b)("td",{align:"center"},"N\xe3o"),Object(o.b)("td",{align:"center"},"Object")))),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Os campos com * representam valores obrigat\xf3rios"),"\nAgora que a transa\xe7\xe3o j\xe1 foi criada e voc\xea j\xe1 possui o ",Object(o.b)("inlineCode",{parentName:"p"},"charge_id"),", \xe9 preciso associ\xe1-lo para obter o link de pagamento."),Object(o.b)("br",null),Object(o.b)("hr",null),Object(o.b)("h2",{id:"2-criando-um-link-de-pagamento"},"2. Criando um link de pagamento"),Object(o.b)("p",null,"Para criar um link de pagamento, voc\xea precisa ter ",Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"../AmbienteTestes/PlaygroundTransacoes#post-v1charge"}),"gerado a transa\xe7\xe3o"),", ou seja, que voc\xea j\xe1 tenha o identificador ",Object(o.b)("code",null,"charge_id")," da cobran\xe7a, pois ser\xe1 necess\xe1rio inform\xe1-lo."),Object(o.b)("p",null,"Em seguida, basta enviar uma requisi\xe7\xe3o ",Object(o.b)("code",null,"POST")," para a rota ",Object(o.b)("code",null,"/v1/charge/:id/link")," para gerar um link de pagamento, onde o ",Object(o.b)("code",null,":id")," corresponde ao ",Object(o.b)("code",null,"charge_id")," da transa\xe7\xe3o criada."),Object(o.b)("p",null,"Caso queira, pode explorar e conhecer mais sobre este recurso ",Object(o.b)("a",{href:"../PlaygroundTransacoes#post-v1chargeidlink",target:"_blank"},"usando nosso Playground"),"."),Object(o.b)("p",null,"O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's dispon\xedveis:"),Object(o.b)(i.a,{defaultValue:"php",values:[{label:"PHP",value:"php"},{label:"Python",value:"python"},{label:"NodeJS",value:"js"},{label:".NET",value:"c"},{label:"Java",value:"java"},{label:"GO",value:"go"},{label:"Ruby",value:"ruby"},{label:"Delphi",value:"delphi"}],mdxType:"Tabs"},Object(o.b)(c.a,{value:"php",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-php"}),"<?php\n\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n\nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n\n// $charge_id refere-se ao ID da transa\xe7\xe3o gerada anteriormente\n$params = [\n 'id' => $charge_id\n];\n\n$body = [\n 'billet_discount' => 5000, // desconto, em reais, caso o pagador escolha boleto (5000 equivale a R$ 50,00)\n 'card_discount' => 3000, // desconto, em reais, caso o pagador escolha cart\xe3o (3000 equivale a R$ 30,00)\n 'message' => '', // mensagem para o pagador com at\xe9 80 caracteres\n 'expire_at' => '2022-12-20', // data de vencimento da tela de pagamento e do pr\xf3prio boleto\n 'request_delivery_address' => false, // solicitar endere\xe7o de entrega do comprador?\n 'payment_method' => 'all' // formas de pagamento dispon\xedveis\n];\n\ntry {\n $api = new Gerencianet($options);\n $response = $api->linkCharge($params, $body);\n print_r($response);\n} catch (GerencianetException $e) {\n print_r($e->code);\n print_r($e->error);\n print_r($e->errorDescription);\n} catch (Exception $e) {\n print_r($e->getMessage());\n}\n"))),Object(o.b)(c.a,{value:"python",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-py"}),"# encoding: utf-8\n\nfrom gerencianet import Gerencianet\n\noptions = {\n 'client_id': 'client_id',\n 'client_secret': 'client_secret',\n 'sandbox': True\n}\n \ngn = Gerencianet(options)\n\nlink = {\n 'billet_discount': 0,\n 'card_discount': 0,\n 'message': '',\n 'expire_at': '2022-12-12',\n 'request_delivery_address': false,\n 'payment_method': 'all'\n}\n\n\nparams = {\n 'id': 'charge_id'\n}\n\nresponse = gn.link_charge(params=params, body=link)\nprint(response)\n"))),Object(o.b)(c.a,{value:"js",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-js"}),"'use strict';\n\nvar moment = require('moment');\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n client_id: credentials.client_id,\n client_secret: credentials.client_secret,\n sandbox: true\n};\n\nvar expireAt = moment()\n .add(3, 'days')\n .format('YYYY-MM-DD');\n\nvar params = {\n id: 0\n};\n\nvar body = {\n message: '',\n expire_at: expireAt,\n request_delivery_address: false,\n payment_method: 'all'\n};\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .chargeLink(params, body)\n .then(console.log)\n .catch(console.log)\n .done();\n"))),Object(o.b)(c.a,{value:"c",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-js"}),'using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class LinkCharge\n {\n public static void Execute()\n {\n dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\n\n var param = new\n {\n id = 1000\n };\n\n var body = new\n {\n billet_discount = 0,\n card_discount = 0,\n message = "",\n expire_at = DateTime.Now.AddDays(3).ToString("yyyy-MM-dd"),\n request_delivery_address = false,\n payment_method = "all"\n };\n\n try\n {\n var response = endpoints.LinkCharge(param, body);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}\n'))),Object(o.b)(c.a,{value:"java",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-java"}),'/* Para que a SDK Java funcione corretamente, \xe9 necess\xe1rio que a instancia\xe7\xe3o do m\xf3dulo seja feita atrav\xe9s da cria\xe7\xe3o de um objeto do tipo Gerencianet.\n\nSempre que quisermos chamar uma fun\xe7\xe3o da API, basta invocar o m\xe9todo call do objeto Gerencianet, passando como par\xe2metro o nome do m\xe9todo, os par\xe2metros da requisi\xe7\xe3o (sempre ser\xe1 um HashMap<String, String>), e o "body", que consiste nas propriedades a serem passadas como argumento na chamada de um fun\xe7\xe3o da SDK. O "body" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\n\nEsta estrutura \xe9 necess\xe1ria para representar o corpo da requisi\xe7\xe3o http que \xe9 enviada \xe0 um determinado endpoint. Se o "body" for um JSONObject, o retorno do m\xe9todo call ser\xe1 um JSONObject, se for um Map<String, Object>, o retorno do m\xe9todo call ser\xe1 um Map<String, Object>\n\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\ne Map<String, Object>\n\n\nJSONObject\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/json/Link.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/charge/map/Link.java\n\n*/\n'))),Object(o.b)(c.a,{value:"go",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-go"}),'// No c\xf3digo de exemplo de uso da SDK de Go, definimos as credenciais de acesso \xe0 API (Client_Id e Client_Secret) e o ambiente a ser usado (sandbox como \'true\' ou \'false\') dentro de um arquivo espec\xedfico (configs.go), que est\xe1 localizado no diret\xf3rio "_examples/configs". Essas credenciais s\xe3o exportadas atrav\xe9s da vari\xe1vel \'Credentials\'.\n\npackage main\n\nimport (\n "fmt"\n "github.com/gerencianet/gn-api-sdk-go/gerencianet"\n "github.com/gerencianet/gn-api-sdk-go/_examples/configs"\n)\n\nfunc main(){\n \n credentials := configs.Credentials\n gn := gerencianet.NewGerencianet(credentials)\n\n body := map[string]interface{} {\n "billet_discount": 1,\n "card_discount": 1,\n "message": "teste",\n "expire_at": "2022-12-12",\n "request_delivery_address": false,\n "payment_method": "all",\n }\n\n res, err := gn.ChargeLink(1, body) // no lugar do 1 coloque o charge_id certo\n\n if err != nil {\n fmt.Println(err)\n } else {\n fmt.Println(res)\n }\n}\n'))),Object(o.b)(c.a,{value:"ruby",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-js"}),'require "gerencianet"\nrequire "date"\nrequire_relative "./credentials"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nexpireAt = Date.today + 3\n\nparams = {\n id: 1000\n}\n\nbody = {\n billet_discount: 0,\n card_discount: 0,\n message: "",\n expire_at: expireAt.strftime,\n request_delivery_address: false,\n payment_method: "all"\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.link_charge(params: params, body: body)\n'))),Object(o.b)(c.a,{value:"delphi",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-json"}),"interface\nfunction LinkCharge(Id: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction LinkCharge(Id: String): String;\nvar\n Params: String;\n Body : String;\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize();\n\n Params := CreateRequestParams( [ 'id='+Id ] ).Text;\n Body := '{\"billet_discount\": 10,'+\n '\"card_discount\": 10,'+\n '\"message\": \"link test\",'+\n '\"expire_at\": \"2022-12-12\",'+\n '\"request_delivery_address\": false,'+\n '\"payment_method\": \"all\"}';\n Result := ExecuteGerenciaNetRequest( 'linkCharge',Params, '', Body );\nend;\n")))),Object(o.b)("br",null),Object(o.b)("div",{className:"admonition admonition-important alert alert--info"},Object(o.b)("div",Object(t.a)({parentName:"div"},{className:"admonition-heading"}),Object(o.b)("h5",{parentName:"div"},Object(o.b)("span",Object(t.a)({parentName:"h5"},{className:"admonition-icon"}),Object(o.b)("svg",Object(t.a)({parentName:"span"},{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"}),Object(o.b)("path",Object(t.a)({parentName:"svg"},{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})))),"IMPORTANTE")),Object(o.b)("div",Object(t.a)({parentName:"div"},{className:"admonition-content"}),Object(o.b)("p",{parentName:"div"},'Para se criar um "link de pagamento" (',Object(o.b)("inlineCode",{parentName:"p"},"chargeLink"),'), uma "transa\xe7\xe3o" (',Object(o.b)("inlineCode",{parentName:"p"},"createCharge"),") previamente criada dever\xe1 ser informada. Logo, se houver uma tentativa de pagamento e, por alguma raz\xe3o, n\xe3o houver sucesso na confirma\xe7\xe3o do pagamento (ex: cart\xe3o recusado, cliente deseja pagar por outra forma, etc), uma nova transa\xe7\xe3o dever\xe1 ser gerada e associada a um novo link de pagamento, pois a transa\xe7\xe3o anterior estar\xe1 com status de waiting ou unpaid, o que significa que devido a tentativa de pagamento, ela j\xe1 foi atrelada a um m\xe9todo de pagamento."))),Object(o.b)("br",null),Object(o.b)("h3",{id:"a-atributos-que-podem-ser-utilizados-para-criar-um-link-de-pagamento"},"a) Atributos que podem ser utilizados para criar um link de pagamento:"),Object(o.b)("table",null,Object(o.b)("tbody",null,Object(o.b)("tr",null,Object(o.b)("th",null,"Atributo"),Object(o.b)("th",{align:"center"},"Descri\xe7\xe3o"),Object(o.b)("th",{align:"center"},"Obrigat\xf3rio"),Object(o.b)("th",{align:"center"},"Tipo")),Object(o.b)("tr",null,Object(o.b)("td",null,Object(o.b)("code",null,"billet_discount")),Object(o.b)("td",{align:"left"},"Define um desconto, em reais, caso o pagador escolha boleto banc\xe1rio como forma de pagamento (informar valor inteiro, em reais).",Object(o.b)("br",null),Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"5000 equivale a R$ 50,00")),Object(o.b)("td",{align:"center"},"N\xe3o"),Object(o.b)("td",{align:"center"},"Integer")),Object(o.b)("tr",null,Object(o.b)("td",null,Object(o.b)("code",null,"card_discount")),Object(o.b)("td",{align:"left"},"Define um desconto, em reais, caso o pagador escolha cart\xe3o de cr\xe9dito como forma de pagamento (informar valor Inteiro).",Object(o.b)("br",null),Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"5000 equivale a R$ 50,00")),Object(o.b)("td",{align:"center"},"N\xe3o"),Object(o.b)("td",{align:"center"},"Integer")),Object(o.b)("tr",null,Object(o.b)("td",null,Object(o.b)("code",null,"conditional_discount")),Object(o.b)("td",{align:"left"},"Define desconto condicional que \xe9 v\xe1lido at\xe9 uma data espec\xedfica. Se o pagamento n\xe3o for efetuado at\xe9 aquela data, o desconto \xe9 invalidado.",Object(o.b)("br",null),Object(o.b)("br",null)," ",Object(o.b)("em",null,"Atributos de conditional_discount:"),Object(o.b)("br",null),Object(o.b)("br",null),Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"type*"),"// Tipo do desconto (String). Valores permitidos: ",Object(o.b)("br",null),Object(o.b)("code",null,"currency"),": o desconto ser\xe1 informado em centavos. ",Object(o.b)("br",null),Object(o.b)("code",null,"percentage"),": o desconto ser\xe1 informado em porcentagem.",Object(o.b)("br",null),Object(o.b)("br",null)," ",Object(o.b)("code",null,"cnpj*"),"// CNPJ da empresa. ",Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"Tamanho: 14 caracteres. String."),Object(o.b)("br",null),Object(o.b)("br",null),Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"value*"),"// Valor do desconto (Integer). Se o tipo do desconto for ",Object(o.b)("code",null,"currency")," , o valor desta tag dever\xe1 ser informada pelo integrador em centavos (ou seja, 500 equivale a R$ 5,00). Caso o tipo do desconto seja ",Object(o.b)("code",null,"percentage"),", o valor dever\xe1 ser multiplicado por 100 (ou seja, 1500 equivale a 15%). Exemplos: ",Object(o.b)("br",null),"1)",Object(o.b)("code",null,"currency"),"// deve ser informado em centavos, ou seja, se o desconto ser\xe1 de R$ 5,99, o integrador deve informar ",Object(o.b)("code",null,"599"),";",Object(o.b)("br",null)," 2)",Object(o.b)("code",null,"percentage")," // deve ser informado em centavos, ou seja, se o desconto \xe9 de 15%, o integrador deve informar ",Object(o.b)("code",null,"1500"),".",Object(o.b)("br",null),Object(o.b)("br",null),Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"until_date*"),", // Data m\xe1xima que o desconto ser\xe1 concedido. (String).",Object(o.b)("br",null),Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"Formato: YYYY-MM-DD")),Object(o.b)("td",{align:"center"},"N\xe3o"),Object(o.b)("td",{align:"center"},"Object")),Object(o.b)("tr",null,Object(o.b)("td",null,Object(o.b)("code",null,"message")),Object(o.b)("td",{align:"left"},"Define uma mensagem para o pagador. A mensagem aparece na tela de pagamento, nos e-mails relacionados \xe0 cobran\xe7a e no boleto, caso esta seja a forma de pagamento escolhida.",Object(o.b)("br",null),Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"M\xednimo de 3 e m\xe1ximo de 80 caracteres.")),Object(o.b)("td",{align:"center"},"N\xe3o"),Object(o.b)("td",{align:"center"},"String")),Object(o.b)("tr",null,Object(o.b)("td",null,Object(o.b)("code",null,"expire_at")),Object(o.b)("td",{align:"left"},"Define a data de vencimento da tela de pagamento e do pr\xf3prio boleto, caso esta seja a forma de pagamento escolhida.",Object(o.b)("br",null),Object(o.b)(d,{color:"#009615",mdxType:"Highlight"},"Formato: YYYY-MM-DD")),Object(o.b)("td",{align:"center"},"Sim"),Object(o.b)("td",{align:"center"},"String")),Object(o.b)("tr",null,Object(o.b)("td",null,Object(o.b)("code",null,"request_delivery_address")),Object(o.b)("td",{align:"left"},"Define se a tela de pagamento deve solicitar que o pagador informe um endere\xe7o de entrega. H\xe1 dois poss\xedveis valores: ",Object(o.b)("br",null),Object(o.b)("br",null)," ",Object(o.b)("ul",null,Object(o.b)("li",null,Object(o.b)("code",null,"true"),' (equivale a "sim")'),Object(o.b)("li",null,Object(o.b)("code",null,"false"),' (equivale a "n\xe3o")'))),Object(o.b)("td",{align:"center"},"Sim"),Object(o.b)("td",{align:"center"},"Boolean")),Object(o.b)("tr",null,Object(o.b)("td",null,Object(o.b)("code",null,"payment_method")),Object(o.b)("td",{align:"left"},"DDefine as formas de pagamento que devem ficar dispon\xedveis na tela para seu cliente escolher, podendo ser: ",Object(o.b)("br",null),Object(o.b)("br",null)," ",Object(o.b)("ul",null,Object(o.b)("li",null,Object(o.b)("code",null,"banking_billet")," (boleto banc\xe1rio)"),Object(o.b)("li",null,Object(o.b)("code",null,"credit_card")," (cart\xe3o de cr\xe9dito)"),Object(o.b)("li",null,Object(o.b)("code",null,"all")," (permitir pagamento via boleto e cart\xe3o)"))),Object(o.b)("td",{align:"center"},"Sim"),Object(o.b)("td",{align:"center"},"Object")))),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Os campos com * representam valores obrigat\xf3rios")),Object(o.b)("br",null),Object(o.b)("p",null,"Ao consumir o endpoint ",Object(o.b)("code",null,"/charge/:id/link"),", ou atrav\xe9s do Playground, a cobran\xe7a ganha o status ",Object(o.b)("code",null,"link"),". Desta forma, o integrador consegue distinguir cobran\xe7as comuns que ainda n\xe3o tiveram forma de pagamento definida (status ",Object(o.b)("code",null,"new"),") de cobran\xe7as que foram associadas a um link de pagamento (status ",Object(o.b)("code",null,"link"),")."),Object(o.b)("p",null,"O integrador s\xf3 precisa redirecionar o pagador para o link retornado na tag ",Object(o.b)("code",null,"payment_url")," e todo o resto ser\xe1 realizado na tela de pagamento da Gerencianet."),Object(o.b)("p",null,'A seguir, atrav\xe9s da aba "Dados de Entrada", um JSON simples que pode ser utilizado para criar o link de pagamento. Al\xe9m disso, \xe9 poss\xedvel observar a sa\xedda prevista e o schema de valida\xe7\xe3o com todas as tags (obrigat\xf3rias e opcionais) dispon\xedveis para este m\xe9todo. Lembrando que tamb\xe9m \xe9 preciso informar o par\xe2metro de entrada ',Object(o.b)("code",null,"charge_id")," da transa\xe7\xe3o criada:"),Object(o.b)(i.a,{defaultValue:"entrada",values:[{label:"Dados de Entrada",value:"entrada"},{label:"Dados de Sa\xedda",value:"saida"},{label:"Schema",value:"schema"}],mdxType:"Tabs"},Object(o.b)(c.a,{value:"entrada",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-json"}),'{\n "message": "Escreva aqui, se quiser, uma mensagem ao seu cliente, limite de 80 caracteres",\n "payment_method": "all",\n "expire_at": "2022-12-20",\n "request_delivery_address": false,\n "billet_discount": 5000,\n "card_discount": 3000\n}\n'))),Object(o.b)(c.a,{value:"saida",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-json"}),'{\n "code": 200,\n "data": {\n "charge_id": 148003,\n "status": "link",\n "total": 5990,\n "custom_id": null,\n "payment_url": "https://pagamento.gerencianet.com.br/:identificador",\n "payment_method": "all",\n "created_at": "2022-12-14 11:31:37"\n }\n}\n'))),Object(o.b)(c.a,{value:"schema",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-json"}),'{\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 "message": {\n "type": "string",\n "minLength": 3,\n "maxLength": 80\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')))),Object(o.b)("p",null,'Esse JSON, presente na aba "Dados de Entrada", define as seguintes informa\xe7\xf5es ao criar o link de pagamento:'),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("code",null,"message"),": define uma mensagem para o pagador. A mensagem aparece na tela de pagamento, nos e-mails relacionados \xe0 cobran\xe7a e no boleto, caso esta seja a forma de pagamento escolhida (m\xe1ximo de 80 caracteres);"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("code",null,"payment_method"),": define as formas de pagamento que devem ficar dispon\xedveis na tela (",Object(o.b)("code",null,"banking_billet"),", ",Object(o.b)("code",null,"credit_card")," ou ",Object(o.b)("code",null,"all"),");"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("code",null,"expire_at"),": define a data de vencimento da tela de pagamento e do pr\xf3prio boleto, caso esta seja a forma de pagamento escolhida;"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("code",null,"request_delivery_address"),": define se a tela de pagamento deve solicitar que o pagador informe um endere\xe7o de entrega (",Object(o.b)("code",null,"true")," ou ",Object(o.b)("code",null,"false"),");"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("code",null,"billet_discount"),": define um desconto, em centavos, caso o pagador escolha boleto banc\xe1rio como forma de pagamento (informar valor Inteiro);"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("code",null,"card_discount"),": define um desconto, em centavos, caso o pagador escolha cart\xe3o de cr\xe9dito como forma de pagamento (informar valor Inteiro).")),Object(o.b)("br",null),Object(o.b)("div",{className:"admonition admonition-note alert alert--secondary"},Object(o.b)("div",Object(t.a)({parentName:"div"},{className:"admonition-heading"}),Object(o.b)("h5",{parentName:"div"},Object(o.b)("span",Object(t.a)({parentName:"h5"},{className:"admonition-icon"}),Object(o.b)("svg",Object(t.a)({parentName:"span"},{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"}),Object(o.b)("path",Object(t.a)({parentName:"svg"},{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})))),"Rela\xe7\xe3o de todos os poss\xedveis status de uma transa\xe7\xe3o")),Object(o.b)("div",Object(t.a)({parentName:"div"},{className:"admonition-content"}),Object(o.b)("p",{parentName:"div"},'Todas as transa\xe7\xf5es possuem status, que representa a "situa\xe7\xe3o" dessa transa\xe7\xe3o. Portanto, \xe9 importante conhecer os poss\xedveis status na API para fornecer as devidas tratativas em seu sistema.'),Object(o.b)("p",{parentName:"div"},"Confira ",Object(o.b)("a",{href:"../VisaoGeral/statusTransacoes",target:"_blank",title:"Link Interno"},"neste link")," todos os detalhes dos poss\xedveis status das transa\xe7\xf5es."))),Object(o.b)("br",null),Object(o.b)("div",{className:"admonition admonition-important alert alert--info"},Object(o.b)("div",Object(t.a)({parentName:"div"},{className:"admonition-heading"}),Object(o.b)("h5",{parentName:"div"},Object(o.b)("span",Object(t.a)({parentName:"h5"},{className:"admonition-icon"}),Object(o.b)("svg",Object(t.a)({parentName:"span"},{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"}),Object(o.b)("path",Object(t.a)({parentName:"svg"},{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})))),"Callbacks (notifica\xe7\xf5es) das transa\xe7\xf5es da API para seu sistema")),Object(o.b)("div",Object(t.a)({parentName:"div"},{className:"admonition-content"}),Object(o.b)("p",{parentName:"div"},"As notifica\xe7\xf5es permitem que voc\xea seja informado quando uma transa\xe7\xe3o tiver seu status alterado. Dessa forma, voc\xea poder\xe1 identificar quando uma cobran\xe7a for paga, por exemplo."),Object(o.b)("p",{parentName:"div"},"Confira ",Object(o.b)("a",{href:"../Notificacoes/RecebendoNotificacoes",target:"_blank",title:"Link Interno"},"neste link")," todos os detalhes sobre como implementar a sua URL de notifica\xe7\xe3o."))),Object(o.b)("br",null),Object(o.b)("h3",{id:"b-estrutura-hier\xe1rquica-dos-atributos-do-schema-que-podem-ser-utilizados"},"b) Estrutura hier\xe1rquica dos atributos do Schema que podem ser utilizados:"),Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{}),'"id": "/ChargeLink"\n "billet_discount"\n "card_discount"\n "conditional_discount"\n "type"\n "percentage",\n "currency"\n "value"\n "until_date"\n "message"\n "expire_at"\n "request_delivery_address"\n "payment_method"\n "banking_billet"\n "credit_card"\n "all"\n')),Object(o.b)("p",null,"Para verificar mais detalhes, ",Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"../AmbienteTestes/PlaygroundTransacoes"}),"acesse aqui")," e explore em nosso Playground."),Object(o.b)("h3",{id:"c-personalizando-sua-tela-de-pagamento"},"c) Personalizando sua tela de pagamento:"),Object(o.b)("p",null,"\xc9 poss\xedvel definir uma cor e um logo para sua tela. Para isso, ",Object(o.b)("a",{href:"https://gerencianet.com.br/#login",target:"_blank",title:"Logue em sua conta Gerencianet"},"logue em sua conta Gerencianet")," e acesse o menu ",Object(o.b)("code",null,"Minha Conta > Tela de Pagamento"),"."),Object(o.b)("p",null,"Mesmo que prefira utilizar sua pr\xf3pria tela, as informa\xe7\xf5es definidas aqui ser\xe3o utilizadas tamb\xe9m nos e-mails disparados pela API. Ent\xe3o recomendamos que fa\xe7a a personaliza\xe7\xe3o de qualquer forma."),Object(o.b)("h3",{id:"d-testando-em-ambiente-de-testes-playground"},"d) Testando em ambiente de testes (Playground):"),Object(o.b)("p",null,"Para criar um link de pagamento, primeiro \xe9 necess\xe1rio criar uma cobran\xe7a na API, consumindo o endpoint ",Object(o.b)("code",null,"POST /v1/charge"),". Este endpoint retorna, dentre outras informa\xe7\xf5es, um identificador para a cobran\xe7a. O status inicial de uma cobran\xe7a \xe9 ",Object(o.b)("code",null,"new"),":"),Object(o.b)(i.a,{defaultValue:"entrada",values:[{label:"Entrada",value:"entrada"}],mdxType:"Tabs"},Object(o.b)(c.a,{value:"entrada",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-json"}),'{\n "message": "Escreva aqui, se quiser, uma mensagem ao seu cliente, limite de 80 caracteres",\n "payment_method": "all",\n "expire_at": "2022-12-20",\n "request_delivery_address": false,\n "billet_discount": 5000,\n "card_discount": 3000\n}\n')))),Object(o.b)("br",null),Object(o.b)("p",null,"Logo abaixo, os dados de sa\xedda previstos de acordo com a entrada realizada acima:"),Object(o.b)(i.a,{defaultValue:"saida",values:[{label:"Sa\xedda",value:"saida"}],mdxType:"Tabs"},Object(o.b)(c.a,{value:"saida",mdxType:"TabItem"},Object(o.b)("pre",null,Object(o.b)("code",Object(t.a)({parentName:"pre"},{className:"language-json"}),'{ \n "code":200,\n "data":{ \n "charge_id":121062,\n "status":"new",\n "total":1000,\n "custom_id":null,\n "created_at":"2022-10-31 10:43:57"\n }\n}\n')))),Object(o.b)("p",null,"Conhecendo o identificador da cobran\xe7a, basta consumir o endpoint POST /v1/charge/:id/link para gerar um link de pagamento."),Object(o.b)("br",null),Object(o.b)("hr",null),Object(o.b)("h2",{id:"3-outros-endpoints-e-m\xe9todos"},"3. Outros endpoints e m\xe9todos"),Object(o.b)("p",null,"Existem outros endpoints e m\xe9todos relacionados a link de pagamento que est\xe3o dispon\xedveis na API e podem ser explorados pelo integrador. Confira a rela\xe7\xe3o completa:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"../LinkdePagamento/EndpointsLink"}),"Alterar determinados par\xe2metros/atributos de um link de pagamento existente"))),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"../LinkdePagamento/EndpointsLink"}),"Cancelar determinada transa\xe7\xe3o"))),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"../LinkdePagamento/EndpointsLink"}),"Alterar URL de notifica\xe7\xe3o (notification_url) e/ou custom_id de transa\xe7\xe3o"))),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"../LinkdePagamento/EndpointsLink"}),"Acrescentar informa\xe7\xf5es ao hist\xf3rico da transa\xe7\xe3o"))),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},Object(o.b)("a",Object(t.a)({parentName:"p"},{href:"../LinkdePagamento/EndpointsLink"}),"Retornar informa\xe7\xf5es sobre transa\xe7\xe3o")))),Object(o.b)("br",null),Object(o.b)("hr",null),Object(o.b)("h2",{id:"4-v\xeddeo-criando-transa\xe7\xe3o-via-playground-ambiente-de-testessandbox"},"4. V\xeddeo: Criando transa\xe7\xe3o via Playground (ambiente de testes/sandbox)"),Object(o.b)("p",null,"Pensando em oferecer novos meios de transmitir informa\xe7\xf5es, a Gerencianet disponibiliza o v\xeddeo a seguir com o objetivo de explicar, de maneira clara e objetiva, como criar uma transa\xe7\xe3o via playground (sandbox)."),Object(o.b)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/ylqJUpHqwfY",frameborder:"0",allowfullscreen:!0}),Object(o.b)("br",null),Object(o.b)("br",null),Object(o.b)("div",{className:"admonition admonition-note alert alert--secondary"},Object(o.b)("div",Object(t.a)({parentName:"div"},{className:"admonition-heading"}),Object(o.b)("h5",{parentName:"div"},Object(o.b)("span",Object(t.a)({parentName:"h5"},{className:"admonition-icon"}),Object(o.b)("svg",Object(t.a)({parentName:"span"},{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"}),Object(o.b)("path",Object(t.a)({parentName:"svg"},{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})))),"Curso Completo de Integra\xe7\xe3o com a API Gerencianet")),Object(o.b)("div",Object(t.a)({parentName:"div"},{className:"admonition-content"}),Object(o.b)("p",{parentName:"div"},"Para acesso as demais aulas, de outros assuntos, acesse a p\xe1gina ",Object(o.b)("a",{href:"../CursosIntegracao/CursoOnline",title:"Link Interno"},"Curso Online de Integra\xe7\xf5es"),".")))))}m.isMDXComponent=!0},229:function(e,a,n){"use strict";n.d(a,"a",(function(){return b})),n.d(a,"b",(function(){return p}));var t=n(0),r=n.n(t);function o(e,a,n){return a in e?Object.defineProperty(e,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[a]=n,e}function i(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);a&&(t=t.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,t)}return n}function c(e){for(var a=1;a<arguments.length;a++){var n=null!=arguments[a]?arguments[a]:{};a%2?i(Object(n),!0).forEach((function(a){o(e,a,n[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))}))}return e}function s(e,a){if(null==e)return{};var n,t,r=function(e,a){if(null==e)return{};var n,t,r={},o=Object.keys(e);for(t=0;t<o.length;t++)n=o[t],a.indexOf(n)>=0||(r[n]=e[n]);return r}(e,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t<o.length;t++)n=o[t],a.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=r.a.createContext({}),d=function(e){var a=r.a.useContext(l),n=a;return e&&(n="function"==typeof e?e(a):c(c({},a),e)),n},b=function(e){var a=d(e.components);return r.a.createElement(l.Provider,{value:a},e.children)},u={inlineCode:"code",wrapper:function(e){var a=e.children;return r.a.createElement(r.a.Fragment,{},a)}},m=r.a.forwardRef((function(e,a){var n=e.components,t=e.mdxType,o=e.originalType,i=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),b=d(n),m=t,p=b["".concat(i,".").concat(m)]||b[m]||u[m]||o;return n?r.a.createElement(p,c(c({ref:a},l),{},{components:n})):r.a.createElement(p,c({ref:a},l))}));function p(e,a){var n=arguments,t=a&&a.mdxType;if("string"==typeof e||t){var o=n.length,i=new Array(o);i[0]=m;var c={};for(var s in a)hasOwnProperty.call(a,s)&&(c[s]=a[s]);c.originalType=e,c.mdxType="string"==typeof e?e:t,i[1]=c;for(var l=2;l<o;l++)i[l]=n[l];return r.a.createElement.apply(null,i)}return r.a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},233:function(e,a,n){"use strict";function t(e){var a,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(a=0;a<e.length;a++)e[a]&&(n=t(e[a]))&&(r&&(r+=" "),r+=n);else for(a in e)e[a]&&(r&&(r+=" "),r+=a);return r}a.a=function(){for(var e,a,n=0,r="";n<arguments.length;)(e=arguments[n++])&&(a=t(e))&&(r&&(r+=" "),r+=a);return r}},234:function(e,a,n){"use strict";var t=n(0);const r=Object(t.createContext)({tabGroupChoices:{},setTabGroupChoices:()=>{},isAnnouncementBarClosed:!1,closeAnnouncementBar:()=>{}});a.a=r},235:function(e,a,n){"use strict";var t=n(0),r=n(234);a.a=function(){return Object(t.useContext)(r.a)}},236:function(e,a,n){"use strict";var t=n(0),r=n.n(t),o=n(235),i=n(233),c=n(92),s=n.n(c);const l=37,d=39;a.a=function(e){const{block:a,children:n,defaultValue:c,values:b,groupId:u}=e,{tabGroupChoices:m,setTabGroupChoices:p}=Object(o.a)(),[g,j]=Object(t.useState)(c);if(null!=u){const e=m[u];null!=e&&e!==g&&b.some(a=>a.value===e)&&j(e)}const O=e=>{j(e),null!=u&&p(u,e)},v=[];return r.a.createElement("div",null,r.a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:Object(i.a)("tabs",{"tabs--block":a})},b.map(({value:e,label:a})=>r.a.createElement("li",{role:"tab",tabIndex:"0","aria-selected":g===e,className:Object(i.a)("tabs__item",s.a.tabItem,{"tabs__item--active":g===e}),key:e,ref:e=>v.push(e),onKeyDown:e=>((e,a,n)=>{switch(n.keyCode){case d:((e,a)=>{const n=e.indexOf(a)+1;e[n]?e[n].focus():e[0].focus()})(e,a);break;case l:((e,a)=>{const n=e.indexOf(a)-1;e[n]?e[n].focus():e[e.length-1].focus()})(e,a)}})(v,e.target,e),onFocus:()=>O(e),onClick:()=>O(e)},a))),r.a.createElement("div",{role:"tabpanel",className:"margin-vert--md"},t.Children.toArray(n).filter(e=>e.props.value===g)[0]))}},237:function(e,a,n){"use strict";var t=n(0),r=n.n(t);a.a=function(e){return r.a.createElement("div",null,e.children)}}}]);