{"_id":"578525e8fd4ee30e0007a5f1","__v":28,"category":{"_id":"5783f8b65cbce30e0074e2b9","__v":0,"project":"575aeffae12cf20e002f306c","version":"575aeffae12cf20e002f306f","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-07-11T19:51:18.983Z","from_sync":false,"order":5,"slug":"assinaturas","title":"Assinaturas (Recorrência)"},"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"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-07-12T17:16:24.416Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":2,"body":"Existem outros endpoints (serviços) disponíveis na API e que podem ser utilizados em assinaturas:\n\n1. [Listar os planos de assinatura existentes](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-1-listar-os-planos-de-assinatura-existentes)\n\n2. [Cancelar plano de assinatura](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-2-cancelar-plano-de-assinatura)\n\n3. [Retornar informações de assinatura vinculada a um plano](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-3-retornar-informa-es-de-assinatura-vinculada-a-um-plano)\n\n4. [Cancelar assinaturas ativas em um plano](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-4-cancelar-assinaturas-ativas-em-um-plano)\n\n5. [Alterar URL de notificação (notification_url) e/ou custom_id de assinaturas](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-5-alterar-url-de-notifica-o-notification_url-e-ou-custom_id-de-assinaturas)\n\n6. [Listar parcelas, de acordo com a bandeira do cartão de crédito](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-6-listar-parcelas-de-acordo-com-a-bandeira-do-cart-o-de-cr-dito)\n\n7. [Acrescentar informações ao histórico da assinatura](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-7-acrescentar-informa-es-ao-hist-rico-da-assinatura)\n\n8. [Editar nome do plano de assinatura](https://dev.gerencianet.com.br/v1/docs/assinaturas-outros-endpoints#section-8-editar-nome-do-plano-de-assinatura)\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Antes de prosseguir, certifique-se de que a SDK da Gerencianet foi instalada\",\n  \"body\": \"O restante desta página apresenta os procedimentos detalhados, mas você precisa [instalar uma de nossas bibliotecas](https://dev.gerencianet.com.br/docs#section-2-bibliotecas) em seu servidor para executar os códigos de exemplo.\"\n}\n[/block]\n# 1. Listar os planos de assinatura existentes\n\nPermite listar os planos de assinatura criados. Existem filtros avançados que podem ser utilizados para localizar, tais como:\n\n- <code>Name</code>: retorna resultados a partir da procura pelo nome do plano cadastrado previamente;\n- <code>Limit</code>: limite máximo de registros de resposta;\n- <code>Offset</code>: determina a partir de qual registro a busca será realizada.\n\nPara retornar informações demonstrando os planos de assinaturas já criados, você deve enviar uma requisição <code>GET</code> para a rota <code>/v1/plans</code>.\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$params = ['limit' => 20, 'offset' => 0];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $plans = $api->getPlans($params, []);\\n    print_r($plans);\\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      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\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 params = {\\n  name: 'My Plan',\\n  limit: 20,\\n  offset: 0\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n  .getPlans(params)\\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: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  name: \\\"My Plan\\\",\\n  limit: 1,\\n  offset: 0\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.get_plans(params: params)\",\n      \"language\": \"ruby\",\n      \"name\": \"Ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'name': \\\"My Plan\\\",\\n    'limit': 1,\\n    'offset': 0\\n}\\n\\nresponse =  gn.get_plans(params=params)\\nprint(response)\",\n      \"language\": \"python\",\n      \"name\": \"Python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class GetPlans\\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                // name = \\\"My Plan\\\",\\n                limit = 20,\\n                offset = 0\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.GetPlans(param);\\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      \"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/subscriptions/json/ListPlan.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/ListPlan.java\\n\\n*/\",\n      \"language\": \"java\",\n      \"name\": \"Java\"\n    },\n    {\n      \"code\": \"interface\\nfunction GetPlans: String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction GetPlans: String;\\nvar\\n  Params: String;\\nbegin\\n\\tEnableService( 'GerenciaNet.dll' ); \\n  \\tConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n  \\tGerenciaNetAuthorize();\\n\\n    Params := CreateRequestParams( [ 'name=my plan', 'limit=20', 'offset=0' ] ).Text;\\n    Result := ExecuteGerenciaNetRequest( 'getPlans','', Params, '' );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tres, err := gn.GetPlans(20, 0) // limit e offset\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n# 2. Cancelar plano de assinatura\n\nPermite cancelar um plano de assinatura. Para tal, você deve informar o <code>plan_id</code> do plano de assinatura que deseja cancelar.\n\nPara cancelar um plano de assinatura, você deve enviar uma requisição <code>DELETE</code> para a rota <code>/v1/plan/:id</code>, onde <code>:id</code> é o <code>plan_id</code> do plano que deseja cancelar.\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// $plan_id refere-se ao \\\"plan_id\\\" do plano\\n$params = [\\n  'id' => $plan_id\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $plan = $api->deletePlan($params, []);\\n    print_r($plan);\\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      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n\\tclient_id: credentials.client_id,\\n\\tclient_secret: credentials.client_secret,\\n\\tsandbox: true\\n}\\n\\nvar params = {\\n\\tid: 0\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n\\t.deletePlan(params)\\n\\t.then(console.log)\\n\\t.catch(console.log)\\n\\t.done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.delete_plan(params: params)\",\n      \"language\": \"ruby\",\n      \"name\": \"Ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1\\n}\\n\\nresponse =  gn.delete_plan(params=params)\\nprint(response)\",\n      \"language\": \"python\",\n      \"name\": \"Python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class DeletePlan\\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            try\\n            {\\n                var response = endpoints.DeletePlan(param);\\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      \"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/subscriptions/json/DeletePlan.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/DeletePlan.java\\n\\n*/\",\n      \"language\": \"text\",\n      \"name\": \"Java\"\n    },\n    {\n      \"code\": \"interface\\nfunction DeletePlan(Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction DeletePlan(Id: String): String;\\nvar\\n  Params: String;\\nbegin\\n\\tEnableService( 'GerenciaNet.dll' ); \\n  \\tConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n  \\tGerenciaNetAuthorize();\\n\\n    Params := CreateRequestParams( [ 'id='+Id ] ).Text;\\n    Result := ExecuteGerenciaNetRequest( 'deletePlan',Params,'','' );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tres, err := gn.DeletePlan(1) // no lugar do 1 coloque o plan_id correto\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n# 3. Retornar informações de assinatura vinculada a um plano\n\nPossibilita buscar informações de uma assinatura que está vinculada a um plano. Para tal, você deve informar o <code>subscription_id</code> da assinatura que deseja buscar informações.\n\nPara retornar informações de uma assinatura vinculada a um plano, você deve enviar uma requisição <code>GET</code> para a rota <code>/v1/subscription/:id</code>, onde <code>:id</code> é o <code>subscription_id</code> da assinatura desejada.\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// $subscription_id refere-se ao \\\"subscription_id\\\" da assinatura\\n$params = [\\n  'id' => $subscription_id\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $subscription = $api->detailSubscription($params, []);\\n    print_r($subscription);\\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      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n\\tclient_id: credentials.client_id,\\n\\tclient_secret: credentials.client_secret,\\n\\tsandbox: true\\n}\\n\\nvar params = {\\n\\tid: 0\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n\\t.detailSubscription(params)\\n\\t.then(console.log)\\n\\t.catch(console.log)\\n\\t.done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1120\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.detail_subscription(params: params)\",\n      \"language\": \"ruby\",\n      \"name\": \"Ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1\\n}\\n\\nresponse =  gn.detail_subscription(params=params)\\nprint(response)\",\n      \"language\": \"python\",\n      \"name\": \"Python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class DetailSubscription\\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 = 1002\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.DetailSubscription(param);\\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      \"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/subscriptions/json/DetailSubscription.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/DetailSubscription.java\\n\\n*/\",\n      \"language\": \"java\",\n      \"name\": \"Java\"\n    },\n    {\n      \"code\": \"interface\\nfunction DetailSubscription(Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction DetailSubscription(Id: String): String;\\nvar\\n  Params: String;\\nbegin\\n\\tEnableService( 'GerenciaNet.dll' ); \\n  \\tConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n  \\tGerenciaNetAuthorize();\\n\\n    Params := CreateRequestParams( [ 'id='+Id ] ).Text;\\n    Result := ExecuteGerenciaNetRequest( 'detailSubscription',Params,'', '' );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tres, err := gn.DetailSubscription(1) // no lugar do 1 coloque o subscription_id correto\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n# 4. Cancelar assinaturas ativas em um plano\n\nPermite cancelar assinaturas ativas em um plano. Para tal, deve-se informar o <code>subscription_id</code> da assinatura que deseja cancelar.\n\nPara cancelar assinaturas ativas em um plano de assinaturas, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/subscription/:id/cancel</code>, onde <code>:id</code> é o <code>subscription_id</code> da assinatura desejada.\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// $subscription_id refere-se ao \\\"subscription_id\\\" da assinatura\\n$params = [\\n  'id' => $subscription_id\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $subscription = $api->cancelSubscription($params, []);\\n    print_r($subscription);\\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      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n\\tclient_id: credentials.client_id,\\n\\tclient_secret: credentials.client_secret,\\n\\tsandbox: true\\n}\\n\\nvar params = {\\n\\tid: 0\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n\\t.cancelSubscription(params)\\n\\t.then(console.log)\\n\\t.catch(console.log)\\n\\t.done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1111\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.cancel_subscription(params: params)\",\n      \"language\": \"ruby\",\n      \"name\": \"Ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1\\n}\\n\\nresponse =  gn.cancel_subscription(params=params)\\nprint(response)\",\n      \"language\": \"python\",\n      \"name\": \"Python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class CancelSubscription\\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 = 0\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.CancelSubscription(param);\\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      \"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/subscriptions/json/CancelSubscription.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/CancelSubscription.java\\n\\n*/\",\n      \"language\": \"java\",\n      \"name\": \"Java\"\n    },\n    {\n      \"code\": \"interface\\nfunction CancelSubscription(Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction CancelSubscription(Id: String): String;\\nvar\\n  Params: String;\\nbegin\\n\\tEnableService( 'GerenciaNet.dll' ); \\n  \\tConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n  \\tGerenciaNetAuthorize();\\n\\n    Params := CreateRequestParams( [ 'id='+Id ] ).Text;\\n    Result := ExecuteGerenciaNetRequest( 'cancelSubscription',Params,'', '' );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tres, err := gn.CancelSubscription(1) // no lugar do 1 coloque o subscription_id correto\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n# 5. Alterar URL de notificação (notification_url) e/ou custom_id de assinaturas\n\nÉ possível definir ou alterar as informações enviadas na propriedade <code>metadata</code> de uma assinatura a qualquer momento. Este endpoint é de **extrema importância** para atualizar sua URL de notificação atrelada às assinaturas ou modificar o <code>custom_id</code> previamente associado a assinatura.\n\nNesse caso, todas as transações pertencentes à assinatura serão atualizadas.\n\nPara alterar a <code>notification_url</code> e/ou <code>custom_id</code> de uma assinatura, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/subscription/:id/metadata</code>, onde <code>:id</code> é o <code>subscription_id</code> da transação desejada.\n\n**Casos de uso deste endpoint:**\n\n- Integrador alterou o IP do servidor que estava associado na URL de notificação das assinaturas/transações;\n\n- Integrador atualizou a URL de notificação para as novas assinaturas/transações que forem criadas, mas precisa atualizar também nas assinaturas/transações anteriores 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 assinaturas/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 assinatura/transação;\n\n- Modificar ou acrescentar uma informação junto ao atributo <code>custom_id</code> associado às assinaturas/transações geradas previamente;\n\n- Dentre outros possíveis cenários.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-assinaturas#subscription_id_metadata\" 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$file = file_get_contents(__DIR__.'/../config.json');\\n$options = json_decode($file, true);\\n\\n// $subscription_id refere-se ao \\\"subscription_id\\\" da assinatura\\n$params = [\\n  'id' => $subscription_id\\n];\\n\\n$body = [\\n\\t'notification_url' => 'http://localhost.com',\\n\\t'custom_id' => 'Custom Subscription 0001'\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $subscription = $api->updateSubscriptionMetadata($params, $body);\\n    print_r($subscription);\\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      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\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 params = {\\n  id: 1009\\n}\\n\\nvar body = {\\n  notification_url: 'http://yourdomain.com',\\n  custom_id: 'my_new_id'\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n  .updateSubscriptionMetadata(params, 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: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1009\\n}\\n\\nbody = {\\n  notification_url: \\\"http://yourdomain.com\\\",\\n  custom_id: \\\"my_new_id\\\"\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.update_subscription_metadata(params: params, body: body)\",\n      \"language\": \"ruby\",\n      \"name\": \"Ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1\\n}\\n\\nbody = {\\n    'notification_url': 'http://yourdomain.com',\\n    'custom_id': 'my_new_id'\\n}\\n\\nresponse =  gn.update_subscription_metadata(params=params, body=body)\\nprint(response)\",\n      \"language\": \"python\",\n      \"name\": \"Python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class UpdateSubscriptionMetadata\\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 = 1002,\\n            };\\n\\n            var body = new\\n            {\\n                notification_url = \\\"http://yourdomain.com\\\",\\n                custom_id = \\\"my_new_id\\\"\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.UpdateSubscriptionMetadata(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      \"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/subscriptions/json/UpdateSubscription.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/UpdateSubscription.java\\n\\n*/\",\n      \"language\": \"java\",\n      \"name\": \"Java\"\n    },\n    {\n      \"code\": \"interface\\nfunction UpdateSubscription(Id: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction UpdateSubscription(Id: String): String;\\nvar\\n  Body: String;\\n  Params : String;\\nbegin\\n    Params := CreateRequestParams( [ 'id='+Id ] ).Text;\\n    Body :=\\n    '{\\\"custom_id\\\": \\\"Subscription10\\\",'+\\n     '\\\"notification_url\\\": \\\"http://domain.com/notification\\\" }';\\n\\n    EnableService( 'GerenciaNet.dll' ); \\n  \\tConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n  \\tGerenciaNetAuthorize();\\n\\n    Result := ExecuteGerenciaNetRequest( 'updateSubscriptionMetadata', Params,'', Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"custom_id\\\": \\\"Product 0001\\\",\\n\\t\\t\\\"notification_url\\\": \\\"http://domain.com/notification\\\",\\n\\t}\\n\\n\\tres, err := gn.UpdateSubscriptionMetadata(1, body) // no lugar do 1 coloque o subscription_id correto\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\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\": \"/SubscriptionMetadataUpdate\"\n    \"notification_url\"\n    \"custom_id\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-assinaturas#subscription_id_metadata) e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser utilizados para atualizar a URL de notificação e/ou custom_id:\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>notification_url</code>\",\n    \"1-0\": \"<code>custom_id</code>\",\n    \"0-2\": \"Não\",\n    \"1-2\": \"Não\",\n    \"0-1\": \"Endereço de sua URL válida que receberá as notificações de mudanças de status das assinaturas/transações.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255 (String).</span></strong>\",\n    \"1-1\": \"Permite associar uma assinatura/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<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255 (String).</span></strong>\",\n    \"0-3\": \"String\",\n    \"1-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n<br>\n<hr>\n\n# 6. Listar parcelas, de acordo com a bandeira do cartão de crédito\n\nO endpoint <code>installments</code> é utilizado para listar as parcelas de cada bandeira de cartão de crédito, já com os valores de juros e número de parcelas calculados de acordo com a conta integradora. Ou seja, se sua conta possui uma configuração de juros de cartão (opção disponível para clientes que optaram por receber valores de cartão de forma parcelada), não é necessário fazer nenhum cálculo, esse endpoint já informa os valores calculados.\n\nBandeiras disponíveis: <code>visa</code>, <code>mastercard</code>, <code>amex</code>, <code>diners</code>, <code>elo</code> e <code>hipercard</code>.\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$params = [\\n\\t'total' => '20000',\\n\\t'brand' => 'visa'\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $installments = $api->getInstallments($params, []);\\n    print_r($installments);\\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');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n\\tclient_id: credentials.client_id,\\n\\tclient_secret: credentials.client_secret,\\n\\tsandbox: true\\n}\\n\\nvar params = {\\n\\ttype: 'visa',\\n\\ttotal: 5000\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n\\t.getInstallments(params)\\n\\t.then(console.log)\\n\\t.catch(console.log)\\n\\t.done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  brand: \\\"visa\\\",\\n  total: 5000\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.get_installments(params: params)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'brand': 'visa',\\n    'total': 5000\\n}\\n\\nresponse =  gn.get_installments(params=params)\\nprint(response)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class GetInstallments\\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                brand = \\\"visa\\\",\\n                total = 2500\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.GetInstallments(param);\\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      \"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/extra/json/GetInstallments.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/extra/map/GetInstallments.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction GetInstallments: String;\\n\\nimplementation\\nuses\\n  uGerenciaNetClientUtilities, uGerenciaClient;\\n\\nfunction GetInstallments: String;\\nvar\\n  Params: String;\\nbegin\\n    Params := CreateRequestParams( [ 'total=20000', 'brand=visa' ] ).Text;\\n    Result := ExecuteGerenciaNetRequest( 'getInstallments','',Params,'' );\\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\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tres, err := gn.GetInstallments(20000, \\\"visa\\\") // total e bandeira\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n# 7. Acrescentar informações ao histórico da assinatura\n\nO histórico de uma assinatura é semelhante ao histórico de uma transação. Porém, ela reflete as ações que a assinatura em si sofreu. E, da mesma forma, é possível adicionar mensagens personalizadas ao histórico de uma assinatura, sem que estas, contudo, influenciem no fluxo do mesmo.\n\nPara adicionar mensagens personalizadas no histórico de uma assinatura, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/subscription/:id/history</code>, onde <code>:id</code> é o <code>subscription_id</code> da assinatura desejada.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-assinaturas#subscription_history\" 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// $subscription_id refere-se ao ID da assinatura desejada\\n$params = [\\n  'id' => $subscription_id\\n];\\n\\n$body = [\\n  'description' => 'Esta assinatura é sobre um serviço'\\n];\\ntry {\\n    $api = new Gerencianet($options);\\n    $response = $api->createSubscriptionHistory($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      \"language\": \"php\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\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 params = {\\n    id: 1001\\n}\\n\\nvar body = {\\n    description: 'Esta assinatura é sobre um serviço'\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n    .createSubscriptionHistory(params, 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: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1000\\n}\\n\\nbody = {\\n  description: \\\"Esta assinatura é sobre um serviço\\\"\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.create_subscription_history(params: params, body: body)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\n\\nparams = {\\n    'id': 1000\\n}\\n\\nbody = {\\n    'description': \\\"Esta assinatura é sobre um serviço\\\"\\n}\\n\\nresponse =  gn.create_subscription_history(params=params, body=body)\\nprint(response)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class CreateChargeHistory\\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                id = 1000\\n            };\\n\\n            var body = new\\n            {\\n                description = \\\"Esta assinatura é sobre um serviço\\\"\\n            };\\n\\n\\n            try\\n            {\\n                var response = endpoints.CreateSubscriptionHistory(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      \"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/subscriptions/json/CreateSubscriptionHistory.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/CreateSubscriptionHistory.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"function CreateSubscriptionHistory(Id: String): String;\\nvar\\n  Body : String;\\n  UpdateParams : String;\\nbegin\\n    UpdateParams := CreateRequestParams( [ 'id='+Id ] ).Text;\\n    Body := '{\\\"description\\\": \\\"Esta assinatura é sobre um serviço\\\"}';\\n    Result := ExecuteGerenciaNetRequest( 'createSubscriptionHistory', UpdateParams, '', Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"description\\\": \\\"Esta assinatura é sobre um serviço\\\",\\n\\t}\\n\\n\\tres, err := gn.CreateSubscriptionHistory(13100, body) // no lugar do 1 coloque o subscription_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\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\": \"/SubscriptionHistory\"\n    \"description\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-assinaturas#subscription_history) e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser usados para acrescentar mensagens ao histórico da assinatura:\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>description</code>\",\n    \"0-1\": \"Permite acrescentar informações ao histórico da assinatura sem influenciar no fluxo da mesmo.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255 caracteres.</span></strong>\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n<br>\n<hr>\n\n# 8. Editar nome do plano de assinatura\n\nPermite alterar (editar) o nome de um plano de assinatura pré existente. Para tal, deve ser fornecido o identificador do <code>plan_id</code> desejado.\n\nPara tal, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/plan/:id</code>, onde <code>:id</code> é o <code>plan_id</code> do plano desejado.\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// $charge_id refere-se ao ID da transação gerada anteriormente\\n$params = [\\n  'id' => $charge_id\\n];\\n\\n$body = [ 'name' => 'Meu novo plano' ];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $subscription = $api->updatePlan($params, $body);\\n    print_r($subscription);\\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');\\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 params = {\\n    id: 1008\\n}\\n\\nvar body = {\\n    name: 'My new plan'\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n    .updatePlan(params, 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: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1008\\n}\\n\\nbody = {\\n  name: \\\"My new plan\\\"\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.update_plan(params: params, body: body)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1\\n}\\n\\nbody = {\\n    'name': 'My new plan'\\n}\\n\\nresponse =  gn.update_plan(params=params, body=body)\\nprint(response)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class UpdateParcel\\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                id = 1001\\n            };\\n\\n            var body = new {\\n                name = \\\"My new plan\\\"\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.UpdatePlan(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      \"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/subscriptions/json/UpdatePlan.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/UpdatePlan.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction UpdatePlan(Id: String): String;\\nvar\\n  Body: String;\\n  Params : String;\\nbegin\\n    Params := CreateRequestParams( [ 'id='+Id ] ).Text;\\n    Body :=\\n    '{\\\"name\\\": \\\"My new plan\\\" }';\\n    Result := ExecuteGerenciaNetRequest( 'updatePlan', Params,'', Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"name\\\": \\\"My new plan\\\",\\n\\t}\\n\\n\\tres, err := gn.UpdatePlan(1, body) // no lugar do 1 coloque o plan_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\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\": \"/UpdatePlan\"\n    \"name\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-assinaturas#put_plan_id) e explore em nosso Playground.\n\n<br>\n\n## b) Atributo que pode ser usado para editar o nome de um plano de assinatura pré-existente:\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>name</code>\",\n    \"0-1\": \"Permite alterar (editar) o nome de um plano de assinatura pré existente.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255 caracteres.</span></strong>\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]","excerpt":"Você está em: *\"Assinaturas (Recorrência) > Outros endpoints\"*","slug":"assinaturas-outros-endpoints","type":"basic","title":"Outros endpoints"}

Outros endpoints

Você está em: *"Assinaturas (Recorrência) > Outros endpoints"*

Existem outros endpoints (serviços) disponíveis na API e que podem ser utilizados em assinaturas: 1. [Listar os planos de assinatura existentes](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-1-listar-os-planos-de-assinatura-existentes) 2. [Cancelar plano de assinatura](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-2-cancelar-plano-de-assinatura) 3. [Retornar informações de assinatura vinculada a um plano](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-3-retornar-informa-es-de-assinatura-vinculada-a-um-plano) 4. [Cancelar assinaturas ativas em um plano](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-4-cancelar-assinaturas-ativas-em-um-plano) 5. [Alterar URL de notificação (notification_url) e/ou custom_id de assinaturas](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-5-alterar-url-de-notifica-o-notification_url-e-ou-custom_id-de-assinaturas) 6. [Listar parcelas, de acordo com a bandeira do cartão de crédito](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-6-listar-parcelas-de-acordo-com-a-bandeira-do-cart-o-de-cr-dito) 7. [Acrescentar informações ao histórico da assinatura](https://dev.gerencianet.com.br/docs/assinaturas-outros-endpoints#section-7-acrescentar-informa-es-ao-hist-rico-da-assinatura) 8. [Editar nome do plano de assinatura](https://dev.gerencianet.com.br/v1/docs/assinaturas-outros-endpoints#section-8-editar-nome-do-plano-de-assinatura) [block:callout] { "type": "warning", "title": "Antes de prosseguir, certifique-se de que a SDK da Gerencianet foi instalada", "body": "O restante desta página apresenta os procedimentos detalhados, mas você precisa [instalar uma de nossas bibliotecas](https://dev.gerencianet.com.br/docs#section-2-bibliotecas) em seu servidor para executar os códigos de exemplo." } [/block] # 1. Listar os planos de assinatura existentes Permite listar os planos de assinatura criados. Existem filtros avançados que podem ser utilizados para localizar, tais como: - <code>Name</code>: retorna resultados a partir da procura pelo nome do plano cadastrado previamente; - <code>Limit</code>: limite máximo de registros de resposta; - <code>Offset</code>: determina a partir de qual registro a busca será realizada. Para retornar informações demonstrando os planos de assinaturas já criados, você deve enviar uma requisição <code>GET</code> para a rota <code>/v1/plans</code>. 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$params = ['limit' => 20, 'offset' => 0];\n\ntry {\n $api = new Gerencianet($options);\n $plans = $api->getPlans($params, []);\n print_r($plans);\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", "name": "PHP" }, { "code": "'use strict';\n\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 params = {\n name: 'My Plan',\n limit: 20,\n offset: 0\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .getPlans(params)\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: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n name: \"My Plan\",\n limit: 1,\n offset: 0\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.get_plans(params: params)", "language": "ruby", "name": "Ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'name': \"My Plan\",\n 'limit': 1,\n 'offset': 0\n}\n\nresponse = gn.get_plans(params=params)\nprint(response)", "language": "python", "name": "Python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class GetPlans\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 // name = \"My Plan\",\n limit = 20,\n offset = 0\n };\n\n try\n {\n var response = endpoints.GetPlans(param);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "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/subscriptions/json/ListPlan.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/ListPlan.java\n\n*/", "language": "java", "name": "Java" }, { "code": "interface\nfunction GetPlans: String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction GetPlans: String;\nvar\n Params: String;\nbegin\n\tEnableService( 'GerenciaNet.dll' ); \n \tConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n \tGerenciaNetAuthorize();\n\n Params := CreateRequestParams( [ 'name=my plan', 'limit=20', 'offset=0' ] ).Text;\n Result := ExecuteGerenciaNetRequest( 'getPlans','', Params, '' );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tres, err := gn.GetPlans(20, 0) // limit e offset\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> <hr> # 2. Cancelar plano de assinatura Permite cancelar um plano de assinatura. Para tal, você deve informar o <code>plan_id</code> do plano de assinatura que deseja cancelar. Para cancelar um plano de assinatura, você deve enviar uma requisição <code>DELETE</code> para a rota <code>/v1/plan/:id</code>, onde <code>:id</code> é o <code>plan_id</code> do plano que deseja cancelar. 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// $plan_id refere-se ao \"plan_id\" do plano\n$params = [\n 'id' => $plan_id\n];\n\ntry {\n $api = new Gerencianet($options);\n $plan = $api->deletePlan($params, []);\n print_r($plan);\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", "name": "PHP" }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n\tclient_id: credentials.client_id,\n\tclient_secret: credentials.client_secret,\n\tsandbox: true\n}\n\nvar params = {\n\tid: 0\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n\t.deletePlan(params)\n\t.then(console.log)\n\t.catch(console.log)\n\t.done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.delete_plan(params: params)", "language": "ruby", "name": "Ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1\n}\n\nresponse = gn.delete_plan(params=params)\nprint(response)", "language": "python", "name": "Python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class DeletePlan\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 try\n {\n var response = endpoints.DeletePlan(param);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "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/subscriptions/json/DeletePlan.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/DeletePlan.java\n\n*/", "language": "text", "name": "Java" }, { "code": "interface\nfunction DeletePlan(Id: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction DeletePlan(Id: String): String;\nvar\n Params: String;\nbegin\n\tEnableService( 'GerenciaNet.dll' ); \n \tConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n \tGerenciaNetAuthorize();\n\n Params := CreateRequestParams( [ 'id='+Id ] ).Text;\n Result := ExecuteGerenciaNetRequest( 'deletePlan',Params,'','' );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tres, err := gn.DeletePlan(1) // no lugar do 1 coloque o plan_id correto\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> <hr> # 3. Retornar informações de assinatura vinculada a um plano Possibilita buscar informações de uma assinatura que está vinculada a um plano. Para tal, você deve informar o <code>subscription_id</code> da assinatura que deseja buscar informações. Para retornar informações de uma assinatura vinculada a um plano, você deve enviar uma requisição <code>GET</code> para a rota <code>/v1/subscription/:id</code>, onde <code>:id</code> é o <code>subscription_id</code> da assinatura desejada. 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// $subscription_id refere-se ao \"subscription_id\" da assinatura\n$params = [\n 'id' => $subscription_id\n];\n\ntry {\n $api = new Gerencianet($options);\n $subscription = $api->detailSubscription($params, []);\n print_r($subscription);\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", "name": "PHP" }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n\tclient_id: credentials.client_id,\n\tclient_secret: credentials.client_secret,\n\tsandbox: true\n}\n\nvar params = {\n\tid: 0\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n\t.detailSubscription(params)\n\t.then(console.log)\n\t.catch(console.log)\n\t.done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1120\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.detail_subscription(params: params)", "language": "ruby", "name": "Ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1\n}\n\nresponse = gn.detail_subscription(params=params)\nprint(response)", "language": "python", "name": "Python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class DetailSubscription\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 = 1002\n };\n\n try\n {\n var response = endpoints.DetailSubscription(param);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "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/subscriptions/json/DetailSubscription.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/DetailSubscription.java\n\n*/", "language": "java", "name": "Java" }, { "code": "interface\nfunction DetailSubscription(Id: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction DetailSubscription(Id: String): String;\nvar\n Params: String;\nbegin\n\tEnableService( 'GerenciaNet.dll' ); \n \tConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n \tGerenciaNetAuthorize();\n\n Params := CreateRequestParams( [ 'id='+Id ] ).Text;\n Result := ExecuteGerenciaNetRequest( 'detailSubscription',Params,'', '' );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tres, err := gn.DetailSubscription(1) // no lugar do 1 coloque o subscription_id correto\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> <hr> # 4. Cancelar assinaturas ativas em um plano Permite cancelar assinaturas ativas em um plano. Para tal, deve-se informar o <code>subscription_id</code> da assinatura que deseja cancelar. Para cancelar assinaturas ativas em um plano de assinaturas, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/subscription/:id/cancel</code>, onde <code>:id</code> é o <code>subscription_id</code> da assinatura desejada. 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// $subscription_id refere-se ao \"subscription_id\" da assinatura\n$params = [\n 'id' => $subscription_id\n];\n\ntry {\n $api = new Gerencianet($options);\n $subscription = $api->cancelSubscription($params, []);\n print_r($subscription);\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", "name": "PHP" }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n\tclient_id: credentials.client_id,\n\tclient_secret: credentials.client_secret,\n\tsandbox: true\n}\n\nvar params = {\n\tid: 0\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n\t.cancelSubscription(params)\n\t.then(console.log)\n\t.catch(console.log)\n\t.done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1111\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.cancel_subscription(params: params)", "language": "ruby", "name": "Ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1\n}\n\nresponse = gn.cancel_subscription(params=params)\nprint(response)", "language": "python", "name": "Python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class CancelSubscription\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 = 0\n };\n\n try\n {\n var response = endpoints.CancelSubscription(param);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "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/subscriptions/json/CancelSubscription.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/CancelSubscription.java\n\n*/", "language": "java", "name": "Java" }, { "code": "interface\nfunction CancelSubscription(Id: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction CancelSubscription(Id: String): String;\nvar\n Params: String;\nbegin\n\tEnableService( 'GerenciaNet.dll' ); \n \tConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n \tGerenciaNetAuthorize();\n\n Params := CreateRequestParams( [ 'id='+Id ] ).Text;\n Result := ExecuteGerenciaNetRequest( 'cancelSubscription',Params,'', '' );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tres, err := gn.CancelSubscription(1) // no lugar do 1 coloque o subscription_id correto\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> <hr> # 5. Alterar URL de notificação (notification_url) e/ou custom_id de assinaturas É possível definir ou alterar as informações enviadas na propriedade <code>metadata</code> de uma assinatura a qualquer momento. Este endpoint é de **extrema importância** para atualizar sua URL de notificação atrelada às assinaturas ou modificar o <code>custom_id</code> previamente associado a assinatura. Nesse caso, todas as transações pertencentes à assinatura serão atualizadas. Para alterar a <code>notification_url</code> e/ou <code>custom_id</code> de uma assinatura, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/subscription/:id/metadata</code>, onde <code>:id</code> é o <code>subscription_id</code> da transação desejada. **Casos de uso deste endpoint:** - Integrador alterou o IP do servidor que estava associado na URL de notificação das assinaturas/transações; - Integrador atualizou a URL de notificação para as novas assinaturas/transações que forem criadas, mas precisa atualizar também nas assinaturas/transações anteriores 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 assinaturas/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 assinatura/transação; - Modificar ou acrescentar uma informação junto ao atributo <code>custom_id</code> associado às assinaturas/transações geradas previamente; - Dentre outros possíveis cenários. Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-assinaturas#subscription_id_metadata" 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$file = file_get_contents(__DIR__.'/../config.json');\n$options = json_decode($file, true);\n\n// $subscription_id refere-se ao \"subscription_id\" da assinatura\n$params = [\n 'id' => $subscription_id\n];\n\n$body = [\n\t'notification_url' => 'http://localhost.com',\n\t'custom_id' => 'Custom Subscription 0001'\n];\n\ntry {\n $api = new Gerencianet($options);\n $subscription = $api->updateSubscriptionMetadata($params, $body);\n print_r($subscription);\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", "name": "PHP" }, { "code": "'use strict';\n\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 params = {\n id: 1009\n}\n\nvar body = {\n notification_url: 'http://yourdomain.com',\n custom_id: 'my_new_id'\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .updateSubscriptionMetadata(params, 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: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1009\n}\n\nbody = {\n notification_url: \"http://yourdomain.com\",\n custom_id: \"my_new_id\"\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.update_subscription_metadata(params: params, body: body)", "language": "ruby", "name": "Ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1\n}\n\nbody = {\n 'notification_url': 'http://yourdomain.com',\n 'custom_id': 'my_new_id'\n}\n\nresponse = gn.update_subscription_metadata(params=params, body=body)\nprint(response)", "language": "python", "name": "Python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class UpdateSubscriptionMetadata\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 = 1002,\n };\n\n var body = new\n {\n notification_url = \"http://yourdomain.com\",\n custom_id = \"my_new_id\"\n };\n\n try\n {\n var response = endpoints.UpdateSubscriptionMetadata(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}", "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/subscriptions/json/UpdateSubscription.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/UpdateSubscription.java\n\n*/", "language": "java", "name": "Java" }, { "code": "interface\nfunction UpdateSubscription(Id: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction UpdateSubscription(Id: String): String;\nvar\n Body: String;\n Params : String;\nbegin\n Params := CreateRequestParams( [ 'id='+Id ] ).Text;\n Body :=\n '{\"custom_id\": \"Subscription10\",'+\n '\"notification_url\": \"http://domain.com/notification\" }';\n\n EnableService( 'GerenciaNet.dll' ); \n \tConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n \tGerenciaNetAuthorize();\n\n Result := ExecuteGerenciaNetRequest( 'updateSubscriptionMetadata', Params,'', Body );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tbody := map[string]interface{} {\n\t\t\"custom_id\": \"Product 0001\",\n\t\t\"notification_url\": \"http://domain.com/notification\",\n\t}\n\n\tres, err := gn.UpdateSubscriptionMetadata(1, body) // no lugar do 1 coloque o subscription_id correto\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/SubscriptionMetadataUpdate" "notification_url" "custom_id"</pre> Para verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-assinaturas#subscription_id_metadata) e explore em nosso Playground. <br> ## b) Atributos que podem ser utilizados para atualizar a URL de notificação e/ou custom_id: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>notification_url</code>", "1-0": "<code>custom_id</code>", "0-2": "Não", "1-2": "Não", "0-1": "Endereço de sua URL válida que receberá as notificações de mudanças de status das assinaturas/transações.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Mínimo de 1 caractere e máximo de 255 (String).</span></strong>", "1-1": "Permite associar uma assinatura/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<strong class=\"descricao-atributo\"><span class=\"atributo\">Mínimo de 1 caractere e máximo de 255 (String).</span></strong>", "0-3": "String", "1-3": "String" }, "cols": 4, "rows": 2 } [/block] <br> <hr> # 6. Listar parcelas, de acordo com a bandeira do cartão de crédito O endpoint <code>installments</code> é utilizado para listar as parcelas de cada bandeira de cartão de crédito, já com os valores de juros e número de parcelas calculados de acordo com a conta integradora. Ou seja, se sua conta possui uma configuração de juros de cartão (opção disponível para clientes que optaram por receber valores de cartão de forma parcelada), não é necessário fazer nenhum cálculo, esse endpoint já informa os valores calculados. Bandeiras disponíveis: <code>visa</code>, <code>mastercard</code>, <code>amex</code>, <code>diners</code>, <code>elo</code> e <code>hipercard</code>. 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$params = [\n\t'total' => '20000',\n\t'brand' => 'visa'\n];\n\ntry {\n $api = new Gerencianet($options);\n $installments = $api->getInstallments($params, []);\n print_r($installments);\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');\nvar credentials = require('./credentials');\n\nvar options = {\n\tclient_id: credentials.client_id,\n\tclient_secret: credentials.client_secret,\n\tsandbox: true\n}\n\nvar params = {\n\ttype: 'visa',\n\ttotal: 5000\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n\t.getInstallments(params)\n\t.then(console.log)\n\t.catch(console.log)\n\t.done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n brand: \"visa\",\n total: 5000\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.get_installments(params: params)", "language": "ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'brand': 'visa',\n 'total': 5000\n}\n\nresponse = gn.get_installments(params=params)\nprint(response)", "language": "python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class GetInstallments\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 brand = \"visa\",\n total = 2500\n };\n\n try\n {\n var response = endpoints.GetInstallments(param);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "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/extra/json/GetInstallments.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/extra/map/GetInstallments.java\n\n*/", "language": "java" }, { "code": "interface\nfunction GetInstallments: String;\n\nimplementation\nuses\n uGerenciaNetClientUtilities, uGerenciaClient;\n\nfunction GetInstallments: String;\nvar\n Params: String;\nbegin\n Params := CreateRequestParams( [ 'total=20000', 'brand=visa' ] ).Text;\n Result := ExecuteGerenciaNetRequest( 'getInstallments','',Params,'' );\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\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tres, err := gn.GetInstallments(20000, \"visa\") // total e bandeira\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> <hr> # 7. Acrescentar informações ao histórico da assinatura O histórico de uma assinatura é semelhante ao histórico de uma transação. Porém, ela reflete as ações que a assinatura em si sofreu. E, da mesma forma, é possível adicionar mensagens personalizadas ao histórico de uma assinatura, sem que estas, contudo, influenciem no fluxo do mesmo. Para adicionar mensagens personalizadas no histórico de uma assinatura, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/subscription/:id/history</code>, onde <code>:id</code> é o <code>subscription_id</code> da assinatura desejada. Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-assinaturas#subscription_history" 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// $subscription_id refere-se ao ID da assinatura desejada\n$params = [\n 'id' => $subscription_id\n];\n\n$body = [\n 'description' => 'Esta assinatura é sobre um serviço'\n];\ntry {\n $api = new Gerencianet($options);\n $response = $api->createSubscriptionHistory($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}", "language": "php" }, { "code": "'use strict';\n\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 params = {\n id: 1001\n}\n\nvar body = {\n description: 'Esta assinatura é sobre um serviço'\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .createSubscriptionHistory(params, 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: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1000\n}\n\nbody = {\n description: \"Esta assinatura é sobre um serviço\"\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.create_subscription_history(params: params, body: body)", "language": "ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\n\nparams = {\n 'id': 1000\n}\n\nbody = {\n 'description': \"Esta assinatura é sobre um serviço\"\n}\n\nresponse = gn.create_subscription_history(params=params, body=body)\nprint(response)", "language": "python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class CreateChargeHistory\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 id = 1000\n };\n\n var body = new\n {\n description = \"Esta assinatura é sobre um serviço\"\n };\n\n\n try\n {\n var response = endpoints.CreateSubscriptionHistory(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}", "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/subscriptions/json/CreateSubscriptionHistory.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/CreateSubscriptionHistory.java\n\n*/", "language": "java" }, { "code": "function CreateSubscriptionHistory(Id: String): String;\nvar\n Body : String;\n UpdateParams : String;\nbegin\n UpdateParams := CreateRequestParams( [ 'id='+Id ] ).Text;\n Body := '{\"description\": \"Esta assinatura é sobre um serviço\"}';\n Result := ExecuteGerenciaNetRequest( 'createSubscriptionHistory', UpdateParams, '', Body );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tbody := map[string]interface{} {\n\t\t\"description\": \"Esta assinatura é sobre um serviço\",\n\t}\n\n\tres, err := gn.CreateSubscriptionHistory(13100, body) // no lugar do 1 coloque o subscription_id certo\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/SubscriptionHistory" "description"</pre> Para verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-assinaturas#subscription_history) e explore em nosso Playground. <br> ## b) Atributos que podem ser usados para acrescentar mensagens ao histórico da assinatura: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>description</code>", "0-1": "Permite acrescentar informações ao histórico da assinatura sem influenciar no fluxo da mesmo.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Mínimo de 1 caractere e máximo de 255 caracteres.</span></strong>", "0-2": "Sim", "0-3": "String" }, "cols": 4, "rows": 1 } [/block] <br> <hr> # 8. Editar nome do plano de assinatura Permite alterar (editar) o nome de um plano de assinatura pré existente. Para tal, deve ser fornecido o identificador do <code>plan_id</code> desejado. Para tal, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/plan/:id</code>, onde <code>:id</code> é o <code>plan_id</code> do plano desejado. 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// $charge_id refere-se ao ID da transação gerada anteriormente\n$params = [\n 'id' => $charge_id\n];\n\n$body = [ 'name' => 'Meu novo plano' ];\n\ntry {\n $api = new Gerencianet($options);\n $subscription = $api->updatePlan($params, $body);\n print_r($subscription);\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');\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 params = {\n id: 1008\n}\n\nvar body = {\n name: 'My new plan'\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .updatePlan(params, 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: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1008\n}\n\nbody = {\n name: \"My new plan\"\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.update_plan(params: params, body: body)", "language": "ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1\n}\n\nbody = {\n 'name': 'My new plan'\n}\n\nresponse = gn.update_plan(params=params, body=body)\nprint(response)", "language": "python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class UpdateParcel\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 id = 1001\n };\n\n var body = new {\n name = \"My new plan\"\n };\n\n try\n {\n var response = endpoints.UpdatePlan(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}", "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/subscriptions/json/UpdatePlan.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/subscriptions/map/UpdatePlan.java\n\n*/", "language": "java" }, { "code": "interface\nfunction UpdatePlan(Id: String): String;\nvar\n Body: String;\n Params : String;\nbegin\n Params := CreateRequestParams( [ 'id='+Id ] ).Text;\n Body :=\n '{\"name\": \"My new plan\" }';\n Result := ExecuteGerenciaNetRequest( 'updatePlan', Params,'', Body );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tbody := map[string]interface{} {\n\t\t\"name\": \"My new plan\",\n\t}\n\n\tres, err := gn.UpdatePlan(1, body) // no lugar do 1 coloque o plan_id certo\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/UpdatePlan" "name"</pre> Para verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-assinaturas#put_plan_id) e explore em nosso Playground. <br> ## b) Atributo que pode ser usado para editar o nome de um plano de assinatura pré-existente: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>name</code>", "0-1": "Permite alterar (editar) o nome de um plano de assinatura pré existente.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Mínimo de 1 caractere e máximo de 255 caracteres.</span></strong>", "0-2": "Sim", "0-3": "String" }, "cols": 4, "rows": 1 } [/block]