Skip to content
Ivan Teles edited this page Aug 3, 2016 · 6 revisions

Um pequeno tutorial de como funciona a biblioteca.

==== private static TcpTransport _tcpTransport; private Service _service; private readonly string _originatingIpAddress = "Ip de origem";

Como conectar

            public void Conectar()
    {
        string pathClientp12 = Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "App_Data\\client.p12");
        string pathClient = Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "App_Data\\client.der");
        string pathRoot = Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "App_Data\\root.der");
        X509Certificate2 clientCertificate = new X509Certificate2(pathClientp12, "senha");  ///senha do certificado
        X509Certificate x509 = X509Certificate.CreateFromCertFile(pathClient);
        X509Certificate x5091 = X509Certificate.CreateFromCertFile(pathRoot);
        X509CertificateCollection certs = new X509CertificateCollection { clientCertificate, x509, x5091 };
        _tcpTransport = new TcpTransport("beta.registro.br", 700, null, certs, true);
        _service = new Service(_tcpTransport);
        _service.Connect();
    }

Hello

    public void Hello()
    {
        var resposnse = new Hello();
        _service.Execute(resposnse);
    }

Logout

    public void Logout()
    {
        var logingCmd = new Logout();
        _service.Execute(logingCmd);
    }

Autenticar

    public void Autenticar()
    {
        string pathClientp12 = Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "App_Data\\client.p12");
        string pathClient = Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "App_Data\\client.der");
        string pathRoot = Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "App_Data\\root.der");
        X509Certificate2 clientCertificate = new X509Certificate2(pathClientp12, "senha"); //senha do certificado
        X509Certificate x509 = X509Certificate.CreateFromCertFile(pathClient);
        X509Certificate x5091 = X509Certificate.CreateFromCertFile(pathRoot);
        X509CertificateCollection certs = new X509CertificateCollection { clientCertificate, x509, x5091 };
        _tcpTransport = new TcpTransport("beta.registro.br", 700, null, certs, true);

        _service = new Service(_tcpTransport);
        _service.Connect();
        //dados obtidos com a registro.br
        var logingCmd = new Login("login", "senha") { Options = new Options { MLang = "en", MVersion = "1.0" } };

        var services = new Services();

        services.ObjUrIs.Add("urn:ietf:params:xml:ns:epp-1.0");
        services.ObjUrIs.Add("urn:ietf:params:xml:ns:domain-1.0");
        services.ObjUrIs.Add("urn:ietf:params:xml:ns:host-1.0");
        services.ObjUrIs.Add("urn:ietf:params:xml:ns:contact-1.0");
        services.ObjUrIs.Add("urn:ietf:params:xml:ns:brorg-1.0");

        //CIRA extensions
        services.Extensions.Add("urn:ietf:params:xml:ns:cira-1.0");
        services.Extensions.Add("urn:ietf:params:xml:ns:poll-1.0");

        logingCmd.Services = services;

        var response = _service.Execute(logingCmd);

        if (!response.Code.Equals("1000"))
        {
            throw new ApplicationException("Authentication failed");
        }
    }   

Criar um Contato

    public string CriarContato()
    {
        var registrantContact = new Contact(
            "Código do usuario",
            "Nome completo",
            "Nome completo",
            "Cidade",
            "Logradouro",
            "Numero",
            "Bairro",
            "DF",
            "00000-000",
            "BR",
            "email@email.com",
            new Telephone { Value = $"+1.6130000000" },
            null)
        {
            Password = "senha",
            DiscloseFlag = true
        };

        var registrantContactCmd = new ContactCreate(registrantContact) { TransactionId = "iddatransacao" };
        var response = _service.Execute(registrantContactCmd);
        return response.Xml;
    }

Recuperar informações de um contato

    public string InfoContato(string id)
    {
        var check = new ContactInfo(id);
        var response = _service.Execute(check);
        return response.Xml;
    }

Alterar dados de um contato

    public string AlterarContato(string id)
    {
        var registrantContactCmd = new ContactUpdate(id)
        {
            ContactChange = new ContactChange
            {
                Email = "email@email.com",
                PostalInfo = new PostalInfo {
                    m_address = new PostalAddress
                    {
                        City = "",
                        PostalCode = "",
                        Street1 = "",
                        StateProvince = "",
                        Street2 = "",
                        Street3 = ""
                    },
                    m_type = "loc"
                },
                Voice = new Telephone() {Value = $"+1.6130000000" }
            }
        };
        var response = _service.Execute(registrantContactCmd);
        return response.Xml;
    }

Verificar se uma empresa está cadastrada

    public string ChecarEmpresa(string id, string documento)
    {
        var check = new ContactCheck(id);
        check.Extensions.Add(new BrOrg("info") { Organization = documento });
        var response = _service.Execute(check);
        return response.Xml;
    }

Cadastrar uma empresa

    public string CriarEmpresa(string documento, string idContato)
    {
        var registrantContact = new Contact(
            "Código da Empresa",
            "Razao Social",
            "Responsavel",
            "Cidade",
            "Logradouro",
            "Numero",
            "Bairro",
            "DF",
            "00000-000",
            "BR",
            "email@email.com",
            new Telephone { Value = $"+1.6130000000" },
            null)
        {
            Password = "senha",
            DiscloseFlag = true
        };

        var registrantContactCmd = new ContactCreate(registrantContact) { TransactionId = "IdTrascao" };
        registrantContactCmd.Extensions.Add(new BrOrg("create") { Organization = documento, Contact = idContato, ContactType = "admin", Responsible = "Nome da empresa responsaval" });
        var response = _service.Execute(registrantContactCmd);
        return response.Xml;
    }

Recuperar informações de uma empresa

    public string InfoEmpresa(string id, string documento)
    {
        var check = new ContactInfo(id);
        check.Extensions.Add(new BrOrg("info") { Organization = documento });
        var response = _service.Execute(check);
        return response.Xml;
    }

Checar se um domínio está disponível

    public string ChecarDominio(string dominio)
    {
        var domainCheckCmd = new DomainCheck(dominio.Trim().Replace("www.", ""));
        var responseDomain = _service.Execute(domainCheckCmd);
        return responseDomain.Xml;
    }

Registra um domínio

    public string RegistrarDominio(string dominio, string documento)
    {
        var domainCreateCmd = new DomainCreate(dominio.Trim().Replace("www.", ""), null);
        domainCreateCmd.NameServers.Add(new HostAttr { HostName = $"ns1.{dominio}", HostAddr = "Ip1", HostAddrType = "v4" });
        domainCreateCmd.NameServers.Add(new HostAttr { HostName = $"ns1.{dominio}", HostAddr = "Ip2", HostAddrType = "v4" });
        domainCreateCmd.TransactionId = "iddatransacao";
        domainCreateCmd.Extensions.Add(new BrDomain("create") { Organization = documento });
        var response = _service.Execute(domainCreateCmd);
        return response.Xml;
    }

Obter informações de um tícket ou dominio

    public string TicketInfo(string dominio, string ticket)
    {
        var domainCreateCmd = new DomainInfo(dominio.Trim().Replace("www.", ""));
        domainCreateCmd.Extensions.Add(new BrDomain ("info") {TicketNumber = ticket });
        var response = _service.Execute(domainCreateCmd);
        return response.Xml;
    }

Altera dados de um ticket ou dominio

    public string TicketUpdate(string dominio, string ticket)
    {
        var domainCreateCmd = new DomainUpdate(dominio.Trim().Replace("www.", ""));
        domainCreateCmd.ToRemove.NameServers.Add(new HostAttr { HostName = $"ns1.{dominio}", HostAddr = "Ip1", HostAddrType = "v4" });  //antigos dns a seren renmovidos
        domainCreateCmd.ToRemove.NameServers.Add(new HostAttr { HostName = $"ns1.{dominio}", HostAddr = "Ip2", HostAddrType = "v4" }); //antigos dns a seren renmovidos

        domainCreateCmd.ToAdd.NameServers.Add(new HostAttr { HostName = $"ns3.{dominio}", HostAddr = "Ip1", HostAddrType = "v4" }); //novos dns
        domainCreateCmd.ToAdd.NameServers.Add(new HostAttr { HostName = $"ns4.{dominio}", HostAddr = "Ip2", HostAddrType = "v4" }); //novos dns

        domainCreateCmd.Extensions.Add(new BrDomain("update") { TicketNumber = ticket });
        var response = _service.Execute(domainCreateCmd);
        return response.Xml;
    }

Recuperar e ler mensagens do poll

    public string Poll(string tipo, string id)
    {
        var domainCreateCmd = new Poll { Type = tipo, MessageId = id };
        var response = _service.Execute(domainCreateCmd);
        return response.Xml;
    }

Alterar dados de uma empresa

    public string AlterarEmpresa(string idContato, string documento)
    {
        var registrantContactCmd = new ContactUpdate(idContato)
        {
            ContactChange = new ContactChange
            {
                PostalInfo = new PostalInfo
                {
                    m_address = new PostalAddress
                    {
                        City = "",
                        PostalCode = "",
                        Street1 = "",
                        StateProvince = "",
                        Street2 = "",
                        Street3 = "",
                        CountryCode = "BR"
                    },
                    m_type = "loc"
                },
                Voice = new Telephone() { Value = $"+1.61300000000" }
            }
        };
        registrantContactCmd.Extensions.Add(new BrOrg("update") { Organization = documento });
        var response = _service.Execute(registrantContactCmd);
        return response.Xml;
    }

Obter informações de um domínio

    public string InfoDominio(string dominio)
    {
        var domainCreateCmd = new DomainInfo(dominio.Trim().Replace("www.", ""));
        var response = _service.Execute(domainCreateCmd);
        return response.Xml;
    }

Renovar um dominio

    public string DominioRenovar(string dominio, string data)
    {
        var domainCreateCmd = new DomainRenew(dominio.Trim().Replace("www.", ""), data, new DomainPeriod(1, "y")); //ya ano
        var response = _service.Execute(domainCreateCmd);
        return response.Xml;
    }

Deletar um dominio

    public string DominioDelete(string dominio)
    {
        var domainCreateCmd = new DomainDelete(dominio.Trim().Replace("www.", ""));
        var response = _service.Execute(domainCreateCmd);
        return response.Xml;
    }

Atualizar contatos de um domínio

    public string DominioUpdateContato(string dominio, string idContato, string idContatoAntigo)
    {
        var domainCreateCmd = new DomainUpdate(dominio.Trim().Replace("www.", ""));
        domainCreateCmd.ToRemove.DomainContacts.Add(new DomainContact(idContatoAntigo, "billing"));
        domainCreateCmd.ToAdd.DomainContacts.Add(new DomainContact(idContato, "billing"));
        var response = _service.Execute(domainCreateCmd);
        return response.Xml;
    }

Ativar renovação automática de domínio

    public string DominioRenovacaoAutomatica(string dominio, string renovacao)
    {
        var domainCreateCmd = new DomainUpdate(dominio.Trim().Replace("www.", ""));
        domainCreateCmd.Extensions.Add(new BrDomain("update") { AutoRenew = renovacao });
        var response = _service.Execute(domainCreateCmd);
        return response.Xml;
    }

====

Dica importante: para converter os arquivos PEM segue um ótimo link: https://www.sslshopper.com/ssl-converter.html