$body */ function chamarApi(string $method, string $path, ?array $body = null, ?string $idempotencyKey = null): array { $headers = ['Authorization: Bearer ' . API_KEY, 'Content-Type: application/json']; if ($idempotencyKey !== null) { $headers[] = 'Idempotency-Key: ' . $idempotencyKey; } $ch = curl_init(BASE_URL . $path); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => $method, CURLOPT_HTTPHEADER => $headers, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => $body !== null ? json_encode($body) : null, ]); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return ['status' => $status, 'body' => json_decode($response, true)]; } echo "== Emitindo NFC-e ==\n"; $emissao = chamarApi('POST', '/v1/nfce', [ 'company_id' => COMPANY_ID, // Opcional: forma de pagamento (padrão "dinheiro" se omitido). Valores aceitos: // dinheiro, cheque, cartao_credito, cartao_debito, credito_loja, vale_alimentacao, // vale_refeicao, vale_presente, vale_combustivel, boleto, deposito_bancario, pix, // transferencia, sem_pagamento, outros. 'payment_method' => 'pix', // Opcional: CPF/CNPJ do cliente na nota (só números). Omita pra consumidor não // identificado. 'destinatario' => [ 'documento' => '11122233396', 'nome' => 'Cliente Exemplo', ], // ------------------------------------------------------------------ // OPÇÕES AVANÇADAS (descomente o que precisar) — todo campo explicado // em https://api.sysvelox.com/docs/referencia.php // ------------------------------------------------------------------ // 'discount_cents' => 500, // desconto total da venda, em centavos // 'freight_cents' => 300, // frete, em centavos // 'change_cents' => 500, // troco (só com payment_method = dinheiro) // 'payments' => [ // pagamento dividido — substitui payment_method // ['method' => 'dinheiro', 'amount_cents' => 500], // ['method' => 'cartao_credito', 'amount_cents' => 500], // ], 'items' => [ [ 'description' => 'Produto de exemplo', 'ncm' => '12345678', 'cfop' => '5102', 'unit' => 'UN', 'quantity' => 1, 'unit_price_cents' => 1000, 'total_cents' => 1000, 'csosn' => '102', 'cst_pis' => '07', 'cst_cofins' => '07', ], ], ], 'exemplo-' . time()); echo "HTTP {$emissao['status']}\n"; print_r($emissao['body']); if ($emissao['status'] >= 400) { exit(1); } $documentoId = $emissao['body']['id']; echo "\n== Consultando status de {$documentoId} (aguardando alguns segundos) ==\n"; sleep(5); $consulta = chamarApi('GET', "/v1/notas/{$documentoId}"); echo "HTTP {$consulta['status']}\n"; print_r($consulta['body']);