Site

MUCRM HTTP Client (Requisições Externas)

O MUCRM HTTP Client é uma interface expressiva e minimalista construída nativamente sobre o cURL do PHP. Permite realizar requisições para APIs externas (gateways de pagamento, CEPs, microserviços ou outras aplicações) sem depender de pacotes pesados de terceiros, consumindo o mínimo de memória do servidor.


Inicialização

use MUCRM\engine\http\http;

Realizando Requisições

O cliente suporta os principais verbos HTTP. Os dados enviados no segundo parâmetro são convertidos automaticamente para JSON.

GET

$response = http::get('https://api.example.com/users');

Com parâmetros na URL:

$response = http::get('https://api.example.com/users', [
    'page' => 2,
    'sort' => 'desc'
]);

POST

$response = http::post('https://api.example.com/users', [
    'name' => 'Admin',
    'role' => 'editor'
]);

PUT

$response = http::put('https://api.example.com/users/1', [
    'name' => 'Novo Nome'
]);

DELETE

$response = http::delete('https://api.example.com/users/1');

Modificadores de Requisição

with_headers

Adiciona cabeçalhos personalizados.

$response = http::with_headers([
    'X-Origin-Server' => 'MUCRM-TOKEN',
    'Accept' => 'application/json'
])->get('https://api.example.com/data');

with_token

Atalho para autenticação via cabeçalho Authorization. Por padrão utiliza o tipo Bearer.

$response = http::with_token('seu_token_aqui')
    ->post('https://api.example.com/private');

Outro tipo de autenticação:

$response = http::with_token('seu_token_aqui', 'Basic')
    ->post('https://api.example.com/private');

as_form

Envia os dados no formato application/x-www-form-urlencoded. Ideal para APIs legadas ou endpoints de login clássico.

$response = http::as_form()->post('https://api.example.com/login', [
    'username' => 'admin',
    'password' => '123456'
]);

Manipulando a Resposta

Todas as requisições retornam uma instância de MUCRM\engine\http\response.

successful()

Verifica se o status retornado está entre 200 e 299.

if ($response->successful()) {
    // sucesso
}

failed()

Verifica se retornou erro HTTP (400+).

if ($response->failed()) {
    // erro
}

status()

Retorna o código HTTP da resposta.

$code = $response->status(); // 200, 201, 404, 500

json()

Decodifica automaticamente o corpo JSON para array PHP.

$data = $response->json();

$neighborhood = $response->json('neighborhood');
$message = $response->json('message');

body()

Retorna o conteúdo puro da resposta. Útil para HTML, XML ou texto simples.

$html = $response->body();

Exemplo Completo (Mercado Pago / PIX)

Fluxo completo de geração de pagamento PIX:

use MUCRM\engine\http\http;

public function gerar_pix_vip()
{
    $response = http::with_token('APP_USR-seu-token-aqui')
        ->with_headers([
            'X-Idempotency-Key' => uniqid()
        ])
        ->post('https://api.mercadopago.com/v1/payments', [
            'transaction_amount' => 50.00,
            'description' => 'Assinatura Premium',
            'payment_method_id' => 'pix',
            'payer' => [
                'email' => 'cliente@email.com'
            ]
        ]);

    if ($response->failed()) {
        return "Erro ao processar: " . $response->json('message');
    }

    $qrCode = $response->json('point_of_interaction')['transaction_data']['qr_code'] ?? null;

    return view('pagamento.pix', compact('qrCode'));
}

Boas práticas

  • Sempre valide respostas externas.
  • Utilize failed() para tratamento de erros.
  • Prefira with_token() para autenticação segura.
  • Use as_form() apenas quando necessário.
  • Evite chamadas externas desnecessárias em loops.
  • Trabalhe com timeouts no core quando aplicável.

Resumo Rápido

http::get(...);
http::post(...);
http::put(...);
http::delete(...);

http::with_headers([...]);
http::with_token('token');
http::as_form();

$response->successful();
$response->failed();
$response->status();
$response->json();
$response->body();