Ir para conteúdo
  • Cadastre-se

dev botao

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?

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
48 minutos atrás, 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?

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: [email protected]
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
1 hora atrás, 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

 

é 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: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

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

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

 

Alguém poderia me auxiliar?

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
7 horas atrás, Lucas Barbosa Rodrigues disse:

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

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.

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.