Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 229 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

olá pessoal, estou tentando utilizar o webhook do itau, já fiz toda a parte de recebimento e atualização, e também a url de autenticação, mas quando eles tentam mandar a notificação da o seguinte erro:

mensagemRespostaNotificacao: org.dmfs.httpessentials.exceptions.ProtocolException: Illegal response content-type text/html; charset=UTF-8, exected application/json

 

Sendo que já estou forçando o header para ser um application/json.

 

Alguém poderia me auxiliar?

  • Moderadores
Postado

No caso movi para um local adequado por não quer situação do componente ACBrBoleto

agora é tu passar informações de como fez, como está, foi escrito a API, pois do nosso lado não sabemos nada dela a não ser o que escreveu acima

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: juliomar_m@yahoo.com.br
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Opa beleza, eu criei dois endpoints, um para a autenticação que eles pedem e outro para a notificação em si, no caso na de autenticação eu pego o client_id e o secret e retorno o token para eles, na de notificação eu recebo o json deles e atualizo no meu banco de dados, o problema em si é que quando eles tentam conectar e mandar o json, eles dizem que recebem o erro que eu comentei acima, devo mostrar como está sendo feito em meu código?

  • Moderadores
Postado
  Em 26/09/2024 at 13:35, Lucas Barbosa Rodrigues disse:

Opa beleza, eu criei dois endpoints, um para a autenticação que eles pedem e outro para a notificação em si, no caso na de autenticação eu pego o client_id e o secret e retorno o token para eles, na de notificação eu recebo o json deles e atualizo no meu banco de dados, o problema em si é que quando eles tentam conectar e mandar o json, eles dizem que recebem o erro que eu comentei acima, devo mostrar como está sendo feito em meu código?

Expandir  

se possível, e se houver algo que precise omitir coloca lá xxx no lugar

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: juliomar_m@yahoo.com.br
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Segue o código da função a qual recebo o json para atualizar meu status do boleto e abaixo o codigo de login de autenticação

public function return(Request $request)
  {
    $itau = $request->all();
    $request->request->add(['site' => 'bbr']);
    $paymentController = new PaymentController();
      if ($itau) {
        $boleto = DB::connection('payment')
          ->table('itau_boleto')
          ->where('cod_boleto', $itau['idBoleto'])
          ->where('status', '!=', 'paid')
          ->first();

        if ($boleto) {
          if($itau['tipoLiquidacao'] == 95 || $itau['tipoLiquidacao'] == 06){
            $invoice = DB::connection($paymentController->payment['amember_connection'])->table('invoice')->where('invoice_id', $boleto->invoice_id)->first();
          }
        } else {
          $return = array(
            'status' => '',
            'msg' => 'Boleto já está pago!'
          );
          return response()->json($return)->header('Content-Type', 'application/json');
        }

        if (isset($invoice) and $invoice->comment) {
          if ($boleto && $itau['tipoLiquidacao'] == 95 || $itau['tipoLiquidacao'] == 06) {
            if ($itau['tipoLiquidacao'] == 95 || $itau['tipoLiquidacao'] == 06) {
              $itauStatus = 'paid';
            }
            $emails = explode('| ', $invoice->comment);
            $i = 0;
            DB::connection('payment')->table('itau_boleto')->where('cod_boleto', $itau['idBoleto'])->update(['status' =>  $itauStatus, "updated_at" => \Carbon\Carbon::now()]);
            AmemberController::registerPayment($boleto->invoice_id, 'Boleto: ' . $boleto->cod_boleto);
            foreach ($emails as $key => $value) {
              if ($i != 0) {
                if ($value != '') {
                  $value = trim($value);
                  $user = DB::connection($paymentController->payment['amember_connection'])->table('user')->where('email', $value)->first();
                  $invoice_user = DB::connection($paymentController->payment['amember_connection'])->table('invoice')->where('user_id', $user->user_id)->orderBy('invoice_id', 'asc')->first();
                  $return = AmemberController::registerPayment($invoice_user->invoice_id, 'Boleto: ' . $boleto->cod_boleto);
                }
              }
              $i++;
            }

            $user = DB::connection('payment')->table('itau_boleto')->where('cod_boleto', $itau['id'])->first();
            $user2 = DB::connection($paymentController->payment['amember_connection'])->table('invoice')->where('invoice_id', $user->invoice_id)->first();
            $user3 = DB::connection($paymentController->payment['amember_connection'])->table('user')->where('user_id', $user2->user_id)->first();
            $this->check_product($user3->email);

            return response()->json(['msg' => 'ok'])->header('Content-Type', 'application/json');
          }
        } else {
          if ($itau['tipoLiquidacao'] == 95 || $itau['tipoLiquidacao'] == 06) {
            $itauStatus = 'paid';
          }
          if ($boleto &&  $itau['tipoLiquidacao'] == 95|| $itau['tipoLiquidacao'] == 06) {
            DB::connection('payment')->table('itau_boleto')->where('cod_boleto', $itau['idBoleto'])->update(['status' =>  $itauStatus, "updated_at" => \Carbon\Carbon::now()]);
            AmemberController::registerPayment($boleto->invoice_id, 'Boleto: ' . $boleto->cod_boleto);
            return response()->json(['msg' => 'ok'])->header('Content-Type', 'application/json');
          } else {
            //error
            return response()->json(['msg' => 'error2'])->header('Content-Type', 'application/json');
          }
        }
      } else {
        $return = array(
          'status' => 'error',
          'msg' => 'Sem dados do boleto'
        );
        return response()->json($return)->header('Content-Type', 'application/json');
      }
  }
public function loginItau(Request $request)
  {
    $client_id = $request->client_id;
    $client_secret = $request->client_secret;
    if ($client_id) {
      $preHash1 = json_encode(array('client_secret' => $client_secret, 'client_id' => $client_id, 'site' => 'bbr'), true);
      $hash1 = (base64_encode(openssl_encrypt($preHash1, 'aes128', 'slakdh02183hn2fsa', OPENSSL_RAW_DATA, '1586244526987523')));

      $retorno = ["status"  => ['active' => 1, "msg" => "Token gerado com sucesso"], "data" => [
        'access_token'   => $hash1,
        'token_type'     => 'bearer',
      ]];

      return response()->json($retorno)->header('Content-Type', 'application/json');
    }
  }

  protected function respondWithTokenItau($token)
  {
    $retorno = ["status"  => ['active' => 1, "msg" => "Loguin efetuado com sucesso"], "data" => [
      'access_token'   => $token,
      'token_type'     => 'bearer',
      'expires_in'     => auth('api')->factory()->getTTL() * 120
    ]];

    return response()->json($retorno);
  }

 

  • Moderadores
Postado
  Em 26/09/2024 at 15:27, Lucas Barbosa Rodrigues disse:

eita kk, é php mesmo, usando Laravel como framework, ainda não uso a lib do acbr, estou vendo como funciona, se facilitar mais ainda vou usar com certeza kkk

 

Expandir  

é que nem adiantaria pois a lib é pra ti usar pra emitir e ela não faz API

mas é isso daqui a pouco alguém resolve de lhe ajudar com php

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: juliomar_m@yahoo.com.br
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Consultores
Postado
  Em 25/09/2024 at 20:48, Lucas Barbosa Rodrigues disse:

Sendo que já estou forçando o header para ser um application/json.

 

Alguém poderia me auxiliar?

Expandir  

Aviso: Eu não entendo muito de PHP, mas me parece que o problema na verdade é no protocolo de comunicação.

Acho que a questão é que mesmo que você force o header ser um application/json isso não significa que o conteúdo vai ser um application/json.

Por exemplo, é como se você falasse para um amigo: "Olha só, vou te mandar uma carta em Inglês se prepara". Daí você manda uma envelope com a carta. Mas dentro do envelope tem uma carta em Japonês. Daí seu amigo está dizendo: "cara tu me mandou uma carta em inglês, eu tava esperando em Japonês".

Você precisa fazer a aplicação realmente mandar os dados em formato application/json.

Como meu PHP não é lá grandes coisas, nem vou analisar seu código.

Mas acredito que se você avaliar o que foi enviado e recebido, por meio de algum monitor de comunicação, vai conseguir identificar exatamente o que foi enviado ou recebido fora do formato esperado.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Bom dia,

Realmente faz total sentido a sua resposta, adorei seu exemplo kkkk, no caso eu sou a pessoa que recebe a carta, pois minha aplicação espera um json da parte deles, o problema é que eles estão firmes que está tudo certo da parte deles, o maior problema está sendo a comunicação mesmo, eles demoram demais para responder, por isso estou vendo outros recursos ou alguém que já tenha conhecimento desse erro pra me ajudar.

Vou procurar algum meio de monitorar para poder pegar o erro quando recebo deles, obrigado pela dica.

  • Consultores
Postado
  Em 01/10/2024 at 13:08, Lucas Barbosa Rodrigues disse:

Vou procurar algum meio de monitorar para poder pegar o erro quando recebo deles, obrigado pela dica.

Expandir  

Wireshark or Fiddler  são  um dos mais conhecidos...

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Este tópico foi criado há 229 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...