Eticadata / Eticadata.Cust.V22Samples

Other
2 stars 1 forks source link

cookies de inicio de sessao #1

Closed edgarmirandasilva closed 1 year ago

edgarmirandasilva commented 1 year ago

//Login e autenticação Eticadata, tou na duvida quanto aos cookies

    $this->autoRender = false;

    $url = 'http://yyyyy/erpv22/api/Shell/LoginUser/';
    $data = array(
        'login' => '',
        'password' => '',
        'idioma' => '',
        'server' => '',
        'sistema' => 'sissistema'
    );

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);

    $result = json_decode($response, true);

    // Verifique se a autenticação foi bem-sucedida
    if ($result['sucesso'] == true) {
        // Obter os cookies da resposta
        $cookies = curl_getinfo($ch, CURLINFO_COOKIELIST);

        // Armazenar os cookies em uma variável
        $cookieString = '';
        foreach ($cookies as $cookie) {
            $cookieString .= $cookie . '; ';
        }

        echo "Cookies recebidos: " . $cookieString;
    } else {
        echo 'Autenticação falhou, trate o erro:<br>' . $result['erros'];
    }

    curl_close($ch);
edgarmirandasilva commented 1 year ago

pois quando tento fazer o OpenCompany

$this->autoRender = false; $urlEmpresa = 'http://yyyyyyyy/erpv22/api/Shell/OpenCompany/';

    $empresaData = array(
        'reabertura' => true,
        'mostrarJanelaIniSessao' => false,
        'codEmpresa' => 'codempresa',
        'codExercicio' => '2023',
        'codSeccao' => '20'
    );

    // Converter os dados em formato JSON
    $jsonEmpresaData = json_encode($empresaData);

    // Configurar a requisição cURL para abrir a empresa
    $chEmpresa = curl_init($urlEmpresa);
    curl_setopt($chEmpresa, CURLOPT_POST, true);
    curl_setopt($chEmpresa, CURLOPT_POSTFIELDS, $jsonEmpresaData);
    curl_setopt($chEmpresa, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    curl_setopt($chEmpresa, CURLOPT_RETURNTRANSFER, true);

    // Executar a requisição para abrir a empresa
    $responseEmpresa = curl_exec($chEmpresa);

    // Verificar se houve algum erro na requisição
    if (curl_errno($chEmpresa)) {
        echo 'Erro na requisição cURL para abrir a empresa: ' . curl_error($chEmpresa);
    } else {
        // Decodificar a resposta JSON
        $resultEmpresa = json_decode($responseEmpresa, true);

        // Verificar se a abertura da empresa foi bem-sucedida
        if ($resultEmpresa['sucesso'] == true) {
            echo $responseEmpresa;
        } else {
            echo 'Falha ao abrir a empresa, trate o erro:<br>' ;
            var_dump($resultEmpresa);
        }
    }

    // Fechar a conexão cURL para abrir a empresa
    curl_close($chEmpresa);

Falha ao abrir a empresa, trate o erro: array(4) { ["Message"]=> string(22) "An error has occurred." ["ExceptionMessage"]=> string(77) "A referência de objecto não foi definida como uma instância de um objecto." ["ExceptionType"]=> string(29) "System.NullReferenceException" ["StackTrace"]=> string(1696) " em Eticadata.Services.Admin.ShellController.OpenCompany(OpenEmpresaInfo prm) em lambda_method(Closure , Object , Object[] ) em System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_2.b2(Object instance, Object[] methodParameters) em System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) em System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken) --- Fim do rastreio da pilha da localização anterior em que a excepção foi emitida --- em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) em System.Web.Http.Controllers.ApiControllerActionInvoker.d1.MoveNext() --- Fim do rastreio da pilha da localização anterior em que a excepção foi emitida --- em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) em System.Web.Http.Controllers.ActionFilterResult.d5.MoveNext() --- Fim do rastreio da pilha da localização anterior em que a excepção foi emitida --- em System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) em System.Web.Http.Dispatcher.HttpControllerDispatcher.d15.MoveNext()" }

Eticadata-Consulting commented 1 year ago

Tem de manter todos os cookies que vem nos endpoint anteriores. Veja o script de postman, onde poderá ver os métodos de autenticação.

https://github.com/Eticadata/Eticadata.Cust.V22Samples/blob/main/Eticadata.Cust.WebServices/Documents/Postman%20Scripts/Eticadata%20API%20-%20Templates.postman_collection.json

edgarmirandasilva commented 1 year ago

Já consegui abrir empresa e tenho os cookies recebidos: .ETI_AV22= .ETI_IV22=

Muito obrigado pela ajuda