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, 500json()
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();