{"_id":"578526795ae9c20e00bc2649","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"},"category":{"_id":"5783f8bf5cbce30e0074e2ba","version":"575aeffae12cf20e002f306f","__v":0,"project":"575aeffae12cf20e002f306c","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-07-11T19:51:27.671Z","from_sync":false,"order":8,"slug":"marketplace","title":"Marketplace"},"project":"575aeffae12cf20e002f306c","user":"57601a13af3e090e00108059","__v":9,"githubsync":"","parentDoc":null,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-07-12T17:18:49.728Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":1,"body":"O marketplace é uma ferramenta que permite a divisão de um valor recebido entre uma ou mais pessoas, conforme porcentagem definida no momento de criação da cobrança.\n\nAo gerar uma transação, é possível definir a divisão do valor entre várias contas Gerencianet. Utilizamos o termo \"Transação de Marketplace\" sempre que o pagamento de uma transação implicar em repasses parciais ou integrais a outras contas Gerencianet. Para emitir, é bem simples e requer apenas dois passos:\n\n1. [Crie a transação de marketplace](https://dev.gerencianet.com.br/docs/marketplace-recebimentos#section-1-criar-transa-o-de-marketplace), informando conta(s) de repasse, o item/produto/serviço, valor, quantidade, etc;\n\n2. [Associe à forma de pagamento desejada](https://dev.gerencianet.com.br/docs/marketplace-recebimentos#section-2-associar-forma-de-pagamento-via-boleto-ou-cart-o), informando o <code>charge_id</code> da transação e os dados do cliente pagador.\n\nO restante desta página apresenta os procedimentos detalhados, mas você precisa instalar uma de nossas bibliotecas em seu servidor para executar os códigos de exemplo. [Certifique-se de que a SDK da Gerencianet foi instalada](https://dev.gerencianet.com.br/docs#section-2-bibliotecas).\n\n<hr>\n\n# 1. Criar transação de marketplace\n\nTransações que tiverem pelo menos um item definido como item de marketplace ou valores de fretes destinados a contas diferentes da conta integradora, são consideradas \"Transações de Marketplace\". Com o marketplace da Gerencianet é possível que o valor pago pelo cliente final seja dividido automaticamente entre vendedor e fornecedor, sem que o processo tenha que ser realizado manualmente.\n\nPrimeiramente, precisamos gerar a transação. É neste momento que será informada a conta(s) Gerencianet de repasse, o nome do item/produto/serviço, valor da transação, quantidade, dentre outras informações possíveis.\n\nUma observação importante é que a taxa de intermediação da Gerencianet é cobrada proporcionalmente de todas as contas que receberem os repasses, portanto, todos os envolvidos necessitam de uma conta Gerencianet.\n\nO código mais abaixo exemplifica a utilização dos repasses, em que o valor total da transação é R$ <strong>50,00</strong>. De acordo com o código abaixo, o valor será dividido entre 3 (três) contas Gerencianet. A primeira conta ficará com <strong>25%</strong> do valor, a segunda conta ficará com <strong>15%</strong> do valor e a terceira, com o restante, que neste caso é <strong>60%</strong> do valor.\n\nO atributo <code>payee_code</code> refere-se ao \"identificador da conta\" Gerencianet e será utilizado para identificar as contas que receberão os repasses. Confira onde localizá-lo, de acordo com o layout de sua plataforma (<a href=\"https://s3-sa-east-1.amazonaws.com/pe85007/portal/wp-content/uploads/2017/10/payee_code_p.png\" target=\"_blank\">veja onde localizar</a>).\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?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$repass_1 = [\\n  'payee_code' => \\\"informe_payee_code_conta\\\", // identificador da conta Gerencianet (repasse 1)\\n  'percentage' => 2500 // porcentagem de repasse (2500 = 25%)\\n];\\n \\n$repass_2 = [\\n  'payee_code' => \\\"informe_payee_code_conta\\\", // identificador da conta Gerencianet (repasse 2)\\n  'percentage' => 1500 // porcentagem de repasse (1500 = 15%)\\n];\\n \\n$repasses = [\\n  $repass_1,\\n  $repass_2\\n];\\n \\n$item_1 = [\\n    'name' => 'Meu Produto', // nome do item, produto ou serviço\\n    'amount' => 1, // quantidade\\n    'value' => 5000, // valor (5000 = R$ 50,00)\\n    'marketplace'=>array('repasses'=>$repasses)\\n];\\n \\n$items =  [\\n    $item_1\\n];\\n \\n// Exemplo para receber notificações da alteração do status da transação.\\n// $metadata = ['notification_url'=>'sua_url_de_notificacao_.com.br']\\n// Outros detalhes em: https://dev.gerencianet.com.br/docs/notificacoes\\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      \"language\": \"php\"\n    },\n    {\n      \"code\": \"'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: 'Meu Produto',\\n    value: 5000,\\n    amount: 1,\\n    marketplace: {\\n      repasses: [{\\n        payee_code: \\\"informe_payee_code_conta\\\",\\n        percentage: 2500\\n      }, {\\n        payee_code: \\\"informe_payee_code_conta\\\",\\n        percentage: 1500\\n      }]\\n    }\\n  }]\\n}\\n \\nvar gerencianet = new Gerencianet(options);\\n \\ngerencianet\\n  .createCharge({}, body)\\n  .then(console.log)\\n  .catch(console.log)\\n  .done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n \\noptions = {\\n  client_id: \\\"informe_seu_client_id\\\",\\n  client_secret: \\\"informe_seu_client_secret\\\",\\n  sandbox: true\\n}\\n \\nbody = {\\n  items: [{\\n    name: \\\"Meu Produto\\\",\\n    value: 5000,\\n    amount: 1,\\n    marketplace: {\\n      repasses: [{\\n        payee_code: \\\"informe_payee_code_conta\\\",\\n        percentage: 2500\\n      }, {\\n        payee_code: \\\"informe_payee_code_conta\\\",\\n        percentage: 1500\\n      }]\\n    }\\n  }]\\n}\\n \\ngerencianet = Gerencianet.new(options)\\ngerencianet.create_charge(body: body)\",\n      \"language\": \"ruby\",\n      \"name\": \"Ruby\"\n    },\n    {\n      \"code\": \"from gerencianet import Gerencianet\\n \\noptions = {\\n    'client_id': 'informe_seu_client_id',\\n    'client_secret': 'informe_seu_client_secret',\\n    'sandbox': True\\n}\\n \\ngn = Gerencianet(options)\\n \\nbody = {\\n    'items': [{\\n        'name': \\\"Meu Produto\\\",\\n        'value': 5000,\\n        'amount': 1,\\n        'marketplace': {\\n            'repasses': [{\\n                'payee_code': \\\"informe_payee_code_conta\\\",\\n                'percentage': 2500\\n            },{\\n                'payee_code': \\\"informe_payee_code_conta\\\",\\n                'percentage': 1500\\n            }]\\n          }\\n    }],\\n    'metadata': {\\n        'notification_url': \\\"http://yourdomain.com\\\"\\n    }\\n}\\n \\ngn.create_charge(body=body)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"dynamic endpoints = new Endpoints(\\\"informe_seu_client_id\\\", \\\"informe_seu_client_secret\\\", true);\\n \\nvar body = new {\\n    items = new [] {\\n        new {\\n            name = \\\"Meu Produto\\\",\\n            value = 5000,\\n            amount = 1,\\n            marketplace = new {\\n                repasses = new [] {\\n                    new {\\n                        payee_code = \\\"informe_payee_code_conta\\\",\\n                        percentage = 2500\\n                    },\\n                    new {\\n                        payee_code = \\\"informe_payee_code_conta\\\",\\n                        percentage = 1500\\n                    }\\n                }\\n            }\\n        }\\n    },\\n    metadata = new {\\n        notification_url = \\\"http://yourdomain.com\\\"\\n    }\\n};\\n \\nvar response = endpoints.CreateCharge(null, body);\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será 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/marketplace/json/Marketplace.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/marketplace/map/Marketplace.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction CreateCharge: String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction CreateCharge: String;\\nvar \\nBody :  String;\\nRepasse1 : String;\\nRepasse2 : String;\\nRepasses : String;\\n\\nbegin  \\n  EnableService( 'GerenciaNet.dll' ); \\n  ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n  GerenciaNetAuthorize(); \\n\\n  Repasse1 :=\\n  '{'+\\n      '\\\"payee_code\\\": \\\"informe_o_payee_code_1\\\",'+\\n      '\\\"percentage\\\": 2500'+\\n  '},';\\n\\n  Repasse2 :=\\n  '{'+\\n      '\\\"payee_code\\\": \\\"informe_o_payee_code_2\\\",'+\\n      '\\\"percentage\\\": 1500'+\\n  '}';\\n\\n  Repasses := '{ \\\"repasses\\\": ['+ Repasse1 + Repasse2 +'] }';\\n\\n  Body :=   '{'+\\n    '\\\"items\\\":'+\\n      '['+\\n        '{'+\\n          '\\\"name\\\":\\\"Meu Produto\\\",'+\\n          '\\\"value\\\":9000,'+\\n          '\\\"amount\\\":1,'+\\n          '\\\"marketplace\\\":' + Repasses +\\n        '}'+\\n      ']'+\\n  '}';\\n\\n  Result := ExecuteGerenciaNetRequest( 'createCharge','','',Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"// No código de exemplo de uso da SDK de Go, definimos as credenciais de acesso à API (Client_Id e Client_Secret) e o ambiente a ser usado (sandbox como 'true' ou 'false') dentro de um arquivo específico (configs.go), que está localizado no diretório \\\"_examples/configs\\\". Essas credenciais são exportadas através da variável '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  repassOne := map[string]interface{}{\\n  \\t\\\"payee_code\\\": \\\"informe_payee_code_conta\\\", // identificador da conta Gerencianet (repasse 1)\\n  \\t\\\"percentage\\\": 2500, // porcentagem de repasse (2500 = 25%)\\n  }\\n\\n  repassTwo := map[string]interface{}{\\n  \\t\\\"payee_code\\\": \\\"informe_payee_code_conta\\\", // identificador da conta Gerencianet (repasse 2)\\n  \\t\\\"percentage\\\": 1500, // porcentagem de repasse (1500 = 15%)\\n  }\\n\\n  body := map[string]interface{}{\\n    \\\"items\\\": []map[string]interface{}{\\n      {\\n        \\\"name\\\": \\\"Product 1\\\",\\n        \\\"value\\\": 1000,\\n        \\\"amount\\\": 2,\\n        \\\"marketplace\\\": map[string]interface{}{\\n        \\t\\\"repasses\\\": []map[string]interface{}{\\n        \\t\\trepassOne,\\n        \\t\\trepassTwo,\\n        \\t},\\n        },\\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      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<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\"</pre>\n\nPara verificar mais detalhes, <a href=\"https://dev.gerencianet.com.br/docs/playground-transacoes#charge\" target=\"_blank\">acesse aqui</a> e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser utilizados para criar uma transação:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<code>items</code>\",\n    \"1-0\": \"<code>shippings</code>\",\n    \"2-0\": \"<code>metadata</code>\",\n    \"0-1\": \"Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de items</em></span>\\n\\n<div class=\\\"tab2\\\"><code>name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Nome do item, produto ou serviço. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255 caracteres (String).</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>value<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Valor, em centavos. Ex: R$ 10,00 = 1000. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>amount</code> // Quantidade. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer (padrão: 1)</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>marketplace<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Referente às configurações de repasses. <span class=\\\"atributo\\\">Atributos:</span></div> <div class=\\\"tab2\\\">\\n<code>*payee_code*<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> (<a href=\\\"http://image.prntscr.com/image/cabe13e1e5b64449b942cf31139150ba.png\\\" target=\\\"_blank\\\">código identificador da conta Gerencianet</a> - String).\\n<code>*percentage*<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> (porcentagem de repasse, sendo que 9000 equivale a 90% - Integer).</span></div>\",\n    \"1-1\": \"Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de shippings</em></span>\\n\\n<div class=\\\"tab2\\\"><code>name<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Rótulo do frete. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>value<strong class=\\\"atributo-obrigatorio\\\">*</strong></code> // Valor do frete, em centavos (1990 equivale a R$19,90). <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Integer.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>payeeCode</code> // <a href=\\\"http://image.prntscr.com/image/cabe13e1e5b64449b942cf31139150ba.png\\\" target=\\\"_blank\\\">Código identificador da conta Gerencianet</a>, único por conta. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Padrão: Identificador da sua própria conta. String.</span></strong></div>\",\n    \"2-1\": \"Define dados específicos da transação.\\n\\n<span class=\\\"tab1\\\"><em>Atributos de metadata</em></span>\\n\\n<div class=\\\"tab2\\\"><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. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String/null.</span></strong></div>\\n\\n<div class=\\\"tab2\\\"><code>notification_url</code> // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. <strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres. String/null.</span></strong></div>\",\n    \"0-2\": \"Sim\",\n    \"1-2\": \"Não\",\n    \"2-2\": \"Não\",\n    \"0-3\": \"Array\",\n    \"1-3\": \"Array\",\n    \"2-3\": \"Object\"\n  },\n  \"cols\": 4,\n  \"rows\": 3\n}\n[/block]\n<strong class=\"atributo-obrigatorio-texto\">* valor obrigatório</strong>\n\n<br>\n<hr>\n\n# 2. Associar à forma de pagamento via boleto ou cartão\n\nApós criar a transação de marketplace, você receberá o <code>charge_id</code>. Ele será utilizado para que você defina qual será a forma de pagamento da referida transação.\n\nPara detalhes, acesse a página referente à forma que deseja: [boleto bancário](https://dev.gerencianet.com.br/docs/gerar-boleto) e [cartão de crédito](https://dev.gerencianet.com.br/docs/pagamento-cartao).\n\n<br>\n<hr>\n\n# 3. Vídeos: Marketplace\n\nPensando em oferecer novos meios de transmitir informações, a Gerencianet disponibiliza os vídeos a seguir com o objetivo de explicar, de maneira clara e objetiva, como criar transação de marketplace através de integração com a API da Gerencianet.\n\n\n## 3.1. Visão Geral - Conhecendo o Marketplace (integração API Gerencianet)\n[block:html]\n{\n  \"html\": \"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/l1epJxBFUvM\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"\n}\n[/block]\n<br>\n\n## 3.2. Criando transação por Marketplace (integração API Gerencianet)\n[block:html]\n{\n  \"html\": \"<iframe width=\\\"560\\\" height=\\\"315\\\" src=\\\"https://www.youtube.com/embed/3SdgVG2RfrA\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"\n}\n[/block]\n<br>\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Curso Completo de Integração com a API Gerencianet\",\n  \"body\": \"Para acesso as demais aulas, de outros assuntos, acesse a página <a href=\\\"https://dev.gerencianet.com.br/docs/curso-online-gerencianet\\\" title=\\\"Link Interno\\\">Curso Online de Integrações</a>.\"\n}\n[/block]\n<br>\n<hr>\n\n# 4. Próximos Passos\n[block:html]\n{\n  \"html\": \"<p>Vamos conhecer mais sobre o detalhamento do mecanismo de funcionamento do marketplace?</p>\\n\\n<a href=\\\"https://dev.gerencianet.com.br/docs/marketplace-como-funciona\\\" title=\\\"Link Interno\\\"><button type=\\\"button\\\" class=\\\"btn btn-default navbar-btn\\\">Como funciona o Marketplace da Gerencianet?</button></a>\"\n}\n[/block]","excerpt":"Você está em: *\"Marketplace > Dividindo recebimentos\"*","slug":"marketplace-recebimentos","type":"basic","title":"Dividindo recebimentos"}

Dividindo recebimentos

Você está em: *"Marketplace > Dividindo recebimentos"*

O marketplace é uma ferramenta que permite a divisão de um valor recebido entre uma ou mais pessoas, conforme porcentagem definida no momento de criação da cobrança. Ao gerar uma transação, é possível definir a divisão do valor entre várias contas Gerencianet. Utilizamos o termo "Transação de Marketplace" sempre que o pagamento de uma transação implicar em repasses parciais ou integrais a outras contas Gerencianet. Para emitir, é bem simples e requer apenas dois passos: 1. [Crie a transação de marketplace](https://dev.gerencianet.com.br/docs/marketplace-recebimentos#section-1-criar-transa-o-de-marketplace), informando conta(s) de repasse, o item/produto/serviço, valor, quantidade, etc; 2. [Associe à forma de pagamento desejada](https://dev.gerencianet.com.br/docs/marketplace-recebimentos#section-2-associar-forma-de-pagamento-via-boleto-ou-cart-o), informando o <code>charge_id</code> da transação e os dados do cliente pagador. O restante desta página apresenta os procedimentos detalhados, mas você precisa instalar uma de nossas bibliotecas em seu servidor para executar os códigos de exemplo. [Certifique-se de que a SDK da Gerencianet foi instalada](https://dev.gerencianet.com.br/docs#section-2-bibliotecas). <hr> # 1. Criar transação de marketplace Transações que tiverem pelo menos um item definido como item de marketplace ou valores de fretes destinados a contas diferentes da conta integradora, são consideradas "Transações de Marketplace". Com o marketplace da Gerencianet é possível que o valor pago pelo cliente final seja dividido automaticamente entre vendedor e fornecedor, sem que o processo tenha que ser realizado manualmente. Primeiramente, precisamos gerar a transação. É neste momento que será informada a conta(s) Gerencianet de repasse, o nome do item/produto/serviço, valor da transação, quantidade, dentre outras informações possíveis. Uma observação importante é que a taxa de intermediação da Gerencianet é cobrada proporcionalmente de todas as contas que receberem os repasses, portanto, todos os envolvidos necessitam de uma conta Gerencianet. O código mais abaixo exemplifica a utilização dos repasses, em que o valor total da transação é R$ <strong>50,00</strong>. De acordo com o código abaixo, o valor será dividido entre 3 (três) contas Gerencianet. A primeira conta ficará com <strong>25%</strong> do valor, a segunda conta ficará com <strong>15%</strong> do valor e a terceira, com o restante, que neste caso é <strong>60%</strong> do valor. O atributo <code>payee_code</code> refere-se ao "identificador da conta" Gerencianet e será utilizado para identificar as contas que receberão os repasses. Confira onde localizá-lo, de acordo com o layout de sua plataforma (<a href="https://s3-sa-east-1.amazonaws.com/pe85007/portal/wp-content/uploads/2017/10/payee_code_p.png" target="_blank">veja onde localizar</a>). Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge" target="_blank">usando nosso Playground</a>. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?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$repass_1 = [\n 'payee_code' => \"informe_payee_code_conta\", // identificador da conta Gerencianet (repasse 1)\n 'percentage' => 2500 // porcentagem de repasse (2500 = 25%)\n];\n \n$repass_2 = [\n 'payee_code' => \"informe_payee_code_conta\", // identificador da conta Gerencianet (repasse 2)\n 'percentage' => 1500 // porcentagem de repasse (1500 = 15%)\n];\n \n$repasses = [\n $repass_1,\n $repass_2\n];\n \n$item_1 = [\n 'name' => 'Meu Produto', // nome do item, produto ou serviço\n 'amount' => 1, // quantidade\n 'value' => 5000, // valor (5000 = R$ 50,00)\n 'marketplace'=>array('repasses'=>$repasses)\n];\n \n$items = [\n $item_1\n];\n \n// Exemplo para receber notificações da alteração do status da transação.\n// $metadata = ['notification_url'=>'sua_url_de_notificacao_.com.br']\n// Outros detalhes em: https://dev.gerencianet.com.br/docs/notificacoes\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}", "language": "php" }, { "code": "'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: 'Meu Produto',\n value: 5000,\n amount: 1,\n marketplace: {\n repasses: [{\n payee_code: \"informe_payee_code_conta\",\n percentage: 2500\n }, {\n payee_code: \"informe_payee_code_conta\",\n percentage: 1500\n }]\n }\n }]\n}\n \nvar gerencianet = new Gerencianet(options);\n \ngerencianet\n .createCharge({}, body)\n .then(console.log)\n .catch(console.log)\n .done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n \noptions = {\n client_id: \"informe_seu_client_id\",\n client_secret: \"informe_seu_client_secret\",\n sandbox: true\n}\n \nbody = {\n items: [{\n name: \"Meu Produto\",\n value: 5000,\n amount: 1,\n marketplace: {\n repasses: [{\n payee_code: \"informe_payee_code_conta\",\n percentage: 2500\n }, {\n payee_code: \"informe_payee_code_conta\",\n percentage: 1500\n }]\n }\n }]\n}\n \ngerencianet = Gerencianet.new(options)\ngerencianet.create_charge(body: body)", "language": "ruby", "name": "Ruby" }, { "code": "from gerencianet import Gerencianet\n \noptions = {\n 'client_id': 'informe_seu_client_id',\n 'client_secret': 'informe_seu_client_secret',\n 'sandbox': True\n}\n \ngn = Gerencianet(options)\n \nbody = {\n 'items': [{\n 'name': \"Meu Produto\",\n 'value': 5000,\n 'amount': 1,\n 'marketplace': {\n 'repasses': [{\n 'payee_code': \"informe_payee_code_conta\",\n 'percentage': 2500\n },{\n 'payee_code': \"informe_payee_code_conta\",\n 'percentage': 1500\n }]\n }\n }],\n 'metadata': {\n 'notification_url': \"http://yourdomain.com\"\n }\n}\n \ngn.create_charge(body=body)", "language": "python" }, { "code": "dynamic endpoints = new Endpoints(\"informe_seu_client_id\", \"informe_seu_client_secret\", true);\n \nvar body = new {\n items = new [] {\n new {\n name = \"Meu Produto\",\n value = 5000,\n amount = 1,\n marketplace = new {\n repasses = new [] {\n new {\n payee_code = \"informe_payee_code_conta\",\n percentage = 2500\n },\n new {\n payee_code = \"informe_payee_code_conta\",\n percentage = 1500\n }\n }\n }\n }\n },\n metadata = new {\n notification_url = \"http://yourdomain.com\"\n }\n};\n \nvar response = endpoints.CreateCharge(null, body);", "language": "asp", "name": ".NET" }, { "code": "/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\n\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \"body\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \"body\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\n\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \"body\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será 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/marketplace/json/Marketplace.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/marketplace/map/Marketplace.java\n\n*/", "language": "java" }, { "code": "interface\nfunction CreateCharge: String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction CreateCharge: String;\nvar \nBody : String;\nRepasse1 : String;\nRepasse2 : String;\nRepasses : String;\n\nbegin \n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize(); \n\n Repasse1 :=\n '{'+\n '\"payee_code\": \"informe_o_payee_code_1\",'+\n '\"percentage\": 2500'+\n '},';\n\n Repasse2 :=\n '{'+\n '\"payee_code\": \"informe_o_payee_code_2\",'+\n '\"percentage\": 1500'+\n '}';\n\n Repasses := '{ \"repasses\": ['+ Repasse1 + Repasse2 +'] }';\n\n Body := '{'+\n '\"items\":'+\n '['+\n '{'+\n '\"name\":\"Meu Produto\",'+\n '\"value\":9000,'+\n '\"amount\":1,'+\n '\"marketplace\":' + Repasses +\n '}'+\n ']'+\n '}';\n\n Result := ExecuteGerenciaNetRequest( 'createCharge','','',Body );\nend;", "language": "json", "name": "Delphi" }, { "code": "// No código de exemplo de uso da SDK de Go, definimos as credenciais de acesso à API (Client_Id e Client_Secret) e o ambiente a ser usado (sandbox como 'true' ou 'false') dentro de um arquivo específico (configs.go), que está localizado no diretório \"_examples/configs\". Essas credenciais são exportadas através da variável '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 repassOne := map[string]interface{}{\n \t\"payee_code\": \"informe_payee_code_conta\", // identificador da conta Gerencianet (repasse 1)\n \t\"percentage\": 2500, // porcentagem de repasse (2500 = 25%)\n }\n\n repassTwo := map[string]interface{}{\n \t\"payee_code\": \"informe_payee_code_conta\", // identificador da conta Gerencianet (repasse 2)\n \t\"percentage\": 1500, // porcentagem de repasse (1500 = 15%)\n }\n\n body := map[string]interface{}{\n \"items\": []map[string]interface{}{\n {\n \"name\": \"Product 1\",\n \"value\": 1000,\n \"amount\": 2,\n \"marketplace\": map[string]interface{}{\n \t\"repasses\": []map[string]interface{}{\n \t\trepassOne,\n \t\trepassTwo,\n \t},\n },\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}", "language": "go" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/Charge" "items" "name" "value" "amount" "marketplace" "payee_code" "percentage" "shippings" "name" "value" "payee_code" "metadata" "custom_id" "notification_url"</pre> Para verificar mais detalhes, <a href="https://dev.gerencianet.com.br/docs/playground-transacoes#charge" target="_blank">acesse aqui</a> e explore em nosso Playground. <br> ## b) Atributos que podem ser utilizados para criar uma transação: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>items</code>", "1-0": "<code>shippings</code>", "2-0": "<code>metadata</code>", "0-1": "Item que está sendo vendido. Uma mesma transação pode possuir ilimitados itens.\n\n<span class=\"tab1\"><em>Atributos de items</em></span>\n\n<div class=\"tab2\"><code>name<strong class=\"atributo-obrigatorio\">*</strong></code> // Nome do item, produto ou serviço. <strong class=\"descricao-atributo\"><span class=\"atributo\">Mínimo de 1 caractere e máximo de 255 caracteres (String).</span></strong></div>\n\n<div class=\"tab2\"><code>value<strong class=\"atributo-obrigatorio\">*</strong></code> // Valor, em centavos. Ex: R$ 10,00 = 1000. <strong class=\"descricao-atributo\"><span class=\"atributo\">Integer.</span></strong></div>\n\n<div class=\"tab2\"><code>amount</code> // Quantidade. <strong class=\"descricao-atributo\"><span class=\"atributo\">Integer (padrão: 1)</span></strong></div>\n\n<div class=\"tab2\"><code>marketplace<strong class=\"atributo-obrigatorio\">*</strong></code> // Referente às configurações de repasses. <span class=\"atributo\">Atributos:</span></div> <div class=\"tab2\">\n<code>*payee_code*<strong class=\"atributo-obrigatorio\">*</strong></code> (<a href=\"http://image.prntscr.com/image/cabe13e1e5b64449b942cf31139150ba.png\" target=\"_blank\">código identificador da conta Gerencianet</a> - String).\n<code>*percentage*<strong class=\"atributo-obrigatorio\">*</strong></code> (porcentagem de repasse, sendo que 9000 equivale a 90% - Integer).</span></div>", "1-1": "Determina o(s) valor(es) de frete(s) de uma transação. Uma mesma transação pode possuir ilimitados valores de frete.\n\n<span class=\"tab1\"><em>Atributos de shippings</em></span>\n\n<div class=\"tab2\"><code>name<strong class=\"atributo-obrigatorio\">*</strong></code> // Rótulo do frete. <strong class=\"descricao-atributo\"><span class=\"atributo\">Máximo de 255 caracteres. String.</span></strong></div>\n\n<div class=\"tab2\"><code>value<strong class=\"atributo-obrigatorio\">*</strong></code> // Valor do frete, em centavos (1990 equivale a R$19,90). <strong class=\"descricao-atributo\"><span class=\"atributo\">Integer.</span></strong></div>\n\n<div class=\"tab2\"><code>payeeCode</code> // <a href=\"http://image.prntscr.com/image/cabe13e1e5b64449b942cf31139150ba.png\" target=\"_blank\">Código identificador da conta Gerencianet</a>, único por conta. <strong class=\"descricao-atributo\"><span class=\"atributo\">Padrão: Identificador da sua própria conta. String.</span></strong></div>", "2-1": "Define dados específicos da transação.\n\n<span class=\"tab1\"><em>Atributos de metadata</em></span>\n\n<div class=\"tab2\"><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. <strong class=\"descricao-atributo\"><span class=\"atributo\">Máximo de 255 caracteres. String/null.</span></strong></div>\n\n<div class=\"tab2\"><code>notification_url</code> // Endereço de sua URL válida que receberá as notificações de mudanças de status das transações. <strong class=\"descricao-atributo\"><span class=\"atributo\">Máximo de 255 caracteres. String/null.</span></strong></div>", "0-2": "Sim", "1-2": "Não", "2-2": "Não", "0-3": "Array", "1-3": "Array", "2-3": "Object" }, "cols": 4, "rows": 3 } [/block] <strong class="atributo-obrigatorio-texto">* valor obrigatório</strong> <br> <hr> # 2. Associar à forma de pagamento via boleto ou cartão Após criar a transação de marketplace, você receberá o <code>charge_id</code>. Ele será utilizado para que você defina qual será a forma de pagamento da referida transação. Para detalhes, acesse a página referente à forma que deseja: [boleto bancário](https://dev.gerencianet.com.br/docs/gerar-boleto) e [cartão de crédito](https://dev.gerencianet.com.br/docs/pagamento-cartao). <br> <hr> # 3. Vídeos: Marketplace Pensando em oferecer novos meios de transmitir informações, a Gerencianet disponibiliza os vídeos a seguir com o objetivo de explicar, de maneira clara e objetiva, como criar transação de marketplace através de integração com a API da Gerencianet. ## 3.1. Visão Geral - Conhecendo o Marketplace (integração API Gerencianet) [block:html] { "html": "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/l1epJxBFUvM\" frameborder=\"0\" allowfullscreen></iframe>" } [/block] <br> ## 3.2. Criando transação por Marketplace (integração API Gerencianet) [block:html] { "html": "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/3SdgVG2RfrA\" frameborder=\"0\" allowfullscreen></iframe>" } [/block] <br> [block:callout] { "type": "info", "title": "Curso Completo de Integração com a API Gerencianet", "body": "Para acesso as demais aulas, de outros assuntos, acesse a página <a href=\"https://dev.gerencianet.com.br/docs/curso-online-gerencianet\" title=\"Link Interno\">Curso Online de Integrações</a>." } [/block] <br> <hr> # 4. Próximos Passos [block:html] { "html": "<p>Vamos conhecer mais sobre o detalhamento do mecanismo de funcionamento do marketplace?</p>\n\n<a href=\"https://dev.gerencianet.com.br/docs/marketplace-como-funciona\" title=\"Link Interno\"><button type=\"button\" class=\"btn btn-default navbar-btn\">Como funciona o Marketplace da Gerencianet?</button></a>" } [/block]