API Reference – Vinti4Net PHP SDK
Consulte aqui as assinaturas, retornos e parâmetros públicos do SDK para integração com Vinti4/SISP.
Classe Vinti4Net
É a fachada principal do SDK. Ela prepara pagamentos e reembolsos, gera o formulário e processa o callback.
use Erilshk\Sisp\Vinti4Net;
$vinti4 = new Vinti4Net($posID, $posAuthCode, $endpoint);
Construtor
new Vinti4Net(
string $posID,
string $posAuthCode,
?string $endpoint = null,
)
| Parâmetro |
Descrição |
posID |
Identificador POS fornecido pela SISP |
posAuthCode |
Código secreto de autenticação |
endpoint |
Endpoint alternativo; opcional |
Métodos principais
| Método |
Retorno |
Descrição |
setRequestParams(array $params) |
self |
Configura parâmetros permitidos |
setMerchant(string $reference, ?string $session = null) |
self |
Define referência e sessão |
generateMerchantRef(bool $random = false) (estático) |
string |
Gera uma referência de exatamente 15 caracteres |
preparePurchase(float|string $amount, array|Billing $billing, string $currency = 'CVE') |
static |
Prepara compra; passe [] para não enviar billing |
prepareServicePayment(float|string $amount, int $entity, string $number) |
static |
Prepara pagamento de serviço |
prepareRecharge(float|string $amount, int $entity, string $number) |
static |
Prepara recarga |
prepareRefund(float|string $amount, string $transactionID, string $clearingPeriod) |
static |
Prepara reembolso |
createPaymentForm(string $responseUrl, string $lang = 'pt') |
string |
Gera o formulário auto-submit |
processResponse(array $postData) |
Vinti4Response |
Processa o retorno da SISP; 10 indica estorno bem-sucedido |
getRequest() |
array |
Retorna a requisição preparada |
Gerar uma referência
// R + ymdHis + dois caracteres aleatórios
$reference = Vinti4Net::generateMerchantRef();
// R + 14 caracteres hexadecimais aleatórios
$reference = Vinti4Net::generateMerchantRef(random: true);
O formato padrão preserva uma parte cronológica e adiciona um sufixo aleatório.
O modo totalmente aleatório não expõe a data da criação.
Exemplo de compra
// R + ymdHis + dois caracteres aleatórios
$reference = Vinti4Net::generateMerchantRef();
$billing = \Erilshk\Sisp\Billing::from([
'email' => 'cliente@exemplo.cv',
'country' => '132',
'city' => 'Praia',
'address' => 'Avenida Cidade da Praia, 45',
'postalCode' => '7600',
]);
echo $vinti4
->setMerchant($reference)
->preparePurchase(1500, $billing)
->createPaymentForm('https://meusite.cv/retorno');
Sem billing, use preparePurchase(1500, []). O segundo argumento é obrigatório. setRequestParams() aceita somente merchantRef, merchantSession, languageMessages e timeStamp; os restantes dados são passados ao método da operação.
Classe Billing
Representa e normaliza dados de faturação, endereço, contactos e conta do cliente para compras 3DS.
use Erilshk\Sisp\Billing;
$billing = Billing::make()
->email('cliente@exemplo.cv')
->country('132')
->city('Praia')
->address('Avenida Cidade da Praia, 45')
->postalCode('7600')
->mobilePhone('238', '9912345')
->accountId('12345');
O país de faturação usa 132 por padrão. Se enviar billing, forneça email, cidade, morada e código postal; se não quiser enviar billing, passe [] a preparePurchase().
Criação e conversão
| Método |
Descrição |
make() |
Cria um builder vazio |
from(array $data) |
Cria o Billing a partir de um array |
fill(array $data) |
Preenche o objeto existente |
toArray() |
Retorna somente os campos preenchidos |
Dados de faturação
| Método |
Campo SISP |
email() |
email |
country() |
billAddrCountry |
city() |
billAddrCity |
address() |
billAddrLine1 |
address2() |
billAddrLine2 |
address3() |
billAddrLine3 |
postalCode() |
billAddrPostCode |
state() |
billAddrState |
| Método |
Descrição |
shipCountry() |
País de entrega |
shipCity() |
Cidade de entrega |
shipAddress() |
Endereço de entrega |
shipPostalCode() |
Código postal de entrega |
shipState() |
Estado/região de entrega |
addressMatchesShipping() |
Define addrMatch como Y ou N |
mobilePhone() |
Telefone móvel com país e número |
workPhone() |
Telefone de trabalho |
accountId() |
ID da conta do cliente |
accountInfo() |
Informações 3DS da conta |
suspicious() |
Marca ou desmarca atividade suspeita |
Classe Vinti4Response
Normaliza o resultado da SISP e expõe estado, mensagem, dados, DCC, debug e detalhe.
$response = $vinti4->processResponse($_POST);
if ($response->isSuccess()) {
echo 'Aprovada: ' . $response->getAmount();
} elseif ($response->hasInvalidFingerprint()) {
echo 'Resposta inválida.';
} elseif ($response->isCancelled()) {
echo 'Cancelada pelo utilizador.';
} else {
echo $response->message;
}
Propriedades
| Propriedade |
Tipo |
Descrição |
status |
string |
SUCCESS, ERROR, CANCELLED ou INVALID_FINGERPRINT |
message |
string |
Mensagem amigável ou erro devolvido |
success |
bool |
Verdadeiro somente em sucesso validado |
data |
array |
Payload original da SISP |
dcc |
array |
Dados DCC normalizados |
debug |
array |
Dados de diagnóstico do fingerprint |
detail |
?string |
Detalhe do erro, quando disponível |
operation |
?string |
refund para 10; payment para 8, P e M; null para erro 6 ou cancelamento sem operação identificável |
Métodos de estado
| Método |
Descrição |
isSuccess() |
Confirma sucesso validado |
isCancelled() |
Confirma cancelamento |
hasInvalidFingerprint() |
Detecta fingerprint inválido |
hasFailed() |
Detecta apenas estado ERROR, sem incluir fingerprint inválido |
Métodos de dados
| Método |
Retorno |
Campo SISP |
getTransactionId() |
?string |
merchantRespTid |
getClearingPeriod() |
?string |
merchantRespCP |
getMerchantRef() |
?string |
merchantRespMerchantRef |
getAmount() |
?float |
merchantRespPurchaseAmount |
getCurrency() |
?string |
merchantRespCurrency |
getAdditionalErrorMessage() |
string |
merchantRespAdditionalErrorMessage |
getMaskedPan() |
?string |
Exibe apenas os últimos quatro dígitos |
toArray() |
array |
Resposta normalizada com PAN mascarado |
toJson() |
string |
JSON formatado com PAN mascarado |
Recibos
| Método |
Descrição |
renderReceipt() |
Recibo padrão ou template personalizado |
renderRefundReceipt(int|string $amount, ?string $originalTransactionId = null, array $data = []) |
Recibo de estorno aprovado; valor e ID original são fornecidos pela aplicação |
renderDccReceipt() |
Recibo DCC com dados retornados pela SISP |
generateReceiptHtml() |
Compatibilidade da API v2 |
generateReceiptText() |
Recibo em texto simples |
DCC
[
'enabled' => true,
'amount' => '10.58',
'currency' => 'USD',
'markup' => '0.31',
'rate' => '92.65882',
]
markup é um montante, não uma percentagem.
Exceção Vinti4Exception
use Erilshk\Sisp\Exceptions\Vinti4Exception;
try {
echo $vinti4->createPaymentForm($callbackUrl);
} catch (Vinti4Exception $exception) {
echo $exception->getMessage();
}
As falhas da biblioteca usam essa exceção pública.