<?php
// ============================================================
//  Postback da Vennox -> repassa a venda aprovada para a Utmify
//  Configure esta URL no painel da Vennox:
//  https://telepink.website/api/webhook.php
// ============================================================
require __DIR__ . '/config.php';

$raw = file_get_contents('php://input');

// --- DEBUG TEMPORÁRIO: grava tudo que chega aqui ---
// Depois de confirmar que está funcionando, pode apagar este bloco
// (e o arquivo api/storage/webhook_log.txt) com segurança.
@file_put_contents(
  __DIR__ . '/storage/webhook_log.txt',
  '[' . gmdate('c') . '] ' . $raw . PHP_EOL,
  FILE_APPEND | LOCK_EX
);
// ----------------------------------------------------

$in  = json_decode($raw, true);
if (!is_array($in)) { http_response_code(200); echo 'ignored'; exit; }

// A Vennox pode mandar o objeto direto ou dentro de "data"
$data = isset($in['data']) && is_array($in['data']) ? $in['data'] : $in;
if (isset($data[0]) && is_array($data[0])) $data = $data[0];

// A Vennox manda os campos em PascalCase (Id, Status) no postback,
// mesmo a API de criação usando lowercase — por isso checamos os dois.
$id = '';
foreach (['id', 'Id', 'transaction_id', 'transactionId', 'TransactionId'] as $k) {
  if (!empty($data[$k])) { $id = (string)$data[$k]; break; }
}
$statusRaw = strtoupper((string)(
  $data['status'] ?? $data['Status'] ?? $in['status'] ?? $in['Status'] ?? ''
));

$MAP = [
  'PAID' => 'paid',
  'APPROVED' => 'paid',
  'REFUNDED' => 'refunded',
  'CHARGEBACK' => 'refunded',
  'EXPIRED' => 'voided',
  'REFUSED' => 'voided',
  'FAILED' => 'voided',
];

// --- DEBUG TEMPORÁRIO: grava o que foi entendido ---
@file_put_contents(
  __DIR__ . '/storage/webhook_log.txt',
  '  -> id extraído: "' . $id . '" | status extraído: "' . $statusRaw . '" | mapeado: "' . ($MAP[$statusRaw] ?? 'NENHUM') . '"' . PHP_EOL,
  FILE_APPEND | LOCK_EX
);
// ----------------------------------------------------

if ($id !== '' && isset($MAP[$statusRaw])) {
  $ok = utmify_notify($id, $MAP[$statusRaw]);
  @file_put_contents(
    __DIR__ . '/storage/webhook_log.txt',
    '  -> utmify_notify retornou: ' . var_export($ok, true) . PHP_EOL,
    FILE_APPEND | LOCK_EX
  );
}

http_response_code(200);
echo 'ok';
