{"id":18613061,"url":"https://github.com/eduzz/custom-delivery","last_synced_at":"2026-01-24T03:38:04.562Z","repository":{"id":71122087,"uuid":"413892248","full_name":"eduzz/custom-delivery","owner":"eduzz","description":"Documentação do serviço de entrega customizada","archived":false,"fork":false,"pushed_at":"2024-10-16T19:37:25.000Z","size":135,"stargazers_count":2,"open_issues_count":2,"forks_count":2,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-05-13T14:35:00.993Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eduzz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-05T16:17:36.000Z","updated_at":"2024-10-16T19:37:28.000Z","dependencies_parsed_at":"2025-02-18T03:41:08.602Z","dependency_job_id":"dabbc4ca-5e80-4388-b007-f62ea05ff05b","html_url":"https://github.com/eduzz/custom-delivery","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eduzz/custom-delivery","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eduzz%2Fcustom-delivery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eduzz%2Fcustom-delivery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eduzz%2Fcustom-delivery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eduzz%2Fcustom-delivery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eduzz","download_url":"https://codeload.github.com/eduzz/custom-delivery/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eduzz%2Fcustom-delivery/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28710119,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T23:51:44.727Z","status":"online","status_checked_at":"2026-01-24T02:00:06.909Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T03:19:42.832Z","updated_at":"2026-01-24T03:38:04.535Z","avatar_url":"https://github.com/eduzz.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Entrega customizada Eduzz\n---\n\nA entrega customizada permite que você utilize qualquer serviço como plataforma de entrega de conteúdo na Eduzz, ou seja, quando um cliente comprar um produto, você receberá eventos em sua plataforma via requisições HTTP com os dados da venda, para que a liberação do conteúdo possa ser feita.\n\n**Consideramos como sucesso todas as requisições que retornam o _[status HTTP 200](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)_**.\n\nAs configurações para o cadastro de entrega customizada podem serem acessadas no **[Órbita](https://orbita.eduzz.com/producer/webhook)**, na aba \"Avançado\" nas configurações do seu produto, caso você já tenha alguma entrega customizada, basta clicar na opção desejada na listagem, ou, caso ainda não possua uma entrega customizada, clique em \"Adicionar Entrega\", então, o seguinte modal onde você pode escolher o tipo de entrega e informar qual a url que deverá receber os dados será exibido:\n\n![Modal de cadastro de entrega customizada no Órbita](https://github.com/eduzz/custom-delivery/raw/master/customizado_modal.png \"Modal de cadastro de entrega customizada no Órbita\")\n\n## Autenticação\n\nPara autenticar uma entrega customizada, recomendamos o uso do campo chave de origem, disponível também no serviço de **[Webhook](https://github.eduzz.com/eduzz/wrbhook)**.\n\nA chave para integração pode ser visualizada em nossa plataforma na **[tela de configuração de chaves de api no Órbita](https://orbita.eduzz.com/producer/config-api)**.\n\nSerá enviado no payload da entrega customizada no campo edz_cli_origin_secret.\n\nAinda enviamos hoje o campo edz_cli_apikey por motivos de compatibilidade, porém, ele não deve mais ser utilizado e **será descontinuado em breve**.\n\n### **origin_secret**\n\nPara validar através do origin_secret basta comparar o valor recebido com o que será informado na **[tela de configuração de chaves de api no Órbita](https://orbita.eduzz.com/producer/config-api)**.\n\nSegue exemplo abaixo:\n\n```js\nconst { type, fields } = {...PAYLOAD_RECEBIDO_DA_EDUZZ};\n\n// Sua chave de autenticação de requisições fornecida no Órbita (origin)\n// https://orbita.eduzz.com/producer/config-api\nconst ORIGIN_SECRET = 'chave-de-autenticacao-fornecida-no-orbita';\n\nconst allow = type === 'create' \u0026\u0026 fields.edz_cli_origin_secret === ORIGIN_SECRET; // Deve permitir o acesso a plataforma\n```\n\nDessa forma o usuário pode validar se as chaves são iguais, a origin_secret da conta do cliente é armazenada criptografada em nossos servidores então somente o cliente e as aplicações da Eduzz terão acesso a essa informação de forma programática.\n\n### **sid**, **nsid**\n\nPara autenticação da entrega podem serem utilizados também os campos de autenticação dos dados de envio, para gerar o **sid**, basta seguir os passos abaixo:\n\n***Instale a biblioteca crypto:**\n\n```sh\nyarn add crypto\n```\n\nE então siga o seguinte snippet de código:\n\n```js\nconst { type, sid, nsid, fields } = {...PAYLOAD_RECEBIDO_DA_EDUZZ};\n\nconst ksort = (obj) =\u003e {\n  let keys = Object.keys(obj).sort();\n  let sortedObj = {};\n\n  for (let i in keys) {\n    sortedObj[keys[i]] = obj[keys[i]];\n  }\n\n  return sortedObj;\n}\n\nconst hash = Object.keys(ksort(fields)).reduce((acc, key) =\u003e `${acc}${fields[key]}`}, '');\n\nconst generatedSid = crypto.createHash('md5')\n  .update(hash + fields.edz_cli_apikey)\n  .digest('hex');\n\nconst generatedNsid = crypto.createHash('sha1')\n    .update(`${fields.edz_fat_cod}${fields.edz_cnt_cod}${fields.edz_cli_cod}`)\n    .digest('hex');\n\nconst sidOk = generatedSid === sid; // sid recebido é valido\nconst nsidOk = generatedNsid === nsid; // nsid recebido é valido\n\nconst allow = type === 'create' \u0026\u0026 sidOk \u0026\u0026 nsidOk; // Deve permitir o acesso a plataforma\n```\n\nUtilizando os campos nsid e sid gerados você pode validar se a requisição é segura.\n\n### **vendas com order bump (múltiplos itens)**\nEm casos de vendas com mais de um item, será enviado um item com o parâmetro **edz_order_bump_item = false**, sendo esse item o principal produto da venda.\nOs demais itens da fatura, estarão marcados com o parâmetro de order bump (**edz_order_bump_item = true**).\nNesse caso, em ambas entregas, será enviado o campo **edz_has_order_bump=true**.\n\n## Parâmetros\n---\n\nCampo     | Descrição | Tipo\n------------- | ------------- | -----------------\nedz_fat_cod | Id da fatura que originou a entrega | int\nedz_fat_status | Status da fatura que originou a entrega | int\nedz_fat_dtcadastro | Data em que a fatura foi cadastrada na Eduzz | Date\nedz_order_bump_item | Informa se o item que está sendo entregue é um order bump | boolean\nedz_has_order_bump | Informa se a venda (fatura) possui itens de order bump | boolean\nedz_gtr_dist | Id do afiliado caso houver | int\nedz_cnt_cod | Id do produto que está sendo entregue | int\nedz_cnt_paicod | Id do produto pai do produto que está sendo entregue. É nulo caso o produto não tenha um pai | int\nedz_cnt_titulo | Nome do produto que está sendo entregue | string\nedz_cli_cod | Id do cliente | int\nedz_cli_cel | Número de celular do cliente | string\nedz_cli_cidade | Nome da cidade do cliente | string\nedz_cli_uf | Sigla do estado do cliente | string\nedz_cli_taxnumber | CPF/CNPJ do cliente | string\nedz_cli_rsocial | Nome completo do cliente | string\nedz_cli_email | Email do cliente | string\nedz_valorpago | Valor do Produto | float\nedz_trk_1      | Eduzz Tracker | String\nedz_gtr_param1 | UTM Source | string\nedz_gtr_param2 | UTM Campaign | string\nedz_gtr_param3 | UTM Medium | string\nedz_gtr_param4 | UTM Content | string\nedz_produtor_email | O E-mail do produtor (Seu usuário) | string\nedz_produtor_cod | O Id do produtor (Seu usuário) | int\nedz_con_cod | Codigo do contrato caso seja assinatura | int\nedz_con_status | Status do contrato | string\nedz_con_status_cod | ID do status do contrato  | int\n**edz_cli_apikey** | **Sua apikey de produtor, caso você já tenha gerado a nova versão da sua apikey serão enviados apenas os 4 últimos dígitos, caso contrário, iremos enviar a apikey inteira. Este campo será descontinuado em breve e deve ser utilizado o edz_cli_origin_secret** | **string**\n**edz_cli_origin_secret** | **Sua origin key de produtor, esse campo deve ser validado com o valor que é exibido no [Órbita](https://orbita.eduzz.com/producer/config-api)** | **string**\n**type** | **Operação de entrega ou remoção, quando você deve entregar, será enviado 'create', caso seja remoção de acesso (reembolso, atraso do contrato, etc) será enviado 'remove'** | **string**\n\n\n## Tabela de status de faturas\n\nCampo: **trans_status**\n\nID  | Status | Descrição\n--- | ------ | -----------\n1 | Aberta | Fatura aberta, cliente gerou boleto, mas ainda não foi compensado\n3 | Paga | Compra foi paga, o cliente já esta apto a receber o produto\n4 | Cancelada | Fatura Cancelada pela Eduzz\n6 | Aguardando Reembolso | Cliente solicitou reembolso, porem o mesmo ainda não foi efetuado\n7 | Reembolsado | Cliente já foi reembolsado pela eduzz\n9 | Duplicada | Cliente tentou comprar mais de uma vez o mesmo produto, a segunda fatura fica como duplicada e não é cobrada\n10 | Expirada | A fatura que fica mais de 15 dias aberta é alterada para expirada\n11 | Em Recuperacao | Fatura entrou para o processo de recuperação\n15 | Aguardando Pagamento | Faturas de recorrência após o vencimento ficam com o status aguardando pagamento\n18 | Agendada | Fatura agendada pela recorrência para cobrar futuramente proximo a data de vencimento.\n\n## Tabela de status de contratos\n\nCampos: **edz_con_status_cod,edz_con_status**\n\nID  | Status | Descrição\n--- | ------ | -----------\n1 | Em dia | Contrato em dia\n2 | Aguardando pagamento | Contrato com fatura em aguardando pagamento\n3 | Suspenso | Contrato suspenso\n4 | Cancelado | Contrato cancelado\n7 | Atrasado | Contrato atrasado\n9 | Finalizado | Contrato terminou\n10 | Trial | Contrato em período trial\n11 | Inadimplente | Contrato Inadimplente\n\n## Suporte\n\nPrecisa de uma informação que não está na lista acima? Entre em contato com nosso suporte (suporte@eduzz.com), setor comercial (comercial@eduzz.com) ou através dos nossos canais no **[Órbita](https://orbita.eduzz.com)**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feduzz%2Fcustom-delivery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feduzz%2Fcustom-delivery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feduzz%2Fcustom-delivery/lists"}