Recibo padrão e personalizado
Os recibos são gerados a partir de um Vinti4Response já processado.
Recibo padrão

echo $response->renderReceipt(data: [
'companyName' => 'Minha Loja.',
]);O template padrão mostra estado, data, identificação da transação, referência, valor, moeda e cartão mascarado quando existir.
Para estornos aprovados use renderRefundReceipt(), não o recibo de pagamento. A SISP pode devolver merchantRespPurchaseAmount=0; recupere o valor original no seu banco e forneça-o explicitamente:

echo $response->renderRefundReceipt(
amount: $originalAmount,
originalTransactionId: $originalTransactionId,
data: ['companyName' => 'Minha Loja.'],
);Esse método exige uma resposta validada com messageType=10 e um montante inteiro positivo. Veja Reembolsos.
Template PHP
echo $response->renderReceipt(
template: __DIR__ . '/templates/recibo.php',
data: [
'companyName' => 'Minha Empresa, Lda.',
'logo' => '/images/logo.png',
],
);Dentro do template ficam disponíveis:
$receipt: dados normalizados da transação;$data: dados personalizados enviados pelo programador.
<h1><?= htmlspecialchars($data['companyName'] ?? 'Recibo') ?></h1>
<p>Referência: <?= htmlspecialchars($receipt['merchantReference']) ?></p>
<p>Total: <?= htmlspecialchars((string) $receipt['amount']) ?> <?= htmlspecialchars($receipt['currency']) ?></p>Template HTML
<h1>{{ companyName }}</h1>
<p>Transação: {{ transactionId }}</p>
<p>Referência: {{ merchantReference }}</p>
<p>Total: {{ amount }} {{ currency }}</p>echo $response->renderReceipt(
__DIR__ . '/templates/recibo.html',
['companyName' => 'Minha Empresa, Lda.'],
);Os placeholders são escapados para HTML. Caminhos com ponto acessam valores aninhados, como {{ dcc.amount }}.
Dados disponíveis
| Chave | Conteúdo |
|---|---|
status | Estado normalizado |
success | Sucesso em booleano |
message / detail | Mensagem e detalhe |
transactionId | ID da SISP |
merchantReference | Referência do comerciante |
merchantSession | Sessão do comerciante |
amount / currency | Total e moeda |
timestamp | Data/hora da resposta |
authorizationCode | Message ID retornado |
entityCode / referenceNumber | Dados de serviço/recarga |
reloadCode | Código de recarga |
pan | Cartão mascarado |
dcc | Dados DCC normalizados |
O cartão é apresentado como •••• 3456, nunca com os primeiros dígitos do PAN. Em estornos, merchantRespPan=0 não representa um cartão e é omitido.
Texto simples
$text = $response->generateReceiptText('Minha Empresa, Lda.');Compatibilidade v2
$html = $response->generateReceiptHtml('Minha Empresa, Lda.');Templates precisam existir, ser legíveis e usar .php, .html ou .htm. Caso contrário, a biblioteca lança Vinti4Exception.
