Tô com um plugin do wordpress que eu criei e que preciso de um endpoint pra receber um POST externo. A parte da criação dele tá assim:
class RenovaBoletoOmie
{
public function __construct()
{
add_action('rest_api_init', [$this, 'registerWebhookEndpoint']);
}
public function registerWebhookEndpoint()
{
register_rest_route('omie/v1', '/webhook', array(
'methods' => 'POST',
'callback' => [$this, 'handleWebhook'],
'permission_callback' => '__return_true'
));
}
public function handleWebhook(WP_REST_Request $request)
{
$data = $request->get_json_params();
error_log('Webhook received: ' . print_r($data, true));
if (!isset($data['event']) || empty($data['event'])) {
return new WP_REST_Response(['error' => 'Dados do evento ausentes ou inválidos'], 400);
}
global $wpdb;
$codigo_cliente = $data['event'][0]['codigo_cliente_fornecedor'];
$result = $wpdb->update(
'DADOS_FORNECEDOR',
['plano' => 'QUIOSQUE'],
['cod_cliente_omie' => $codigo_cliente],
['%s'],
['%d']
);
if ($result !== false) {
return new WP_REST_Response(['success' => true, 'message' => 'Plano atualizado com sucesso'], 200);
} else {
return new WP_REST_Response(['error' => 'Erro ao atualizar o banco de dados'], 500);
}
}
}
O problema é que ele não reconhece. A url do meu site é http://devel.publicando.com.br. Tô fazendo as requisições no Postman tanto na url devel.publicando.com/wp-json/omie/v1/webhook quanto na devel.publicando.com/omie/v1/webhook, mas ambas (e em qualquer url dentro do meu site) eles retornam isso:
<!doctype html>
<html
data-adblockkey="MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANDrp2lz7AOmADaN8tA50LsWcjLFyQFcb/P2Txc58oYOeILb3vBw7J6f4pamkAQVSQuqYsKx3YzdUHCvbVZvFUsCAwEAAQ==_g15P7hFP4ukEcRgDrbZ5V/0U3fZL+MTwTKAwvwPTWNCzynys+to2RkIHunhyYrV9HCeiVxY0spVNUomw9bPgAQ=="
lang="en" style="background: #2B2B2B;">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon"
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVQI12P4//8/AAX+Av7czFnnAAAAAElFTkSuQmCC">
<link rel="preconnect" href="https://www.google.com" crossorigin>
</head>
<body>
<div id="target" style="opacity: 0"></div>
<script>
window.park = "eyJ1dWlkIjoiZWJhODE2ZjYtMmQzNy00NDMxLWFkZjUtZmVkZDM3YzdlYmZhIiwicGFnZV90aW1lIjoxNzMzMzM0MzI5LCJwYWdlX3VybCI6Imh0dHA6Ly9kZXZlbC5wdWJsaWNhbmRvLmNvbS93cC1qc29uL29taWUvdjEvd2ViaG9vayIsInBhZ2VfbWV0aG9kIjoiUE9TVCIsInBhZ2VfcmVxdWVzdCI6e30sInBhZ2VfaGVhZGVycyI6e30sImhvc3QiOiJkZXZlbC5wdWJsaWNhbmRvLmNvbSIsImlwIjoiMTg2LjE5Mi4xNjQuNjAifQo=";
</script>
<script src="/buBpITqah.js"></script>
</body>
</html>
O body da requisição tá assim:
{
"messageId": "cd4bb518-617e-42a3-8027-beeb0008fe16",
"topic": "Financas.ContaReceber.BaixaRealizada",
"event": [{
"codigo_cliente_fornecedor": 7458980325,
"codigo_baixa": 7459535108
} ]}