<?php
session_start();
header('Content-Type: application/json; charset=utf-8');

$secretKey = '03d3b6c7-e101-4deb-a255-e8edb5b3331a'; // x-api-key

$dados = json_decode(file_get_contents('php://input'), true);
if (!$dados) {
  echo json_encode(['success' => false, 'message' => 'Dados não recebidos']);
  exit;
}

$telefone  = preg_replace('/\D/', '', $dados['whatsapp'] ?? '');
$documento = preg_replace('/\D/', '', $dados['documento'] ?? '');
$cep       = preg_replace('/\D/', '', $dados['cep'] ?? '');

if (strlen($documento) === 11) $docType = 'CPF';
elseif (strlen($documento) === 14) $docType = 'CNPJ';
else {
  echo json_encode(['success' => false, 'message' => 'CPF ou CNPJ inválido']);
  exit;
}

$quantidade = max(1, intval($dados['quantidade'] ?? 1));
$valorUnit  = floatval($dados['valor_unitario'] ?? 0);
$amount     = intval(round($quantidade * $valorUnit * 100));

if ($amount <= 0) {
  echo json_encode(['success' => false, 'message' => 'Valor inválido']);
  exit;
}

$payload = [
  "amount" => $amount,
  "currency" => "BRL",
  "paymentMethod" => "PIX",
  "installments" => 1,

  "items" => [[
    "title" => "Kit Bota Texana Cavalgada Butina Masculina + Chapéu Em Couro",
    "unitPrice" => intval(round($valorUnit * 100)),
    "quantity" => $quantidade,
    "tangible" => true
  ]],

  "customer" => [
    "name" => $dados['nome'] ?? '',
    "email" => $dados['email'] ?? '',
    "phone" => $telefone,
    "document" => [
      "number" => $documento,
      "type" => $docType
    ],
    "address" => [
      "street" => $dados['rua'] ?? '',
      "streetNumber" => $dados['numero'] ?? '',
      "complement" => $dados['complemento'] ?? '',
      "zipCode" => $cep,
      "neighborhood" => $dados['bairro'] ?? '',
      "city" => $dados['cidade'] ?? '',
      "state" => $dados['estado'] ?? '',
      "country" => "BR"
    ]
  ],

  "shipping" => [
    "fee" => 0,
    "address" => [
      "street" => $dados['rua'] ?? '',
      "streetNumber" => $dados['numero'] ?? '',
      "complement" => $dados['complemento'] ?? '',
      "zipCode" => $cep,
      "neighborhood" => $dados['bairro'] ?? '',
      "city" => $dados['cidade'] ?? '',
      "state" => $dados['estado'] ?? '',
      "country" => "BR"
    ]
  ],

  // pela doc: expiresInDays
  "pix" => [
    "expiresInDays" => 1
  ],

  "postbackUrl" => "https://seusite.com/webhook/payevo.php"
];

$ch = curl_init("https://api-gateway.techbynet.com/api/user/transactions");

curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    "x-api-key: $secretKey",
    "User-Agent: AtivoB2B/1.0",
    "Content-Type: application/json",
    "Accept: application/json"
  ],
  CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$data = json_decode($response, true);

// A doc mostra que a resposta vem como { status, message, data: {...} } :contentReference[oaicite:5]{index=5}
$tx = $data['data'] ?? null;

// Aqui eu tento achar o “copia e cola” em lugares prováveis:
$pixCopiaCola = $tx['qrCode'] ?? ($tx['pix']['qrcode'] ?? null);
$expiresAt    = $tx['pix']['expirationDate'] ?? ($tx['boleto']['expirationDate'] ?? null);

if ($httpCode < 200 || $httpCode >= 300 || !$tx) {
  echo json_encode([
    'success' => false,
    'message' => 'Erro ao gerar PIX',
    'httpCode' => $httpCode,
    'raw' => $data,
    'rawText' => $response
  ]);
  exit;
}

if (!$pixCopiaCola) {
  echo json_encode([
    'success' => false,
    'message' => 'Transação criada, mas não retornou PIX/QRCode no payload.',
    'httpCode' => $httpCode,
    'raw' => $data
  ]);
  exit;
}

echo json_encode([
  'success' => true,
  'pix' => $pixCopiaCola,
  'qrCode' => 'https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=' . urlencode($pixCopiaCola),
  'transactionId' => $tx['id'] ?? null,
  'status' => $tx['status'] ?? null,
  'expiresAt' => $expiresAt
]);
