kowts / sisp-cv
Biblioteca PHP pura para pagamentos SISP/Vinti4 de Cabo Verde.
Requires (Dev)
- illuminate/support: ^10.0 || ^11.0 || ^12.0
- phpstan/phpstan: ^1.12 || ^2.0
- phpunit/phpunit: ^10.5 || ^11.0
- squizlabs/php_codesniffer: ^3.10 || ^4.0
- symfony/config: ^6.4 || ^7.0
- symfony/dependency-injection: ^6.4 || ^7.0
- symfony/http-kernel: ^6.4 || ^7.0
Suggests
- illuminate/support: Necessário para usar o Service Provider Laravel.
- symfony/dependency-injection: Necessário para usar o bundle Symfony.
- yiisoft/yii2: Necessário para usar o componente Yii2.
README
SISP CV para PHP
Biblioteca PHP independente de frameworks para criar pedidos de pagamento SISP/Vinti4, gerar fingerprints, validar callbacks e manter o ciclo de vida local da transação em SQLite, MySQL/MariaDB ou PostgreSQL.
Important
Este projecto não é oficial da SISP, da Vinti4, de bancos adquirentes nem de entidades reguladoras. A produção exige contrato, credenciais e endpoints oficiais fornecidos pela entidade adquirente, bem como testes no ambiente por ela indicado.
O que resolve
- cria pedidos de pagamento com montantes convertidos para milésimos;
- gera o formulário HTML de redireccionamento ou expõe os campos para uma SPA;
- valida callbacks em tempo constante e actualiza o estado local;
- guarda transações, tentativas e intenções de pagamento através de PDO;
- funciona em PHP puro e disponibiliza bridges finas para Laravel, Symfony e Yii2;
- inclui CLI, documentação operacional, testes e releases com SBOM e checksums.
O pacote não recolhe dados de cartão, não substitui o contrato com o adquirente e não consulta remotamente o estado de uma transação sem um cliente oficial configurado pela aplicação.
Requisitos
- PHP 8.1 ou superior;
- extensões
jsonepdo; - um driver PDO quando existir persistência:
pdo_sqlite,pdo_mysqloupdo_pgsql; - credenciais SISP/Vinti4 válidas, fora do código e do repositório.
Instalação
composer require kowts/sisp-cv:^0.2
Primeiro pagamento
<?php use Kowts\Sisp\Config\SispConfig; use Kowts\Sisp\SispFactory; require __DIR__ . '/vendor/autoload.php'; $sisp = SispFactory::create(SispConfig::fromArray([ 'posId' => getenv('SISP_POS_ID'), 'posAutCode' => getenv('SISP_POS_AUT_CODE'), 'url' => getenv('SISP_URL'), 'urlMerchantResponse' => getenv('SISP_CALLBACK_URL'), ])); $request = $sisp->payment() ->amount('1500.00') ->merchantRef('ORDER-20260714-001') ->merchantSession('CHECKOUT-20260714-001') ->build(); echo $sisp->renderPaymentForm($request);
amount aceita uma string decimal com ponto. A biblioteca converte o valor para
milésimos antes de calcular o fingerprint; não formate o montante de forma
manual nem use vírgulas como separador decimal.
Fluxo de integração
- A aplicação cria referências únicas de encomenda e de sessão.
- O backend constrói e, em produção, persiste o pedido antes do redireccionamento.
- O cliente é enviado para o gateway SISP/Vinti4.
- O endpoint de callback valida o fingerprint e actualiza a transação local.
- A aplicação mostra o resultado apenas depois de confirmar o estado local.
- Transações
pendingsão acompanhadas por uma rotina de reconciliação.
Consulte Pagamentos, Callbacks e Reconciliação antes de ligar o pacote ao checkout.
Persistência PDO
Passe uma ligação PDO para ativar a persistência automática. O esquema suporta SQLite, MySQL/MariaDB e PostgreSQL.
$pdo = new PDO( 'mysql:host=127.0.0.1;dbname=sisp;charset=utf8mb4', getenv('SISP_DB_USER'), getenv('SISP_DB_PASSWORD'), [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] ); $sisp = SispFactory::create(SispConfig::fromArray([ 'posId' => getenv('SISP_POS_ID'), 'posAutCode' => getenv('SISP_POS_AUT_CODE'), 'url' => getenv('SISP_URL'), 'urlMerchantResponse' => getenv('SISP_CALLBACK_URL'), 'pdo' => $pdo, ]));
O guia de Persistência PDO descreve o esquema, migrações controladas pela aplicação e as diferenças entre motores.
Frameworks e CLI
- Laravel:
Kowts\Sisp\Sispresolvido pelo contentor. - Symfony: serviço
kowts_sisp.client. - Yii2: componente
Yii::$app->sisp. bin/sisp doctor: valida a versão de PHP, extensões e variáveis SISP.bin/sisp migrate: cria o esquema no DSN indicado porSISP_DB_DSN.
Segurança
Nunca envie posAutCode, tokens, PAN completo, CVV, PIN, recibos reais ou
dados pessoais para o browser, repositório, issues ou logs. Use HTTPS no
gateway e callback, mantenha segredos no gestor de configuração da aplicação e
trate callbacks inválidos como tentativas não confiáveis.
Leia Segurança, Guia de produção e a política em SECURITY.md.
Documentação
O índice da documentação organiza os guias por fase de integração. Inclui a API prática, a referência automática, exemplos executáveis, arquitetura e instruções de contribuição.
Desenvolvimento
composer install composer check
O CI valida PHP 8.1 a 8.4, Windows e Linux, dependências mínimas e recentes, Yii2 e persistência SQLite, MySQL e PostgreSQL.
